消息发送后回调
描述
用户发送单聊、群聊、房间消息成功或失败后,业务后台可以接收 ZIM 服务端的发送消息回调,将用户发送的消息实时同步至业务服务器,并存储于业务服务器。
注意
此回调支持的消息类型为文本消息、图片消息、文件消息、音频消息、视频消息、自定义消息,不支持信令消息、弹幕消息。
回调说明
- 请求方法:POST。
说明
回调数据需要 UrlDecode 解码。
- 请求地址:请在 ZEGO 控制台 上配置回调地址,配置流程请参考控制台文档 ZIM 相关回调配置。
- 传输协议:HTTPS/HTTP,建议使用 HTTPS。
回调参数
公共参数 | 类型 | 描述 |
---|---|---|
appid | String | App 的唯一标识。 |
event | String | 回调事件,此回调返回值为 send_msg 。 |
nonce | String | 随机数,用于计算 signature。 |
signature | String | 检验串,详情见 检验说明。 |
timestamp | Int | 服务器当前时间,Unix 时间戳,单位为秒(s),用于计算 signature。 |
业务参数 | 类型 | 描述 |
from_user_id | String | 消息发送者 ID。 |
conv_type | Int | 目标会话类型:
|
conv_id | String | 目标会话 ID。 说明 当开发者使用服务端发送单聊消息时,此字段为空,“user_list”有值。 |
msg_type | Int | 消息类型:
|
sub_msg_type | Int | 具体的自定义类型。值由用户发送自定义消息时填写,取值范围为 [0,200]。只有当 msg_type 为 200(自定义类型)时,此参数才有意义。 |
msg_body | String | 消息内容
|
msg_id | String | 消息 ID,可借此确定消息的唯一性。 注意 通过服务端 API 批量发送单聊消息时,此字段为空。此时如需获取消息 ID,请从“user_list”获取。 |
msg_seq | Int | 消息 Seq,可用于撤回消息。 注意 通过服务端 API 批量发送单聊消息时,此字段为空。此时如需获取消息 Seq,请从“user_list”获取。 |
payload | String | 消息扩展字段。 |
msg_time | Int | 服务端收到消息的时间,Unix 时间戳,单位为毫秒(ms)。 |
send_result | Int | 消息发送结果。0 表示发送成功,其他整数为具体错误码,表示发送失败,您可参考 全局返回码 了解原因。 |
user_list | Array of Object | 只有通过服务端发送单聊消息时,回调会包含此字段,用于批量返回消息接收用户信息。 说明
|
└user_id | String | 消息接收用户。 |
└msg_id | String | 消息 ID,可借此确定消息的唯一性。消息发送失败时,此字段为空。 |
└msg_seq | Int | 消息 Seq,可用于撤回消息。 |
说明
建议您将部分参数转换为 Int 进行逻辑处理,相关字段包括 appid
和 nonce
。
msg_body JSON 字符串解析结果参数说明
多媒体消息
组合消息
数据示例
- POST/JSON
Untitled
{
"appid": "1",
"event": "zim_send_msg",
"nonce": "350176",
"signature": "signature",
"timestamp": 1679553625,
"from_user_id": "350176117361",
"conv_type": 0,
"conv_id": "group1",
"msg_type": 1,
"msg_body": "msg_body",
"msg_id": "857639062792568832",
"payload": "payload",
"msg_time": 1679554146000,
"send_result": 0,
"sub_msg_type": 0,
"user_list":[
{"user_id":"userid1","msg_id": "857639062792568822",},
{"user_id":"userid2","msg_id": "857639062792568833",}
]
}
1
返回响应
收到回调后,如果您的服务器返回的 HTTP status code 为 2XX (例如 200),表示成功;返回其他,表示失败。
回调重试策略
如果 ZEGO 服务器没有收到响应,或收到的 HTTP status code 不为 2XX(例如 200),都会尝试重试,最多进行 5 次重试。每次重试请求与上一次请求的间隔时间分别为 2s、4s、8s、16s、32s。若第 5 次重试后仍然失败,将不再重试,该回调丢失。
send_result 说明
以下仅列出了回调相关的返回码,完整返回码请参考 全局返回码。
返回码 | 描述 | 可能原因 | 处理建议 |
---|---|---|---|
660000002 | 输入参数错误。 | 输入的参数缺失或不合法。 | 请检查输入的参数。 |
660500002 | 用户未注册。 | 消息发送者未登录过 SDK。 | 请用户先登录后再发送消息。 |
660500004 | 文本审核请求出错。 | 文本审核请求出错。 | 请联系 ZEGO 技术支持。 |
660500005 | 发送的文本消息没有通过审核。 | 发送的文本消息没有通过审核。 | 请勿发送该消息。 |
660500006 | 图片审核请求出错。 | 图片审核请求出错。 | 请联系 ZEGO 技术支持。 |
660500007 | 发送的图片消息没有通过审核。 | 发送的图片消息没有通过审核。 | 请勿发送该消息。 |
660500009 | 您的业务后台判断此消息应当“静默发送”。 | 收到“消息发送前回调”后,您的业务后台返回了 2 ,此消息被静默发送。 | 无需处理。 |
660500010 | 您的业务后台判断此消息应当“不发送”。 | 收到“消息发送前回调”后,您的业务后台返回了 3 ,此消息被拒绝发送。 | 无需处理。 |
660600021 | 发送消息参数错误。 | 发送消息参数错误。 | 请检查参数。 |
660600022 | 发送多媒体消息,获取重定向地址失败。 | 发送多媒体消息,获取重定向地址失败。 | 请联系 ZEGO 技术支持处理。 |
660600023 | 消息长度超过限制。 | 消息长度超过限制。 | 请缩小消息长度。 |