直播群成员在线和离线状态回调
功能说明
App 后台可以通过该回调实时查看直播群的上下线状态,例如记录日志,或者同步到其他系统。
注意事项
此功能需 专业版、专业版plus或企业版,并且已开通“直播群在线成员列表”功能(控制台“群功能配置”)。在控制台开启后,直播群成员将保存最新入群并且在线的1000人,客户端可以拉取该列表。在控制台关闭后,客户端无法拉取该1000人列表,只能拉取到最新进群的30人列表。
要启用回调,必须配置回调 URL,并打开本条回调协议对应的开关,配置方法详见 第三方回调配置 文档。
回调的方向是即时通信 Chat 后台向 App 后台发起 HTTP POST 请求。
App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。
其他安全相关事宜请参考 第三方回调简介:安全考虑 文档。
可能触发该回调的场景
App 用户进入直播群之后,未正常退群,系统内部会每过20s进行检查,当发现该用户已经超过30s没有上报心跳后,就触发 Offline 回调
App 用户进入直播群之后,未正常退群,因没有心跳上报触发Offline回调后,重新上线引发 Online 回调。
App 用户首次进入直播群(一个用户多个 App 终端进入一个直播群,仅回调第一次,其中 App 终端包括 Web 端),引发 Online 回调。
App 用户最后一次主动退出直播群 (一个用户多个 App 终端在直播群时候,最后一个终端退出时候触发回调,其中 App 终端包括 Web 端),触发 Offline 回调。
回调发生时机
用户进入直播群之后,因网络中断等原因导致心跳请求超时触发 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 | 创建应用时在即时通信 Chat 控制台分配的 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 | 必填 | 错误信息 |