回调功能

大约 3 分钟

回调功能

概述

即时通讯 IM 支持回调功能,即在事件发生之前或之后,声网服务器会以 HTTP POST 请求的形式向你的应用服务器发送通知。根据是否干预消息投递,回调分为两类:

  • 发送前回调:旨在让 app 后台干预该事件的处理逻辑,声网服务器会根据响应中的返回值确定后续处理流程。该类回调仅适用于从你的客户端应用发送的消息。

    该类回调一般是对用户发送的消息内容的处理,典型的应用场景为内容审核:当声网服务器收到来自客户端应用的消息时,会向你的应用服务器发送请求并等待响应,从而决定是否通过或拒绝消息投递。

  • 发送后回调:旨在让 app 后台实现必要的数据同步,声网服务器忽略回调返回码。

    发送后回调包括发送消息、发送消息已读回执、进行群组或聊天室操作、好友关系操作和用户状态变化等事件,详见发送后回调过滤规则设置

开通回调服务

使用回调功能前,请查看你的产品套餐是否支持。若不支持,你需要升级套餐版本。

展开控制台左上角下拉框,选择需要开通即时通讯 IM 服务的项目,然后按照以下步骤操作:

  1. 点击左侧导航栏的全部产品
  2. 在下拉列表中找到即时通讯 IM 并点击。
  3. 即时通讯 IM 页面,进入功能配置标签页.
  4. 消息功能页签中,点击消息回调后的前往升级套餐
  5. 套餐包 > 预付费套餐包 > 即时通讯IM 页面升级套餐包。

提示

若使用了一段时间回调功能后需要将其关闭,请联系声网商务。关闭该功能会导致回调所有相关配置删除,请谨慎操作。

img

两类回调的区别

类别发送前回调发送后回调
支持的消息发送方式客户端 SDK客户端 SDK 和 RESTful API
支持的范围仅限消息消息和其他事件
发生的时间声网服务器收到用户发送的上行单聊和群聊消息之后、且将该消息下发给目标用户之前发送消息后或进行单聊、群聊、聊天室、联系人等相关的操作后
是否需要响应
典型用例内容审核聊天记录同步

回调安全

对于发送前和发送后回调,声网服务器会向你的应用服务器发送带有 JSON 负载的 HTTP/HTTPS POST 请求。请求采用 UTF-8 编码,每个请求中的消息都使用 MD5 签名。在每个请求头中,Content-Type 字段为 application/json

对于发送后回调,请求中的消息使用通过 org.apache.commons.codec.digest.DigestUtils#md5Hex 计算的 MD5 签名。

你可以通过以下步骤验证签名检查回调是否从声网服务器发送:

  1. 查找以下信息:

    • 回调 ID:回调请求体中的 callId 参数。

    • 声网服务器为回调规则生成的 secret:你可以在声网控制台open in new window消息回调区域下的回调规则列表中查看。

    img

    • 回调时间戳:回调请求体中的时间戳参数。
  2. 计算回调 ID、secret、回调时间戳拼接后的字符串的 MD5 值。

  3. 检查计算的值是否与请求体中的 secret 参数相同。若相同,则表示该回调请求由声网服务器发送。

上次编辑于: