IM 即时通讯
服务端
服务端集成新手指南
接口及业务限制
更新日志
平台服务
第三方回调
第三方回调概述
消息相关回调
用户信息相关回调
高级群相关回调
超大群相关回调
聊天室相关回调
音视频1.0相关回调
登录相关回调
圈组相关回调
消息抄送
消息抄送服务概述
开通消息抄送
IM会话相关抄送
IM 会话已读数据抄送
IM其他抄送
圈组相关抄送
音视频和白板相关抄送
安全通
安全通概述
开通 IM 安全通
最佳实践
聊天室重要消息投递
IM 平滑迁移方案
API 参考
API调用方式
状态码
云信 IM 账号管理
注册云信IM账号
刷新Token
封禁账号
账号全局禁言
设置移动端是否需要推送(桌面端在线时)
登录鉴权
消息功能
发送消息
发送单聊已读回执
发送群聊已读回执
消息撤回
发送广播消息
文件上传
删除单条消息
删除漫游消息
历史消息与记录
云端历史消息查询
广播消息查询
IM 登录/登出记录查询
自定义系统通知
用户名片
用户关系管理
好友关系管理
黑名单/静音管理
群组
高级群
创建高级群
拉人入群
发送群消息
添加管理员
移除管理员
转让群主
禁言群组
禁言指定群成员
踢人出群
主动退群
修改群昵称
修改群组信息
设置群消息提醒开关
解散群组
获取群组详细信息
获取群组禁言列表
获取群消息已读未读详情
获取用户已加入的群组信息
获取用户已加入的群组的所有群成员信息
获取群组的在线成员列表
批量获取群组信息与成员列表
批量获取群组的在线成员数量
超大群
创建超大群
拉人入群
发送超大群消息
发送超大群自定义系统通知
撤回超大群消息
添加管理员
移除管理员
转让群主
禁言超大群
禁言指定超大群成员
踢人出群
主动退群
修改超大群昵称
修改超大群信息
修改超大群成员信息
解散超大群
修改超大群人数级别
获取超大群信息
获取超大群成员信息
获取超大群禁言成员信息
获取已加入的超大群信息
查询超大群云端历史消息
聊天室
创建聊天室
获取聊天室地址
更新聊天室信息
查询聊天室信息
开放/关闭聊天室
查询开放状态的聊天室
设置聊天室定时关闭
开启/关闭进出聊天室事件通知
管理聊天室用户角色
获取聊天室成员列表
聊天室消息管理
发送聊天室消息
批量发送聊天室消息
撤回聊天室消息
发送聊天室定向消息
批量发送聊天室定向消息
发送聊天室全服广播消息
管理聊天室机器人
聊天室禁言
聊天室标签
管理聊天室队列
管理聊天室队列元素
圈组
获取圈组连接地址
服务器相关
创建服务器
修改服务器信息
删除服务器
批量查询服务器信息
分页查询服务器列表
服务器成员相关
邀请服务器成员
接受邀请
拒绝邀请
申请加入服务器
接受申请
拒绝申请
生成邀请码
通过邀请码加入
踢出成员
主动退出服务器
修改自己的成员信息
修改他人的成员信息
分页查询服务器成员列表
批量查询服务器成员信息
查询服务器的申请和邀请记录
查询个人的申请和邀请记录
更新成员封禁状态
分页查询封禁成员列表
频道相关
创建频道
修改频道基础信息
修改频道分组相关信息
删除频道
分页查询频道列表
批量查询频道信息
分页查询频道成员列表
修改频道黑白名单成员
修改频道黑白名单身份组
分页查询频道黑白名单成员列表
分页查询频道黑白名单身份组列表
批量查询频道黑白名单成员
批量查询频道黑白名单身份组
频道分组相关
身份组相关
服务器身份组
身份组成员管理
频道身份组
频道用户定制权限
频道分组身份组
频道分组用户定制权限
身份组自定义权限项
查询用户拥有的权限
圈组消息相关
发送消息
更新消息
查询云端历史消息
查询 Thread 聊天历史
批量查询Thread聊天meta 信息
更新快捷评论
查询快捷评论
查询@某人的未读消息
系统通知相关
圈组系统通知概述
发送自定义系统通知
更新自定义系统通知
搜索结果自定义排序
修改服务器自定义排序值
修改频道自定义排序值
在线状态订阅
文本翻译
推送payload配置

第三方回调概述

更新时间: 2023/01/06 17:00:20

第三方回调是云信一项基于客户需求开放的事件回调能力。简单来讲,就是由客户应用服务器干预事件处理的结果。例如在企业办公场景、接入第三方反垃圾服务场景下,需要在发送方发送消息后,不直接投递给接收方,而是先由云信服务器向应用服务器发出 POST 请求到应用服务器,根据应用服务器返回的回调结果,决定是否放行。

技术原理

开通第三方回调服务后,云信 IM 服务器会在客户端发送消息时,通过向您的应用服务器发送请求,将消息内容和用户信息发往应用服务器。您的应用服务器判断消息是否可以发送,并返回结果,云信 IM 服务器再选择是否投递消息。

  • 第三方回调服务仅针对通过 SDK 发送的消息。通过服务端 API 发送的消息,不会触发第三方回调。
  • 如果已开通第三方回调并配置消息相关回调,用户被拉黑后,给对方发消息,也会先进行第三方回调。

第三方回调概述

请求相关项
说明
请求协议 HTTP/HTTPS,为保证数据安全,建议您使用 HTTPS
请求方式 POST,后面接您在云信控制台应用界面的功能配置中配置的第三方回调地址(通常为您的应用服务器地址),示例:POST https://******.com
消息格式 application/json; charset=utf-8
回调地址 对于部分回调类型(如单聊消息和群消息)来说,您可在发送消息时设置环境变量,服务器将根据不同的环境回调到不同的回调地址,环境和回调地址的映射关系配置请联系商务经理
校验方式
云信 IM 服务器请求您的应用服务器时,您的应用服务器从请求头 (request header)中获取 CheckSum 进行安全校验
  • CheckSum = sha1(AppSecret + MD5 + CurTime), 其中AppSecretMD5CurTime 均为 String 类型
  • 在验证数据是否在传输过程中被篡改时,需要计算验证 MD5 值是否被修改,以及计算验证 CheckSum
  • AppSecret 值为您的AppSecret(与AppKey对应), MD5 值为根据请求体(request body)计算出来的值
请求次数 云信 IM 服务器只会请求 1 次
请求超时时间

超时时间为 2 秒

  • 如果请求失败或者超时,云信 IM 服务器会使用网易云信控制台上配置的默认回调结果继续处理业务逻辑
  • 您可前往云信控制台 > 选择应用 > IM专业版/免费版 > 功能配置 > 第三方回调修改调用失败时的默认策略
消息放行结果 如果不放行,SDK 返回 403;如果放行,SDK 返回 7101

请求格式

请求头说明

您需在请求头中传入如下参数。

Header 参数 类型 说明
AppKey String 您的应用的 App Key,具体获取方式请参见获取 App Key
CurTime Long 当前 UTC 时间戳,从 1970 年 1 月 1 日 0 点 0 分 0 秒开始到现在的毫秒数(Long)
MD5 String 根据请求中的 request body 计算出来的 MD5 值
CheckSum String 校验值
Content-Type String 请求消息体类型,一般为:application/json
  • MD5值计算示例:

    
        String requestBody = "{}";
        String MD5 = CheckSumBuilder.getMD5(requestBody); //参考 接口概述 -> API checksum校验 部分
    
    
  • CheckSum值计算示例:

    
        String AppSecret = "90ud57s6****";
        String MD5 = "9894907e4ad9de467809127750******";
        String CurTime = "1440570500855";  ////当前UTC时间戳,从1970年1月1日0点0 分0 秒开始到现在的毫秒数(String)
        String CheckSum = CheckSumBuilder.getCheckSum(AppSecret, MD5, CurTime); //参考 接口概述 -> API checksum校验 部分
    

请求的 HTTP Body 说明

消息体统一为 JSON 格式,示例:

    {
        "body": "Hello",
        "eventType": 1,
        "fromAccount": "000266",
        "fromClientType": "WEB",
        "fromDeviceId": "617715aa8579db03f0cf054c199c****",
        "fromNick": "yj000266",
        "msgTimestamp": "1541560157286",
        "msgType": "TEXT",
        "msgidClient": "",
        "to": "005877",
        "fromClientIp":"115.211.**.**",
        "fromClientPort":"568**"
    }

//Json中的属性请参考具体的回调类型

响应格式说明

第三方回调响应的 Content-Type Header 需要设置为 application/json; charset=utf-8

响应消息体为 JSON 格式,示例:

    {
        "errCode":0,
        "responseCode": 20000,
        "modifyResponse": {},
        "callbackExt": "aa"
    }

字段
说明
errCode
  • 0:表示回调通过,允许执行
  • 1:表示回调不通过,取消执行。如果设置了合法的自定义错误码(responseCode),则发送端会收到自定义错误码,否则发送端会收到 403 错误码。
responseCode
  • errCode1 时有效
  • 取值范围: 20,00020,099
  • 对于消息类型的第三方回调(eventType=1262241727374),支持设置为 200 的错误码,客户端表现为消息发送成功,其实消息发送失败
modifyResponse
  • 对于消息类型的第三方回调有效(eventType=1262241727374),用于修改消息内容
  • JSON 格式,支持 bodyattachextpushContentpushPayloadpushEnableneedPushNickpersistEnableskipHistory(聊天室消息有效)、roamingEnablehistoryEnable等字段(均可选,若不填则不替换),上述字段的长度限制和正常发消息的限制一样。示例:{"body":"xxx","attach":"xxx","ext":"123"}
  • 对登录聊天室的第三方回调有效(eventType=37
  • JSON 格式,支持 tagnotifyTargetTag字段,进入聊天室时会修改目标用户的 tagnotifyTargetTagnotifyTargetTag标签表达式。示例:{"tag":["tag1","tag2","tag3"],"notifyTargetTag":"{\"tag\":\"tag1\"} and {\"tag\":\"tag2\"}"}
  • 圈组相关:
    • 圈组发送消息有效:bodyattachextpushContentpushPayloadpushEnableneedPushNickhistoryEnable
    • 圈组发送系统消息有效:bodyattachextpushContentpushPayloadpushEnableneedPushNick
    • 圈组更新消息有效:bodyextmsgoperatorExtpushContentpushPayload
    • 圈组更新系统通知消息有效:bodyextmsgoperatorExtpushContentpushPayload
  • 效果:消息接收方收到的消息的上述几个字段将会被替换,消息发送方无感知,但是消息发送方的多端设备收到的消息是修改后的,此外,离线消息、漫游消息、云端历史消息,存储的均是修改后的消息内容,因此不管是消息发送方还是接收方,从云信服务器获取到的消息均是修改后的消息
callbackExt
  • 对于消息类型的第三方回调有效(eventType=12622),用于传递第三方回调的扩展信息,最大 1,024 个字符
  • 消息发送者和消息接收者均能获取该扩展字段(需要 SDK 版本大于等于 v7.7.0)
  • errCode=1,则只有消息发送者能获取到该字段
只有 responseCode 返回值为 200 时,客户端才能获取到 callbackExt 的内容。

第三方回调事件类型

IM 登录

eventType功能说明
36登录回调通过 SDK 登录时,参数检查通过后先回调开发者服务器,回调通过后才允许登录,否则登录失败,不同于其他第三方回调,登录回调失败时返回302错误码。

单聊

eventType功能说明
1单聊消息回调通过 SDK 发送单聊(P2P)消息时,参数检查通过后先回调开发者服务器,回调通过后才发送消息,否则消息发送失败。
35消息撤回回调进行点对点消息撤回或者群消息撤回时,参数检查通过后先回调开发者服务器,回调通过后才允许撤回,否则撤回失败。

群聊

eventType功能说明
2群组消息回调通过 SDK 发送群组消息时,参数检查通过后先回调开发者服务器,回调通过后才发送消息,否则消息发送失败。
7创建群回调通过 SDK 创建群组时,参数检查通过后先回调开发者服务器,回调通过后才允许创建,否则创建失败。
8解散群回调通过 SDK 解散群组时,参数检查通过后先回调开发者服务器,回调通过后才允许解散,否则解散失败。
9群邀请回调通过 SDK 群邀请时,参数检查通过后先回调开发者服务器,回调通过后才允许邀请,否则邀请失败。
10退群回调通过 SDK 退群时,参数检查通过后先回调开发者服务器,回调通过后才允许退群,否则退群失败。
11增加群管理员回调通过 SDK 增加管理员时,参数检查通过后先回调开发者服务器,回调通过后才允许增加管理员,否则操作失败。
12取消群管理员回调通过 SDK 取消管理员时,参数检查通过后先回调开发者服务器,回调通过后才允许取消管理员,否则操作失败。
13转让群回调通过 SDK 转让群时,参数检查通过后先回调开发者服务器,回调通过后才允许转让群,否则转让失败。
14踢人出群回调通过 SDK 踢人出群时,参数检查通过后先回调开发者服务器,回调通过后才允许踢人出群,否则踢人失败。
15更新群信息回调通过 SDK 更新群信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新群信息,否则更新失败。
16更新群成员信息回调通过 SDK 更新群成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新群成员信息,否则更新失败。
17更新其他人的群成员信息回调通过 SDK 更新其他人的群成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新其他人的群成员信息,否则更新失败。
18禁言群成员回调通过 SDK 禁言群成员时,参数检查通过后先回调开发者服务器,回调通过后才允许禁言群成员,否则操作失败。
19申请入群回调通过 SDK 申请入群时,参数检查通过后先回调开发者服务器,回调通过后才允许申请入群,否则申请失败。
22超大群消息回调通过 SDK 发送超大群消息时,参数检查通过后先回调开发者服务器,回调通过后才发送消息,否则消息发送失败。
23超大群群邀请回调通过 SDK 超大群的群邀请时,参数检查通过后先回调开发者服务器,回调通过后才允许邀请,否则邀请失败。
24超大群踢人出群回调通过 SDK 踢人出超大群时,参数检查通过后先回调开发者服务器,回调通过后才允许踢人出群,否则踢人失败。
25超大群退群回调通过 SDK 超大群的退群时,参数检查通过后先回调开发者服务器,回调通过后才允许退群,否则退群失败。
26更新超大群群信息回调通过 SDK 更新超大群的群信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新群信息,否则更新失败。
27更新超大群群成员信息回调通过 SDK 更新超大群的群成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新群成员信息,否则更新失败。
28超大群申请入群回调通过 SDK 申请超大群入群时,参数检查通过后先回调开发者服务器,回调通过后才允许申请入群,否则申请失败。
29增加超大群管理员回调通过 SDK 增加管理员时,参数检查通过后先回调开发者服务器,回调通过后才允许增加管理员,否则操作失败。
30取消超大群管理员回调通过 SDK 取消管理员时,参数检查通过后先回调开发者服务器,回调通过后才允许取消管理员,否则操作失败。
31禁言超大群回调通过 SDK 禁言超大群时,参数检查通过后先回调开发者服务器,回调通过后才允许禁言超大群,否则操作失败。
32禁言超大群群成员回调通过 SDK 禁言超大群群成员时,参数检查通过后先回调开发者服务器,回调通过后才允许禁言群成员,否则操作失败。
33更新超大群里其他人的群成员信息回调通过 SDK 更新其他人的群成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新其他人的群成员信息,否则更新失败。
34转让超大群回调通过 SDK 转让超大群时,参数检查通过后先回调开发者服务器,回调通过后才允许转让群,否则转让失败。

聊天室

eventType功能说明
37聊天室登录回调通过 SDK 进入聊天室时,参数检查通过后先回调开发者服务器,回调通过后才允许进入聊天室,否则登录失败。若回调通过且传入的参数包含 tag 和 notifyTargetTag 字段,则会使用该值替换该成员的标签信息。
6聊天室消息回调通过 SDK 发送聊天室消息时,参数检查通过后先回调开发者服务器,回调通过后才发送消息,否则消息发送失败。

圈组

eventType功能说明
40登录圈组 通过 SDK 登录时,参数检查通过后先回调开发者服务器,回调通过后才允许登录,否则登录失败。
41发消息通过 SDK 发送消息时,参数检查通过后先回调开发者服务器,回调通过后才允许发送,否则发送失败。
42创建服务器通过 SDK 创建服务器时,参数检查通过后先回调开发者服务器,回调通过后才允许创建,否则创建失败。
43更新服务器通过 SDK 更新服务器时,参数检查通过后先回调开发者服务器,回调通过后才允许更新,否则更新失败。
44删除服务器通过 SDK 删除服务器时,参数检查通过后先回调开发者服务器,回调通过后才允许删除,否则删除失败。
45邀请服务器成员通过 SDK 邀请服务器成员时,参数检查通过后先回调开发者服务器,回调通过后才允许邀请,否则操作失败。
46接受服务器成员邀请通过 SDK 接受服务器成员邀请时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
47拒绝服务器成员邀请通过 SDK 拒绝服务器成员邀请时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
48服务器申请通过 SDK 申请服务器时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
49接受服务器申请通过 SDK 接受服务器申请时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
50拒绝服务器申请通过 SDK 拒绝服务器申请时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
51离开服务器通过 SDK 离开服务器时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
52踢除服务器成员通过 SDK 踢除服务器成员时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
53修改服务器成员信息通过 SDK 修改服务器成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
54修改他人服务器成员信息通过 SDK 修改他人服务器成员信息时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
55创建频道通过 SDK 创建频道时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
56删除频道通过 SDK 删除频道时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
57修改频道信息通过 SDK 修改频道信息时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
58修改频道黑白名单身份组通过 SDK 修改频道黑白名单身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
59修改频道黑白名单成员通过 SDK 修改频道黑白名单成员时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
60创建服务器身份组通过 SDK 创建服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
61更新服务器身份组通过 SDK 更新服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
62删除服务器身份组通过 SDK 删除服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
63创建频道身份组通过 SDK 创建频道身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
64修改频道身份组通过 SDK 修改频道身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
65删除频道身份组通过 SDK 删除频道身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
66在频道下为某个人定制权限通过 SDK 在频道下为某个人定制权限时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
67删除频道下某人的定制权限通过 SDK 删除频道下某人的定制权限时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
68更新频道下用户定制权限通过 SDK 更新频道下用户定制权限时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
69把某些人拉进某服务器身份组通过 SDK 把某些人拉进某服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
70将某些人移除某个服务器身份组通过 SDK 将某些人移除某个服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
71批量更新服务器身份组通过 SDK 批量更新服务器身份组时,参数检查通过后先回调开发者服务器,回调通过后才允许操作,否则操作失败。
72发送自定义系统消息通过 SDK 发送自定义系统消息时,参数检查通过后先回调开发者服务器,回调通过后才允许发送,否则发送失败。
73更新消息通过 SDK 更新消息时,参数检查通过后先回调开发者服务器,回调通过后才允许更新,否则更新失败。
74更新系统通知通过 SDK 更新系统通知时,参数检查通过后先回调开发者服务器,回调通过后才允许更新,否则更新失败。

好友关系

eventType功能说明
3用户资料变更回调通过 SDK 变更用户资料时,参数检查通过后先回调开发者服务器,回调通过后才允许变更,否则变更失败。
4添加好友回调通过 SDK 添加好友时,参数检查通过后先回调开发者服务器,回调通过后才允许添加,否则添加失败。
5删除好友回调通过 SDK 删除好友时,参数检查通过后先回调开发者服务器,回调通过后才允许删除,否则删除失败。

音视频通话 1.0

eventType功能说明
20音视频呼叫回调通过 SDK 发起点对点音视频呼叫,参数检查通过后先回调开发者服务器,回调通过后才允许发起呼叫,否则呼叫失败。
21音视频会议创建回调通过 SDK 创建音视频多人房间,参数检查通过后先回调开发者服务器,回调通过后才允许创建,否则创建失败。
此文档是否对你有帮助?
有帮助
我要吐槽
  • 技术原理
  • 第三方回调概述
  • 请求格式
  • 请求头说明
  • 请求的 HTTP Body 说明
  • 响应格式说明
  • 第三方回调事件类型
  • IM 登录
  • 单聊
  • 群聊
  • 聊天室
  • 圈组
  • 好友关系
  • 音视频通话 1.0