• UIKit
  • SDK
  • 服务端 API
Chat/
服务端 API/
服务端回调/
单聊消息回调/
服务端 API
  • UserSig(Token) 鉴权
  • RESTful API
    • RESTful API 概述
    • RESTful API 列表
    • 消息相关
      • 发送消息
        • 向单个用户发送单聊消息
        • 向多个用户发送单聊消息
        • 群内发送普通消息
        • 群内发送系统消息
        • 直播群广播消息
        • 导入单聊消息
        • 导入群消息
      • 历史消息
        • 修改单聊历史消息
        • 修改群聊历史消息
        • 拉取单聊历史消息
        • 拉取群聊历史消息
      • 删除消息
        • 删除指定用户发送的消息
      • 撤回消息
        • 撤回单聊消息
        • 撤回群消息
      • 已读回执
        • 设置单聊消息已读
        • 拉取群消息已读回执详情
        • 拉取群消息已读回执
      • 消息扩展
        • 拉取单聊消息扩展
        • 设置单聊消息扩展
        • 拉取群消息扩展
        • 设置群消息扩展
      • 推送给所有用户
        • 全员推送接口
        • 推送给所有用户
        • 设置应用属性名称
        • 获取应用属性名称
        • 获取用户属性
        • 设置用户属性
        • 删除用户属性
        • 获取用户标签
        • 添加用户标签
        • 删除用户标签
        • 删除用户所有标签
    • 会话相关
      • 会话列表
        • 拉取会话列表
      • 未读会话数
        • 设置成员的未读消息数
        • 查询未读单聊消息数
      • 删除会话
        • 删除会话
      • 会话组标签
        • 创建会话组数据
        • 更新会话组数据
        • 删除会话组数据
        • 创建或更新会话标记数据
        • 查找会话组标记
        • 拉取会话组标记数据
    • 群相关
      • 群组管理
        • 获取应用内所有群组
        • 创建群组
        • 解散群组
        • 获取用户已加入的群
      • 群资料
        • 获取群资料
        • 修改群资料
        • 导入群资料
      • 群成员管理
        • 添加群成员
        • 删除群成员
        • 封禁群成员
        • 解禁群成员
        • 批量禁言和取消禁言
        • 获取被禁言群成员列表
        • 变更群主
        • 查询用户在群组中的身份
        • 导入群成员
      • 群成员信息
        • 获取群成员资料
        • 修改群成员资料
        • Getting Specified Group Member Profiles
      • 群自定义属性
        • 获取群自定义属性
        • 修改群自定义属性
        • 清空群自定义属性
        • 重置群自定义属性
        • 删除群自定义属性
      • 直播群管理
        • 获取直播群在线人数
        • 获取直播群在线成员列表
        • 设置直播群成员标记
        • 获取封禁群成员列表
      • 社群管理
        • 创建话题
        • 删除话题
        • 获取话题资料
        • 修改话题资料
        • 导入话题资料
      • 群计数器
        • 获取群计数器
        • 更新群计数器
        • 删除群计数器
    • 用户管理
      • 账号管理
        • 导入单个账号
        • 导入多账号
        • 删除账号
        • 查询账号
      • 用户信息
        • 设置资料
        • 拉取资料
      • 用户状态
        • 账号登录状态失效
        • 查询账号在线状态
      • 好友管理
        • 添加好友
        • 导入好友
        • 更新好友
        • 删除好友
        • 删除所有好友
        • 验证好友
        • 拉取好友
        • 拉取指定好友
      • 好友列表
        • 添加列表
        • 删除列表
        • 拉取列表
      • 黑名单
        • 拉黑用户
        • 将用户移出黑名单
        • 拉取黑名单
        • 验证黑名单中的用户
    • 全员禁言管理
      • 设置全员禁言
      • 查询全员禁言
    • 运维管理
      • 拉取运维数据
      • 下载最新消息
      • 获取服务器 IP 地址
    • 智能机器人
      • 拉取智能机器人账号
      • 创建智能机器人账号
      • 删除智能机器人账号
    • 全员/标签推送
      • 发起全员/标签推送
      • 获取应用属性名称
      • 设置应用属性名称
      • 获取用户属性
      • 设置用户属性
      • 删除用户属性
      • 获取用户标签
      • 添加用户标签
      • 删除用户标签
      • 清空用户标签
      • 推送撤回
  • 服务端回调
    • 回调概述
    • 回调命令列表
    • 运维管理回调
      • 接口超频告警回调
    • 在线状态回调
      • 状态变更回调
    • 关系链回调
      • 更新资料之后
      • 添加好友之前
      • 添加好友回应之前
      • 添加好友之后
      • 删除好友之后
      • 将用户加入黑名单后
      • 将用户移出黑名单后
    • 单聊消息回调
      • 发送单聊消息之前
      • 发送单聊消息之后
      • 设置单聊消息已读之后
      • 撤回单聊消息之后
    • 群回调
      • 创建群组之前
      • 创建群组之后
      • 申请入群之前
      • 拉人入群之前
      • 用户入群之后
      • 成员退群之后
      • 发送群消息之前
      • 发送群消息后
      • 群组满员之后
      • 群组解散之后
      • 群组资料变动之后
      • 撤回群消息之后回调
      • 直播群成员在线和离线状态回调
      • 发送群消息异常回调
      • 创建话题之前
      • 创建话题之后
      • 删除话题后
      • 话题信息变更回调
      • 群成员资料变更后回调
      • 群属性变更后回调
      • 已读回执后回调
      • 群主变更后回调
      • Group Creation Daily Net Increase Threshold Alarm Callback
    • 机器人相关回调
      • 单聊机器人消息回调
      • 群内@机器人之后回调

发送单聊消息之前

功能描述

App 后台可以通过该回调实时对用户的单聊消息进行操作,包括:
对发单聊消息进行实时记录(例如记录日志,或者同步到其他系统)。
拦截用户的违规发言请求。可自定义拦截违规消息,如文本、图像、自定义消息等。
注意:
消息前回调默认2s超时且不建议调整,使用前回调处理内容审核,可能导致整个前回调超时。

注意事项

要启用回调,必须配置回调 URL,并打开本回调对应的开关,配置方法详见 第三方回调配置 文档。
回调的方向是即时通信 Chat 后台向 App 后台发起 HTTPS POST 请求。
App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。
若同时开启发单聊消息之前和之后两种回调,且发单聊消息之前回调返回禁止发言,则发单聊消息之后回调将不会被触发。
若同时开启发单聊消息之前和之后两种回调,且发单聊消息之前回调变动了消息体,则发单聊消息之后回调将使用变动过的消息进行回调。
其他安全相关事宜请参考 第三方回调简介:安全考虑 文档。

可能触发该回调的场景

App 用户通过客户端发送单聊消息。
App 管理员通过 REST API (sendmsg 接口)发送单聊消息。

回调发生时机

即时通信 Chat 后台收到用户发送的单聊消息之后、将该消息下发给目标用户之前。

接口说明

请求 URL 示例

以下示例中 App 配置的回调 URL 为 https://www.example.com示例:
https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform

请求参数说明

参数
说明
https
请求协议为 HTTPS,请求方式为 POST
[www.example.com](http://www.example.com)
回调 URL
SdkAppid
创建应用时在即时通信 Chat 控制台分配的 SDKAppID
CallbackCommand
固定为:C2C.CallbackBeforeSendMsg
contenttype
请求包体固定为 JSON
ClientIP
客户端 IP,格式如:127.0.0.1
OptPlatform
客户端平台,取值参见 第三方回调简介:回调协议 中 OptPlatform 的参数含义

请求包示例

{
"CallbackCommand": "C2C.CallbackBeforeSendMsg", // 回调命令
"From_Account": "jared", // 发送者
"To_Account": "Jonh", // 接收者
"MsgSeq": 48374, // 消息序列号
"MsgRandom": 2837546, // 消息随机数
"MsgTime": 1557481126, // 消息的发送时间戳,单位为秒
"MsgKey": "48374_2837546_1557481126", //消息的唯一标识,可用于 REST API 撤回单聊消息
"OnlineOnlyFlag":1, //在线消息,为1,否则为0;
"MsgBody": [ // 消息体,参见 TIMMessage 消息对象
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
}
],
"CloudCustomData": "your cloud custom data"
}

请求包字段说明

字段
类型
说明
CallbackCommand
String
回调命令
From_Account
String
消息发送者 UserID
To_Account
String
消息接收者 UserID
MsgSeq
Integer
消息序列号,用于标记该条消息(32位无符号整数)
MsgRandom
Integer
消息随机数,用于标记该条消息(32位无符号整数)
MsgTime
Integer
消息的发送时间戳,单位为秒
单聊消息优先使用 MsgTime 进行排序,同一秒发送的消息则按 MsgSeq 排序,MsgSeq 值越大消息越靠后
MsgKey
String
该条消息的唯一标识,可根据该标识进行 REST API 撤回单聊消息
OnlineOnlyFlag
Integer
在线消息,为1,否则为0
MsgBody
Array
消息体,详情请参见 消息格式描述
CloudCustomData
String
消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到)

应答包示例(允许发言)

允许用户发言,同时也不变动即将下发的消息的内容。
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0 // 0 为允许发言
}

应答包示例(禁止发言)

不允许用户发言,该消息将不会下发,同时给用户(即消息发送者)返回错误码20006
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 1 // 1 为拒绝发言
}

应答包示例(静默丢弃)

不允许用户发言,该消息将不会下发,但会给发送方返回成功,使发送方以为消息已经发出。
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 2 // 2 为静默丢弃
}

应答包示例(变动消息内容)

如下的应答示例为:对用户发送的单聊消息进行了变动(增加了自定义消息或消息自定义数据),即时通信 Chat 后台将会下发经过变动之后的消息。App 后台可以基于这一特性在用户发送的消息中增加一些特殊内容,例如用户等级、头衔等信息。
示例:
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0, // 必须为0,只有这样,变动之后的消息才能正常下发
"MsgBody": [ // App 变动之后的消息,如果没有,则默认使用用户发送的消息
{
"MsgType": "TIMTextElem", // 文本
"MsgContent": {
"Text": "red packet"
}
},
{
"MsgType": "TIMCustomElem", // 自定义消息
"MsgContent": {
"Desc": " CustomElement.MemberLevel ", // 描述
"Data": " LV1" // 数据
}
}
],
"CloudCustomData": "your new cloud custom data" // 消息自定义数据
}

应答包字段说明

字段
类型
属性
说明
ActionStatus
String
必填
请求处理的结果,OK 表示处理成功,FAIL 表示失败
ErrorCode
Integer
必填
错误码,0为允许发言;1为禁止发言;2为静默丢弃。若业务希望拒绝发言的同时,将错误码 ErrorCode 和 ErrorInfo 传递至客户端,请将错误码 ErrorCode 设置在 [120001, 130000] 区间内
ErrorInfo
String
必填
错误信息
MsgBody
Array
选填
经过 App 变动之后的消息体,即时通信 Chat 后台将把变动后的消息发送给接收方,具体格式参见 消息格式描述
CloudCustomData
String
选填
经过 App 变动之后的消息自定义数据(云端保存,会发送到对端,程序卸载重装后还能拉取到),即时通信 Chat 后台将把变动后的消息发送给接收方

参考

在技术社区提问