即时通讯
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • Web
  • 小程序
  • Flutter
  • Unity3D
  • uni-app
  • React Native
  • 产品简介
  • 下载
  • 快速开始
    • 跑通示例源码
    • 实现基本消息收发
  • 用户相关
  • 房间相关
  • 群组相关
  • 消息相关
  • 呼叫邀请
  • 会话管理
  • 缓存管理
  • 离线推送
  • 语音组件
  • 客户端 API
  • 服务端 API
  • 迁移方案
  • SDK 错误码
  • 常见问题
  • 文档中心
  • 即时通讯
  • 服务端 API
  • 第三方回调
  • 消息发送后回调

消息发送后回调

更新时间:2024-01-09 11:23

描述

用户发送单聊、群聊、房间消息成功或失败后,业务后台可以接收 ZIM 服务端的发送消息回调,将用户发送的消息实时同步至业务服务器,并存储于业务服务器。

此回调支持的消息类型为文本消息、图片消息、文件消息、音频消息、视频消息、自定义消息,不支持信令消息、弹幕消息。

回调说明

  • 请求方法:支持 POST/JSON。

    回调数据需要 UrlDecode 解码。

  • 请求地址:请联系 ZEGO 技术支持配置回调地址。
  • 传输协议: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
目标会话类型:
  • 0:单聊。
  • 1:房间。
  • 2:群聊。
conv_id
String
目标会话 ID。
当开发者使用服务端发送单聊消息时,此字段为空,“user_list”有值。

msg_type
Int
消息类型:
  • 1:文本。
  • 11:图片。
  • 12:文档。
  • 13:音频。
  • 14:视频。
  • 200:自定义。
sub_msg_type
Int
具体的自定义类型。值由用户发送自定义消息时填写,取值范围为 [0,200]。只有当 msg_type 为 200(自定义类型)时,此参数才有意义。
msg_body
String
消息内容。
  • 消息由客户端发送时:
    • 当 msg_type 为 1(文本类型)或 200(自定义类型),msg_body 为发送消息时传入的消息内容,开发者可直接阅读消息内容。
    • 当 msg_type 为 11、12、13、14,即消息为媒体类型时,msg_body 为 JSON 字符串。请使用 URLDecode 对此 JSON 字符串解码,并按照多媒体消息结构解析这个 JSON 字符串,进而获取消息中的 各个字段数据
  • 消息由服务端发送时,不论消息类型,本回调会直接透传发送消息时传入的内容。
msg_id
String
消息 ID,可借此确定消息的唯一性。消息发送失败时,此参数为空。
msg_seq
Int
消息 Seq,可用于撤回消息。

通过服务端 API 批量发送单聊消息时,此字段为空。此时如需获取消息 Seq,请从“user_list”获取。

payload
String
消息扩展字段。
msg_time
Int
服务端收到消息的时间,Unix 时间戳,单位为毫秒(ms)。
send_result
Int
消息发送结果。0 表示发送成功,其他整数为具体错误码,表示发送失败,您可参考 全局返回码 了解原因。
user_list
Array of Object
只有通过服务端发送单聊消息时,回调会包含此字段,用于批量返回消息接收用户信息。

  • 此字段有值时,“conv_id”为空。
  • 如果您在 2024 年 1 月 5 日前使用过本回调,会发现回调中不包含此字段。如需回调支持此字段,请联系 ZEGO 技术支持。

user_id
String
消息接收用户。
msg_id
String
消息 ID,可借此确定消息的唯一性。消息发送失败时,此字段为空。
msg_seq
Int
消息 Seq,可用于撤回消息。

建议您将部分参数转换为 Int 进行逻辑处理,相关字段包括 appidnonce

msg_body JSON 字符串解析结果参数说明

参数 类型 描述
md5 String 文件 MD5 值。
file_name String 文件名称。
file_size String 文件大小,单位为字节(B)。
download_url String 下载地址。
media_duration String 音视频时长,单位为秒(s)。

数据示例

  • POST/JSON
{
    "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",}
    ]
}

返回响应

收到回调后,如果您的服务器返回的 HTTP status code 为 2XX (例如 200),表示成功;返回其他,表示失败。

回调重试策略

如果 ZEGO 服务器没有收到响应,会尝试重试,最多进行 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
消息长度超过限制。
消息长度超过限制。
请缩小消息长度。
本篇目录