同步融云消息操作状态
当应用中发生消息撤回或删除时,融云将操作状态实时同步到您的应用服务器。
开通服务
- 登录融云控制台。
- 进入 IM 服务 > 功能配置 > 全局消息 > 消息回调服务。
- 开启 消息操作回调,并配置回调地址。
注意
如果您的网络有 IP 访问限制,请务必将融云服务器 IP 加入白名单,否则无法正常接收回调。详情请参见服务端回调 IP 白名单。
回调方法
请求方法:POST
数据格式:application/json
融云 IM 服务端会在 POST 请求 URL 中添加签名参数,您可通过签名验证调用者身份和数据有效性,详情请参阅服务端回调签名。
正文参数
HTTP 请求正文数据格式为 application/json,支持以下参数:
| 参数 | 类型 | 必传 | 说明 |
|---|---|---|---|
eventType | Number | 是 | 事件类型: • 1:消息撤回• 2:消息删除 |
fromUserId | String | 是 | 操作人用户 ID |
optTime | Long | 是 | 操作时间戳 |
source | String | 是 | 操作来源(如 Android、iOS、HarmonyOS、WebSocket、PC、MiniProgram、Server 等) |
conversationInfo | Object | 是 | 会话信息 |
conversationInfo.conversationType | Number | 是 | 会话类型 |
conversationInfo.targetId | String | 是 | 会话 ID |
conversationInfo.busChannel | String | 否 | 频道 ID |
originalMsgInfo | Object | 是 | 原始消息信息 |
originalMsgInfo.messageId | String | 是 | 原始消息 ID |
originalMsgInfo.messageTime | Long | 是 | 原始消息时间 |
recallMsgInfo | Object | 否 | 消息撤回时包含该对象(eventType 为 1) |
recallMsgInfo.isDelete | Number | 否 | 消息撤回,移动端接收方是否需要在本地删除。 • 0:不删除(默认)• 1:删除 |
recallMsgInfo.isAdmin | Number | 否 | 消息撤回,是否为管理员操作。 • 0:不是(默认)• 1:是 |
recallMsgInfo.extra | String | 否 | 消息撤回,扩展信息,可以放置任意的数据内容。 |
deleteMsgInfo | Object | 否 | 消息删除时包含该对象(eventType 为 2) |
deleteMsgInfo.deleteType | Number | 是 | 删除消息类型。 • 1:指定消息删除• 2:按照时间戳删除 |
deleteMsgInfo.msgTimestamp | Long | 否 | deleteType 为 2 时传入的时间戳 |
回调代码示例
以下示例假设您在开通服务页面配置的回调接收地址为 http://example.com/msg/opt/sync.php。
示例 1:消息撤回
HTTP
POST /msg/opt/sync.php HTTP/1.1
Host: example.com
Content-Type: application/json
{
"eventType": 1,
"fromUserId": "optUserId1",
"optTime": 1234343432432423,
"source": "Android",
"conversationInfo": {
"conversationType": 3,
"targetId": "groupId1"
},
"originalMsgInfo": {
"messageId": "MsgId1",
"messageTime": 12343445454434
},
"recallMsgInfo": {
"isDelete": 1,
"extra": "ext1",
"isAdmin": 1
}
}
示例 2:消息删除
HTTP
POST /msg/opt/sync.php HTTP/1.1
Host: example.com
Content-Type: application/json
{
"eventType": 2,
"fromUserId": "optUserId2",
"optTime": 1234343432432423,
"source": "Server",
"conversationInfo": {
"conversationType": 3,
"targetId": "groupId1"
},
"originalMsgInfo": {
"messageId": "MsgId1",
"messageTime": 12343445454434
},
"deleteMsgInfo": {
"deleteType": 1
}
}
响应回调请求
提示
- 只要收到 HTTP
200 OK成功响应,融云服务端即认为状态已同步。 - 如果应答超时 5 秒,融云服务端将重试 2 次。如果仍然失败,则不再同步此条状态。
- 如短时间内发生大面积超时,融云会暂时停止向您的服务器发送回调请求,并于 1 分钟后恢复 。