Callback Overview

为了方便您控制 App 的功能形态,LiveKit 提供了回调能力。

功能说明

用户可通过 REST API 方式配置指定 Url 的回调,当执行的 CallbackCommand 在配置列表中,将触发回调。

注意事项

一个 sdkAppId 仅允许配置一个回调。
确保回调的 URL 是可以正常访问。

回调协议

第三方回调基于 HTTP/HTTPS 协议,App 后台需要向 live 平台 提供回调 URL,Chat 使用 POST 请求的方式来向 App 后台发起回调请求。Chat 在发起回调时,会在 App 提供的 URL 之后增加如下几个參数:
参数
含义
SdkAppId
App 在 Chat 分配的应用标识
CallbackCommand
回调命令字
contenttype
可选,通常值为 JSON
ClientIP
客户端 IP 地址
OptPlatform
客户端平台,对应不同的平台类型,可能的取值有:RESTAPI(使用 REST API发送请求)、Web(使用 Web SDK发送请求)、Android、iOs、Windows、Mac、iPad、Unknown(使用未知类型的设备发送请求)

安全问题

安全性问题:
1. HTTP 是明文传输,数据的保密性无法保证,建议使用 HTTPS。
2. 无法验证回调请求是否真正来自于Live。
为了解决请求来源的安全性问题,我们为您提供回调应用层签名认证,启用步骤如下:
1. 首先使用 设置回调配置 设置回调。
2. 设置回调鉴权 Token 中,开启鉴权,并配置鉴权 Token,配置完成后,回调请求 URL 参数会增加签名 Sign 以及签名时间戳 RequestTime,签名算法:Sign=sha256(TokenRequestTime)
3. 在 App 后台支持针对回调请求进行鉴权,通过本地鉴权 Token 以及回调 URL 参数中的签名时间戳 RequestTime 计算 sha256,比较签名是否匹配。并对 RequestTime 校验时效性,RequestTime 和当前时间相差超过1分钟即可认为是无效请求,以防止重放攻击。
签名算法示例:

Token=xxxxyyyy
RequestTime=1669872112
Sign=sha256(xxxxyyyy1669872112)=17773bc39a671d7b9aa835458704d2a6db81360a5940292b587d6d760d484061

回调 URL=URL&Sign=17773bc39a671d7b9aa835458704d2a6db81360a5940292b587d6d760d484061&RequestTime=1669872112

回调不通的常见原因

如果遇到回调不通的情况,App 先依照如下清单排查一下设置的回调服务是否存在问题。
回调不通的现象
可能存在的原因
回调 URL 访问超时
1. Live无法完成 DNS 解析,请确认该域名是否在公网生效。(例如,回调 HOST 为 http://notexist.com,该域名不存在,Live 无法完成 DNS 解析。)
2. Live无法访问到回调 URL 中配置的 IP,请确认该 IP 是否公网可达。(例如,回调 HOST 为 http://10.0.0.1,该域名为 App 内网 IP,Live无法访问到该 IP。)
3. App 回调服务防火墙策略限制,请检查防火墙配置。(例如,App 回调服务器拒绝了所有到达 80 端口的请求。)
回调服务拒绝访问
Live 可以访问到 HOST,但链接建立失败,请确认 WebServer 已经正确启动。(例如:App 回调服务器的 WebServer 并未启动,或者端口配置错误。)
回调服务 HTTP 返回码非200
回调请求成功,但应答报文中的 HTTP 返回码非200。
回调应答包体解析失败
回调请求包体非 JSON 格式。