跳到主要内容

同步融云消息操作状态

当应用中发生消息撤回或删除时,融云将操作状态实时同步到您的应用服务器。

开通服务

  1. 登录融云控制台
  2. 进入 IM 服务 > 功能配置 > 全局消息 > 消息回调服务
  3. 开启 消息操作回调,并配置回调地址。
注意

如果您的网络有 IP 访问限制,请务必将融云服务器 IP 加入白名单,否则无法正常接收回调。详情请参见服务端回调 IP 白名单

回调方法

请求方法:POST

数据格式application/json

融云 IM 服务端会在 POST 请求 URL 中添加签名参数,您可通过签名验证调用者身份和数据有效性,详情请参阅服务端回调签名

正文参数

HTTP 请求正文数据格式为 application/json,支持以下参数:

参数类型必传说明
eventTypeNumber事件类型:
1:消息撤回
2:消息删除
fromUserIdString操作人用户 ID
optTimeLong操作时间戳
sourceString操作来源(如 Android、iOS、HarmonyOS、WebSocket、PC、MiniProgram、Server 等)
conversationInfoObject会话信息
conversationInfo.conversationTypeNumber会话类型
conversationInfo.targetIdString会话 ID
conversationInfo.busChannelString频道 ID
originalMsgInfoObject原始消息信息
originalMsgInfo.messageIdString原始消息 ID
originalMsgInfo.messageTimeLong原始消息时间
recallMsgInfoObject消息撤回时包含该对象(eventType1
recallMsgInfo.isDeleteNumber消息撤回,移动端接收方是否需要在本地删除。
0:不删除(默认)
1:删除
recallMsgInfo.isAdminNumber消息撤回,是否为管理员操作。
0:不是(默认)
1:是
recallMsgInfo.extraString消息撤回,扩展信息,可以放置任意的数据内容。
deleteMsgInfoObject消息删除时包含该对象(eventType2
deleteMsgInfo.deleteTypeNumber删除消息类型。
1:指定消息删除
2:按照时间戳删除
deleteMsgInfo.msgTimestampLongdeleteType2 时传入的时间戳

回调代码示例

以下示例假设您在开通服务页面配置的回调接收地址为 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 分钟后恢复。