直播群成员在线和离线状态回调
功能说明
App 后台可以通过该回调实时查看直播群的上下线状态,例如记录日志,或者同步到其他系统。
注意事项
此功能需 进阶版,并且已开通“直播群在线成员列表”功能(控制台“群功能配置”)。在控制台开启后,直播群成员将保存最新入群并且在线的1000人,客户端可以拉取该列表。在控制台关闭后,客户端无法拉取该1000人列表,只能拉取到最新进群的30人列表。
要启用回调,必须配置回调 URL,并打开本条回调协议对应的开关,配置方法详见 第三方回调配置 文档。
回调的方向是即时通信 IM 后台向 App 后台发起 HTTP POST 请求。
App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。
其他安全相关事宜请参考 第三方回调简介:安全考虑 文档。
可能触发该回调的场景
App 用户进入直播群之后,未正常退群,并且网络中断超过20s。
App 用户进入直播群之后,未正常退群,网络中断超过20s,重新上线。
App 用户首次进入直播群 (一个用户多个App终端进入一个直播群,仅回调一次)
App 用户最后一次主动退出直播群 (一个用户多个App终端在直播群时候,最后一个终端退出时候触发回调)
回调发生时机
用户进入直播群之后,因网络中断等原因导致心跳请求超时触发 Offline 事件;当超时20s重新上线时触发 Online 事件。若同一个用户使用多台设备登录,并且多台设备同时加入到同一个直播间时,只有当所有设备同时掉线才会触发 Offline 事件,当任一设备恢复上线时触发 Online 事件(多台设备恢复时仅触发一次 Online 事件)。
接口说明
请求 URL 示例
以下示例中 App 配置的回调 URL 为
https://www.example.com
。
示例:https://www.example.com?SdkAppid=$SDKAppID&CallbackCommand=$CallbackCommand&contenttype=json
请求参数说明
参数 | 说明 |
https | 请求协议为 HTTPS,请求方式为 POST |
www.example.com | 回调 URL |
SdkAppid | 创建应用时在即时通信 IM 控制台分配的 SDKAppID |
CallbackCommand | 固定为 Group.CallbackOnMemberStateChange |
contenttype | 固定值为 JSON |
请求包示例
{"CallbackCommand": "Group.CallbackOnMemberStateChange", // 回调命令"GroupId": "@TGS#2J4SZEAEL", // 群组 ID"EventType": "Offline", // 事件类型:Offline - 掉线、Online - 重新上线//事件原因:HeartbeatInterrupt 心跳中断、HeartbeatRecover 心跳恢复、Join 首次进群、Quit 最后一次退群"EventCause": "HeartbeatInterrupt","MemberList": [ // 离开群的成员列表{"Member_Account": "jared"},{"Member_Account": "tommy"}]}
请求包字段说明
字段 | 类型 | 说明 |
CallbackCommand | String | 回调命令 |
GroupId | String | 产生群消息的群组 ID |
EventType | String | 事件类型:Offline - 掉线、Online - 重新上线 |
EventCause | String | 事件产生原因:HeartbeatInterrupt 心跳中断、 HeartbeatRecover 心跳恢复、Join 首次进群、Quit 最后一次退群 |
MemberList | Array | 产生事件的成员列表 |
应答包示例
App 后台同步数据后,返回应答包。
{"ActionStatus": "OK","ErrorInfo": "","ErrorCode": 0 // 忽略应答结果}
应答包字段说明
字段 | 类型 | 属性 | 说明 |
ActionStatus | String | 必填 | 请求处理的结果,OK 表示处理成功,FAIL 表示失败 |
ErrorCode | Integer | 必填 | 错误码,0表示允许忽略应答结果 |
ErrorInfo | String | 必填 | 错误信息 |