Skip to content

OpenIM 回调

1. 接口定位

  • 接口名称: OpenIM 回调
  • 所属域: chat/callback
  • 业务目标: 接收 OpenIM Server Webhook 事件并转发到 chat 服务内部处理
  • 面向对象: OpenIM Server,不面向普通客户端

2. 请求定义

  • Method: POST
  • Path: /callback/open_im
  • Content-Type: 由 OpenIM 回调方决定,服务端直接读取原始请求体
  • operationID: 建议通过 Header operationID 传入
  • 鉴权: 无额外业务 token;安全控制应在网关或网络层完成

3. 请求参数

Query 参数

字段必填类型说明
commandstringOpenIM 回调命令类型

Body 参数

  • 请求体按原始字符串读取,再由 chat 服务按 command 进行反序列化。

当前已实现命令:

command说明
callbackBeforeAddFriendCommand加好友前校验目标用户是否允许被添加
callbackBeforeSendSingleMsgCommand单聊发送前违禁词检测(阶段1)
callbackBeforeSendGroupMsgCommand群聊发送前违禁词检测(阶段1)

4. 处理规则

  • API 层不会解析业务字段,只会读取原始 body 并转发给 chat 服务。
  • chat 服务当前处理以下 before 命令:
    • callbackBeforeAddFriendCommand:校验目标用户是否允许被添加好友。
    • callbackBeforeSendSingleMsgCommand:按 single 场景策略执行违禁词拦截。
    • callbackBeforeSendGroupMsgCommand:按 group 场景策略执行违禁词拦截。
  • 未实现的 command 会直接返回参数错误。

回调响应语义(before 命令)

  • OpenIM Server before 回调基于 actionCode + nextCode + errCode 判断是否拦截。
  • 当 before 检查未命中或允许放行时,返回:
    • actionCode = 0
    • nextCode = 0
    • errCode = 0
  • 当 before 检查命中并拒绝时,返回:
    • actionCode = 0
    • nextCode = 1
    • errCode = 20016(SensitiveWordBlocked)

5. 错误码与失败场景

错误码场景典型报错
1001command 不支持invalid command ...
1001回调 body JSON 解析失败由 JSON 反序列化错误返回
-目标用户不存在或查询失败由数据库查询链路返回
20014目标用户不允许被添加好友RefuseFriend
20016发送前命中违禁词并拒绝sensitive word detected

6. 示例

请求示例

http
POST /callback/open_im?command=callbackBeforeAddFriendCommand
Content-Type: application/json

{
	"callbackCommand": "callbackBeforeAddFriendCommand",
	"fromUserID": "u_1001",
	"toUserID": "u_1002",
	"reqMsg": "加个好友",
	"operationID": "openim-callback-001"
}

成功响应示例

json
{
  "actionCode": 0,
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "nextCode": 0
}

拦截响应示例(before 命令)

json
{
  "actionCode": 0,
  "errCode": 20016,
  "errMsg": "sensitive word detected",
  "errDlt": "sensitive word detected",
  "nextCode": 1
}

7. 变更记录

  • 2026-03-31: 调整为简要内部文档,仅说明已实现的 OpenIM webhook 行为。
  • 2026-07-13: 新增 beforeSendSingleMsg/beforeSendGroupMsg 违禁词拦截命令说明,补充 before 回调响应语义。