目录
一.腾讯云im第三方回调
?二.回调分类
三.回调示例
1.请求url
2.请求包示例
3.应答包示例
4.代码
一.腾讯云im第三方回调
所谓回调,即即时通信 IM 后台会在某一事件发生之前或者之后,向 App 的后台服务器发送请求,App 后台可以据此进行必要的数据同步,或者干预事件的后续处理流程。
第三方回调将通过 HTTP/HTTPS 请求的方式发送给 App 后台服务器,App 后台服务器需要处理即时通信 IM 的回调请求并尽快进行应答。以群内发言之前回调为例,即时通信 IM 后台会在下发该消息之前回调 App 后台服务器,并根据回调结果决定该消息是否应当下发,App 不仅可以基于该回调来实现消息同步,而且可以进行发消息安全打击。回调业务流程如下图所示:
?二.回调分类
从功能角度来看,回调可以分为四大类:
- 在线状态回调
- 资料关系链回调
- 单聊消息回调
- 群组系统回调
从处理角度来看,回调可以分为以下两大类:
- 事件发生之前回调:回调的主要目的在于让 App 后台可以干预该事件的处理逻辑,即时通信 IM 会根据回调返回码确定后续处理流程(例如发送群消息之前回调)。
- 事件发生之后通知:回调的主要目的在于让 App 后台实现必要的数据同步,即时通信 IM 忽略回调返回码(例如群组成员退群之后通知)。
三.回调示例
1.请求url
https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json&ClientIP=$ClientIP&OptPlatform=$OptPlatform
请求参数说明
参数 | 说明 |
---|
https | 请求协议为 HTTPS,请求方式为 POST | www.example.com | 回调 URL | SdkAppid | 创建应用时在即时通信 IM 控制台分配的 SDKAppID | CallbackCommand | 固定为:State.StateChange | contenttype | 固定值为 JSON | ClientIP | 客户端 IP,格式如:127.0.0.1 | OptPlatform | 客户端平台,取值参见 第三方回调简介:回调协议 中 OptPlatform 的参数含义 |
2.请求包示例
{
"CallbackCommand": "State.StateChange",
"EventTime": 1629883332497,
"Info": {
"Action": "Login",
"To_Account": "testuser316",
"Reason": "Register"
},
"KickedDevice": [
{
"Platform": "Windows"
},
{
"Platform": "Android"
}
]
}
请求包字段说明
字段 | 类型 | 说明 |
---|
CallbackCommand | String | 回调命令 | Info | Object | 用户上下线的信息 | Action | String | 用户上线或者下线的动作,Login 表示上线(TCP 建立),Logout 表示下线(TCP 断开),Disconnect 表示网络断开(TCP 断开) | To_Account | String | 用户 UserID | Reason | String | 用户上下线触发的原因:
- Login 的原因有 Register:App TCP 连接建立或断网重连
- Logout 的原因有 Unregister:App 用户注销帐号导致 TCP 断开
- Disconnect 的原因有 LinkClose:即时通信 IM 检测到 App TCP 连接断开(例如 kill App,客户端发出 TCP 的 FIN 包或 RST 包);TimeOut:即时通信 IM 检测到 App 心跳包超时,认为 TCP 已断开(例如客户端网络异常断开,未发出 TCP 的 FIN 包或 RST 包,也无法发送心跳包)。心跳超时时间为400秒
- 各种具体场景触发的回调 Reason 请参考 可能触发该回调的场景
| KickedDevice | Array | 如果本次状态变更为 Login(Register),而且有其他设备被踢下线,才会有此字段。此字段表示其他被踢下线的设备的信息。 | KickedDevice.Platform | String | 被踢下线的设备的平台类型,可能的取值有"iOS", "Android", "Web", "Windows", "iPad", "Mac", "Linux"。 | EventTime | Integer | 触发本次回调的时间戳,单位为毫秒。 |
3.应答包示例
{
"ActionStatus": "OK",
"ErrorCode": 0,
"ErrorInfo": ""
}
应答包字段说明
字段 | 类型 | 属性 | 说明 |
---|
ActionStatus | String | 必填 | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 | ErrorCode | Integer | 必填 | 错误码,0表示 App 后台处理成功,1表示 App 后台处理失败 | ErrorInfo | String | 必填 | 错误信息 |
4.代码
|