消息发送前回调
描述
注意
- 此回调支持的消息类型为文本消息、图片消息、文件消息、音频消息、视频消息、自定义消息,不支持信令消息、弹幕消息。
- 此回调仅支持通过 SDK 发送的消息。若通过服务端发送消息,则您的业务后台不会收到此回调。
设置此回调后,当用户发送单聊、群聊或房间聊天消息时,ZIM 会向您的业务后台发起请求,您可以通过应答,对消息进行实时操作,如:
- 记录聊天消息,拦截违规发言请求;
- 实现黑白名单功能,由您判断哪些消息可以正常发出。
ZIM 会根据您的应答和 ZIM 内容服务的开通情况,决定消息是否发送,详情请参考本文档 应答参数。
回调说明
- 请求方法:POST。
说明
回调数据需要 UrlDecode 解码。
- 请求地址:请在 ZEGO 控制台 上配置回调地址,配置流程请参考控制台文档 ZIM 相关回调配置。
- 传输协议:HTTPS/HTTP,建议使用 HTTPS。
回调参数
公共参数 | 类型 | 描述 |
---|---|---|
appid | String | App 的唯一标识。 |
event | String | 回调事件,此回调返回值为 before_send_msg 。 |
nonce | String | 随机数,用于计算 signature。 |
signature | String | 检验串,详情见 检验说明。 |
timestamp | Int | 服务器当前时间,Unix 时间戳,单位为秒(s),用于计算 signature。 |
request_id | String | 请求 ID。 |
业务参数 | 类型 | 描述 |
from_user_id | String | 消息发送者 ID。 |
conv_id | String | 目标会话 ID。 |
conv_type | Int | 目标会话类型:
|
msg_id | String | 消息 ID,可借此确定消息的唯一性。 |
payload | String | 消息扩展字段。 |
msg_type | Int | 消息类型:
|
sub_msg_type | Int | 具体的自定义类型。值由用户发送自定义消息时填写,取值范围为 [0,200]。只有当 msg_type 为 200(自定义类型)时,此参数才有意义。 |
msg_body | String | 消息内容
|
说明
建议您将部分参数转换为 Int 进行逻辑处理,相关字段包括 appid
和 nonce
。
msg_body JSON 字符串解析结果参数说明
多媒体消息
组合消息
回调示例
Untitled
{
"appid": "1",
"event": "before_send_msg",
"from_user_id": "sender",
"conv_id": "receiver",
"request_id": "3501907290370176",
"msg_id": "1234232421343",
"conv_type": 0,
"timestamp": 1499676968,
"msg_body": "msg_body",
"msg_type": 1,
"signature": "abc",
"nonce": "321",
"sub_msg_type": 0,
"payload": "payload"
}
1
应答参数
参数 | 类型 | 描述 |
---|---|---|
result | Int | 您的业务后台应答的值,ZIM 会判断是否向发送该消息。
|
基于您的应答以及 ZIM 内容审核 服务开通与否,ZIM 会决定是否向消息接受端发送消息。ZIM 操作如下表所示:
有开通 ZIM 内容审核服务
无开通 ZIM 内容审核服务
根据您的业务后台应答的值,消息发送方的客户端可能会收到以下错误码:
错误码 | 说明 |
---|---|
111101 | 您的业务后台不同意发送此消息,ZIM 服务端拒绝发送此消息。 |
应答示例
Untitled
{
"result": 0
}
1
返回响应
收到回调后,如果您的服务器返回的 HTTP status code 为 2XX (例如 200),表示成功;返回其他,表示失败。
回调重试策略
如果 ZEGO 服务器在 2.5 秒内没有收到响应,判定为本次请求失败;随后会立即进行重试,若此次请求发起后 2.5 秒内仍未收到相应,则不再重试。
说明
当 ZEGO 客户端向您发起请求时,如果您的业务侧发生异常,则默认不发送消息。如需默认发送消息,请联系 ZEGO 技术支持。