功能说明
App 后台可以通过该回调实时对单聊消息进行操作,包括:
对单聊消息进行实时记录(例如记录日志,或者同步到其他系统)。
对单聊消息进行数据统计(例如人数,消息数等)。
注意事项
要启用回调,必须配置回调 URL,并打开本回调对应的开关,配置方法详见 第三方回调配置。
回调的方向是即时通信 IM 后台向 App 后台发起 HTTPS POST 请求。
App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。
若同时开启发单聊消息之前和之后两种回调,且发单聊消息之前回调返回禁止发言,则发单聊消息之后回调将不会被触发。
若同时开启发单聊消息之前和之后两种回调,且发单聊消息之前回调变动了消息体,则发单聊消息之后回调将使用变动过的消息进行回调。
其他安全相关事宜请参考 第三方回调简介:安全考虑 文档。
可能触发该回调的场景
App 用户通过客户端发送单聊消息。
App 管理员通过 REST API(sendmsg 接口)发送单聊消息。
回调发生时机
即时通信 IM 后台收到用户发送的单聊消息并将该消息下发给目标用户之后。
注意:
若消息下发失败(例如被脏字过滤),仍会触发该回调。
接口说明
请求 URL 示例
以下示例中 App 配置的回调 URL 为
https://www.example.com
。
示例:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
请求参数说明
参数 | 说明 |
https | 请求协议为 HTTPS,请求方式为 POST |
www.example.com | 回调 URL |
SdkAppid | 创建应用时在即时通信 IM 控制台分配的 SDKAppID |
CallbackCommand | 固定为 C2C.CallbackAfterSendMsg |
contenttype | 固定值为 JSON |
ClientIP | 客户端 IP,格式如:127.0.0.1 |
OptPlatform |
请求包示例
{"CallbackCommand": "C2C.CallbackAfterSendMsg", // 回调命令"From_Account": "jared", // 发送者"To_Account": "Jonh", // 接收者"MsgSeq": 48374, // 消息序列号"MsgRandom": 2837546, // 消息随机数"MsgTime": 1557481126, // 消息的发送时间戳,单位为秒"MsgKey": "48374_2837546_1557481126", // 消息的唯一标识,可用于 REST API 撤回单聊消息"MsgId": "144115233406643804-1727580296-4026038328", // 消息在客户端上的唯一标识"OnlineOnlyFlag":1,//是否仅发送给在线用户标识。1代表仅发送给在线用户,否则为0;"SendMsgResult": 0, // 该条消息的下发结果"ErrorInfo": "send msg succeed", // 该条消息下发失败的错误信息,若消息发送成功,则为"send msg succeed""MsgBody": [ // 消息体{"MsgType": "TIMTextElem", // 文本"MsgContent": {"Text": "red packet"}}],"CloudCustomData": "your cloud custom data","EventTime": 1670574414123 //毫秒级别,事件触发时间戳}
请求包字段说明
字段 | 类型 | 说明 |
CallbackCommand | String | 回调命令 |
From_Account | String | 消息发送者 UserID |
To_Account | String | 消息接收者 UserID |
MsgSeq | Integer | 消息序列号,用于标记该条消息(32位无符号整数) |
MsgRandom | Integer | 消息随机数,用于标记该条消息(32位无符号整数) |
MsgTime | Integer | 消息的发送时间戳,单位为秒 单聊消息优先使用 MsgTime 进行排序,同一秒发送的消息则按 MsgSeq 排序,MsgSeq 值越大消息越靠后 |
MsgKey | String | 该条消息的唯一标识,可根据该标识进行 REST API 撤回单聊消息 |
MsgId | String | 该条消息在客户端唯一标识。 |
OnlineOnlyFlag | Integer | 是否仅发送给在线用户标识。1代表仅发送给在线用户,否则为0 |
SendMsgResult | Integer | 该条消息的发送结果,0表示发送成功,非0表示发送失败,具体可参见 错误码 |
ErrorInfo | String | 该条消息下发失败的错误信息,若消息发送成功,则为"send msg succeed" |
MsgBody | Array | 消息体,具体参见 消息格式描述 |
CloudCustomData | String | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到) |
EventTime | Integer | 事件触发的毫秒级别时间戳 |
应答包示例
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0 // 0为回调成功,1为回调出错}
应答包字段说明
字段 | 类型 | 属性 | 说明 |
ActionStatus | String | 必填 | 请求处理的结果: OK:表示处理成功 FAIL:表示失败 |
ErrorCode | Integer | 必填 | 错误码: 0为回调成功 1为回调出错 |
ErrorInfo | String | 必填 | 错误信息 |
参考
REST API:单发单聊消息
REST API:批量发单聊消息