App 后台可以通过该回调实时对用户的单聊消息进行操作,包括:
注意:消息前回调默认2s超时且不建议调整,使用前回调处理内容审核,可能导致整个前回调超时。
即时通信 IM 后台收到用户发送的单聊消息之后、将该消息下发给目标用户之前。
以下示例中 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.CallbackBeforeSendMsg |
contenttype | 请求包体固定为 JSON |
ClientIP | 客户端 IP,格式如:127.0.0.1 |
OptPlatform | 客户端平台,取值参见 第三方回调简介:回调协议 中 OptPlatform 的参数含义 |
{
"CallbackCommand": "C2C.CallbackBeforeSendMsg", // 回调命令
"From_Account": "jared", // 发送者
"To_Account": "Jonh", // 接收者
"MsgSeq": 48374, // 消息序列号
"MsgRandom": 2837546, // 消息随机数
"MsgTime": 1557481126, // 消息的发送时间戳,单位为秒
"MsgKey": "48374_2837546_1557481126", //消息的唯一标识,可用于 REST API 撤回单聊消息
"OnlineOnlyFlag":1, //在线消息,为1,否则为0;
"MsgBody": [ // 消息体,参见 TIMMessage 消息对象
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
}
],
"CloudCustomData": "your cloud custom data"
}
字段 | 类型 | 说明 |
---|---|---|
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 撤回单聊消息 |
OnlineOnlyFlag | Integer | 在线消息,为1,否则为0 |
MsgBody | Array | 消息体,详情请参见 消息格式描述 |
CloudCustomData | String | 消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到) |
允许用户发言,同时也不变动即将下发的消息的内容。
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0 // 0 为允许发言
}
不允许用户发言,该消息将不会下发,同时给用户(即消息发送者)返回错误码20006
。
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 1 // 1 为拒绝发言
}
不允许用户发言,该消息将不会下发,但会给发送方返回成功,使发送方以为消息已经发出。
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 2 // 2 为静默丢弃
}
如下的应答示例为:对用户发送的单聊消息进行了变动(增加了自定义消息或消息自定义数据),即时通信 IM 后台将会下发经过变动之后的消息。App 后台可以基于这一特性在用户发送的消息中增加一些特殊内容,例如用户等级、头衔等信息。
示例:
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0, // 必须为0,只有这样,变动之后的消息才能正常下发
"MsgBody": [ // App 变动之后的消息,如果没有,则默认使用用户发送的消息
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
},
{
"MsgType": "TIMCustomElem", // 自定义消息
"MsgContent": {
"Desc": " CustomElement.MemberLevel ", // 描述
"Data": " LV1" // 数据
}
}
],
"CloudCustomData": "your new cloud custom data" // 消息自定义数据
}
字段 | 类型 | 属性 | 说明 |
---|---|---|---|
ActionStatus | String | 必填 | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 必填 | 错误码,0为允许发言;1为禁止发言;2为静默丢弃。若业务希望拒绝发言的同时,将错误码 ErrorCode 和 ErrorInfo 传递至客户端,请将错误码 ErrorCode 设置在 [120001, 130000] 区间内 |
ErrorInfo | String | 必填 | 错误信息 |
MsgBody | Array | 选填 | 经过 App 变动之后的消息体,即时通信 IM 后台将把变动后的消息发送给接收方,具体格式参见 消息格式描述 |
CloudCustomData | String | 选填 | 经过 App 变动之后的消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到),即时通信 IM 后台将把变动后的消息发送给接收方 |
本页内容是否解决了您的问题?