|
|
@@ -14,7 +14,7 @@
|
|
|
|
|
|
| 接口 | 用户权限 | 应用权限 | 说明 |
|
|
|
|------|---------|---------|------|
|
|
|
-| `POST /messages/` | ✅ 仅 MESSAGE | ✅ MESSAGE + NOTIFICATION + BROADCAST | 用户只能发私信,应用可发通知和广播 |
|
|
|
+| `POST /messages/` | ✅ 仅 MESSAGE | ✅ MESSAGE + NOTIFICATION + BROADCAST | 用户只能发私信;应用可发通知与**应用内**广播(映射用户) |
|
|
|
| `GET /messages/conversations` | ✅ | ❌ | 仅用户可查询 |
|
|
|
| `GET /messages/history/{id}` | ✅ | ❌ | 仅用户可查询 |
|
|
|
| `GET /messages/unread-count` | ✅ | ❌ | 仅用户可查询 |
|
|
|
@@ -148,13 +148,13 @@ Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
|
|
|
|
|
|
### 3.3 广播消息接口 (Broadcast)
|
|
|
|
|
|
-广播消息接口允许应用向所有活跃用户发送系统通知。适用于系统公告、重要通知等需要全员推送的场景。
|
|
|
+广播消息接口允许应用向「当前签名身份对应应用」下已有用户映射的活跃用户发送系统通知。适用于面向本应用用户的公告、运维通知等场景。
|
|
|
|
|
|
**重要说明:**
|
|
|
- **仅支持系统通知**:广播模式仅支持 `type: "NOTIFICATION"`,不支持私信类型
|
|
|
- **仅应用可调用**:广播功能仅限应用通过签名认证调用,普通用户无权使用
|
|
|
-- **发送给所有活跃用户**:系统会自动查找所有状态为 `ACTIVE` 且未删除的用户,为每个用户创建一条消息记录
|
|
|
-- **实时推送**:所有在线用户会通过 WebSocket 实时收到推送
|
|
|
+- **发送范围(该应用内)**:系统在 `X-App-Id` 对应应用下,查找 **存在有效用户映射**(`is_active=true`)、且平台用户状态为 `ACTIVE`、`is_deleted=0` 的用户,为其中每个用户创建一条消息记录(全平台未绑定该应用的用户不会收到)
|
|
|
+- **实时推送**:上述用户中当前在线者会通过 WebSocket 实时收到推送
|
|
|
|
|
|
**接口地址**: `POST {{API_BASE_URL}}/messages/`
|
|
|
|
|
|
@@ -174,7 +174,7 @@ Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
|
|
|
| `action_url` | string | 否 | 自定义跳转链接(不使用 SSO 时使用) |
|
|
|
| `action_text` | string | 否 | 操作按钮文案 |
|
|
|
|
|
|
-**注意:** 广播模式下,**不需要**提供 `receiver_id` 或 `app_user_id`,系统会自动向所有活跃用户发送。
|
|
|
+**注意:** 广播模式下,**不需要**提供 `receiver_id` 或 `app_user_id`,系统会自动向「本应用下已有有效映射」的活跃用户发送。
|
|
|
|
|
|
**完整 HTTP 请求示例 (应用签名认证):**
|
|
|
|
|
|
@@ -221,7 +221,7 @@ X-Sign: a1b2c3d4e5f6... (HMAC-SHA256签名)
|
|
|
|
|
|
**响应示例:**
|
|
|
|
|
|
-接口返回的是第一条创建的消息记录(用于签名验证),实际所有用户都会收到消息:
|
|
|
+接口返回的是第一条创建的消息记录(用于签名验证);符合上述范围的用户各有一条独立消息记录:
|
|
|
|
|
|
```json
|
|
|
{
|
|
|
@@ -291,10 +291,10 @@ print(f"Response: {response.json()}")
|
|
|
|
|
|
1. **权限限制**:只有通过应用签名认证的请求才能使用广播功能,普通用户 Token 认证无法使用
|
|
|
2. **消息类型限制**:广播仅支持 `NOTIFICATION` 类型,不支持 `MESSAGE` 类型
|
|
|
-3. **用户范围**:广播会发送给所有状态为 `ACTIVE` 且 `is_deleted=0` 的用户
|
|
|
-4. **性能考虑**:如果用户数量很大,广播操作可能需要一些时间,建议在后台异步处理
|
|
|
-5. **实时推送**:所有在线用户会通过 WebSocket 实时收到推送,离线用户可以在下次登录时查看
|
|
|
-6. **消息记录**:每个用户都会收到一条独立的消息记录,可以单独标记已读或删除
|
|
|
+3. **用户范围**:广播仅面向「当前应用下存在有效映射」且平台账号为 `ACTIVE`、`is_deleted=0` 的用户;若该条件下无用户则返回 `400`
|
|
|
+4. **性能考虑**:如果映射用户数量很大,广播操作可能需要一些时间,建议在后台异步处理
|
|
|
+5. **实时推送**:在线的接收者会通过 WebSocket 实时收到推送,离线用户可以在下次登录时查看
|
|
|
+6. **消息记录**:每个接收用户都会收到一条独立的消息记录,可以单独标记已读或删除
|
|
|
|
|
|
### 3.4 如何获取接收者ID (receiver_id) 和应用ID (app_id)
|
|
|
|