有奖:语音产品征文挑战赛等你来> HOT
为了方便您精细化控制您的通话业务,音视频通话 SDK (TUICallKit)提供了通话状态回调。您的业务后台可以通过该回调实时查看用户的通话结果,如未接听、拒接等,您可以据此进行实时数据统计等操作。回调配置方式参见 回调配置 API 列表

使用条件

仅开通了音视频通话 SDK(TUICallKit) 群组通话版的应用(SDKAppId)可以使用通话状态回调,您也可以开通体验版免费试用,版本说明及开通指引参见 音视频通话能力版本
目前各平台仅在特定版本的 TUICallKit 可使用通话状态回调,详见下表:
平台/框架
版本号
Android/iOS/Flutter/uni-app(客户端)
≥ 1.7.1
Web
≥ 1.4.6
微信小程序
≥ 1.5.1
注意:
参与通话的所有平台/框架升级到上述新的版本后,才可在控制台上查看到对应的通话信息。

注意事项

要启用回调,必须配置回调 URL,并打开本条命令字的开关,请参见 创建回调配置
回调的方向是 Callkit 后台向 App 后台发起 HTTP POST 请求。
App 后台在收到回调请求之后,务必校验请求 URL 中的参数 SDKAppID 是否是自己的 SDKAppID。

可能触发该回调的场景

App 用户通过客户端进行通话所产生的动作,例如接听、挂断等。

回调的发生时机

接听、挂断等用户操作后。

可能发生的回调结果

接口说明

请求URL

以下示例中 App 配置的回调 URL 为 https://www.example.com示例:
$http://www.example.com?sdkappid=$sdkappid&command=$command&contenttype=json&clientip=$clientip&optplatform=$optplatform

请求参数说明

参数
说明
http
请求协议为 HTTPS 或 HTTP,请求方式为 POST
www.example.com
回调 URL
sdkappid
创建应用时在即时通信 IM 控制台分配的 SDKAppID
command
请参见:回调命令字列表
contenttype
固定值为 json
clientip
客户端 IP,格式如:127.0.0.1
optplatform
客户端平台,可能是 iOS、Android、Web、miniProgram
具体的回调内容在 HTTP 请求包体中,参见下文回调示例。

回调示例

回调请求示例:
POST /?sdkappid=8888888&command=caller_start_call&contenttype=json&clientip=127.0.0.1&optplatform=iOS HTTP/1.1
Host: www.example.com
Content-Length: 337
{
"UserId": "Alice",
"RoomId": "Alice's Room",
"TotalNum": 2,
"MediaType": "audio",
"CallType": "single",
"CallId": "aheahfo-eqwnknoihfsd-qweqf",
"Role": "caller",
"Event": "start_call",
"CallResult": "",
"EventTime": 1704695566,
"StartCallTs": 1704856873,
"AcceptTs": 1704856876,
"EndTs": 1704856885
}

请求包字段说明

字段
类型
说明
UserId
String
操作的用户 ID
RoomId
String
操作的房间 ID
TotalNum
Integer
参与通话人数
MediaType
String
通话类型:
audio音频通话
video视频通话
CallType
String
通话类型:
single1v1通话
group群组通话
CallId
String
通话唯一 ID
Role
String
角色:
caller主叫 userId
callee被叫 userId
Event
String
通话事件:
start_call 主叫发起通话
call_accepted主叫接听通话
call_missed 主叫未接听
call_rejected 主叫拒绝通话
call_busy 主叫通话忙线
cancel_call 主叫取消通话
call_failed 主叫发起通话失败
call_end 主叫/被叫通话正常结束
call_interrupted 主叫/被叫通话中断
receive_call 被叫接收通话
accept_call 被叫接听通话
not_answer_call 被叫未应答
reject_call 被叫拒接
ignore_call 被叫忽略通话
call_canceled 被叫取消通话
invite_user 中途邀请用户
join_in_group_call 中途加入通话
StartCallTs
Integer
通话发起的时间戳(秒级)只有在normal_end才会回调此值
AcceptTs
Integer
通话接听的时间戳(秒级)只有在normal_end才会回调此值
EndTs
Integer
通话结束的时间戳(秒级)只有在normal_end才会回调此值
说明:
CallResult 字段仅一对一通话可能显示所有类型,群聊仅有normal_end
Event 字段中列举了所有可能,但部分事件概率出现较小。
TotalNum 通话总人数可能在事件同步时有一定的误差。

回调应答示例

App 后台同步数据后,发送回调应答包。
{
"ErrorCode": 0,
"ErrorMessage": "Success"
}

应答包字段说明

字段
类型
说明
ErrorCode
Integer
0 为成功,其余为失败
ErrorMessage
String
您的服务器响应可以自定义携带错误信息
注意:
您的服务器在正确接收到请求包时,建议您及时回复正确的应答包,否则会触发系统重试,重试机制如下。

重试机制

触发重试的时机
ErrorCode = 0 视为回调成功,否则会触发重试。
向您的 appServer 发 http 请求报错也会触发重试。
重试间隔
重试间隔为0s, 1s, 1s, 2s, 3s, 5s若均为成功则放弃。

错误码

错误码
含义说明
0
请求成功
50001
当前应用需要购买 TUICallKit 群组通话版套餐包方可使用
999
回调不存在
70001
请求参数无效,请检查必填参数是否缺失或填错
70002
UserSig 无效
70003
UserSig 过期
70004
请求用户非超级管理员
70005
请求被限频
未知错误码
系统内部错误,请 提交工单 联系技术人员