回调功能

大约 3 分钟

回调功能

概述

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

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

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

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

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

使用回调功能前,请查看你的产品套餐是否支持,详见增值服务说明。若不支持,你需首先在环信即时通讯云控制台open in new window开通该功能,然后配置发送前回调规则发送后回调规则

提示

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

两类回调的区别

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

回调安全

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

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

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

  1. 查找以下信息:

    img

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

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