TUICallEvent API 简介
TUICallEvent API 是音视频通话组件的事件接口。
事件表
事件名 | 说明 |
被邀请通话 | |
通话请求的事件 | |
用户接听 | |
用户进入通话 | |
用户离开通话 | |
用户更新 | |
用户拒绝通话 | |
用户无响应 | |
用户忙线 | |
通话被取消 | |
通话未建立时,通话的各端都会抛出该事件 | |
通话接通时抛出的事件 | |
通话结束 | |
SDK Ready 回调 | |
被踢下线 | |
切换通话模式 | |
错误信息 | |
所有用户网络质量的事件 |
INVITED
收到一个新的来电请求事件,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
注意:
计划后续废弃
let handleNewInvitationReceived = function(event){console.log('被邀请通话')}tuiCallEngine.on(EVENT.INVITED, this.handleNewInvitationReceived, this);
参数如下表所示:
参数 | 类型 | 含义 |
sponsor | String | 邀请者 |
inviteeList | Array<String> | 同时还被邀请的人(后续将废弃) |
userIDList | Array<String> | 同时还被邀请的人 |
isFromGroup | Boolean | 是否是群组通话 |
inviteData | Object | 邀请数据 |
inviteID | String | 邀请 ID,标识一次邀请 |
userData | String | 扩展字段:用于在邀请信令中增加扩展信息 |
callId | String | 本次通话的唯一 ID。v1.5.1+ 版本支持 |
roomID | Number | 此次通话的音视频房间 ID。v1.5.1+ 版本支持 |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话。v1.5.1+ 版本支持 |
callRole | String | 角色,枚举类型:主叫、被叫。v1.5.1+ 版本支持 |
ON_CALL_RECEIVED
收到一个新的来电请求事件,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
注意:
v1.5.1+ 版本支持
let handleOnCallReceived = function(event) {console.log(event)};tuiCallEngine.on(EVENT.ON_CALL_RECEIVED, handleOnCallReceived);
参数如下表所示:
参数 | 类型 | 含义 |
sponsor | String | 邀请者 |
inviteeList | Array<String> | 同时还被邀请的人(后续将废弃) |
userIDList | Array<String> | 同时还被邀请的人 |
isFromGroup | Boolean | 是否是群组通话 |
inviteData | Object | 呼叫数据 |
inviteID | String | 邀请 ID,标识一次邀请 |
userData | String | 扩展字段:用于在邀请信令中增加扩展信息 |
callId | String | 本次通话的唯一 ID。 |
roomID | Number | 此次通话的音视频房间 ID。 |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话。 |
callRole | String | 角色,枚举类型:主叫、被叫。 |
USER_ACCEPT
如果有用户接听,其他用户会收到该事件。
let handleUserAccept = function(event) {console.log('用户接听')}tuiCallEngine.on(EVENT.USER_ACCEPT, this.handleUserAccept, this);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 接听的用户 ID |
userList | Array | 未接听用户的信息(后续将废弃) |
USER_ENTER
如果有用户同意进入通话,其他用户会收到该事件。
let handleUserEnter = function(event) {console.log('用户进入通话')}tuiCallEngine.on(EVENT.USER_ENTER, this.handleUserEnter, this);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 进房的用户 ID |
playerList | Array | 房间中用户的推流信息 |
USER_LEAVE
有用户离开此次通话时,通话中的其他用户会收到该事件。
let handleUserLeave = function(event) {console.log('用户离开通话')}tuiCallEngine.on(EVENT.USER_LEAVE, this.handleUserLeave, this);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 退房的用户 ID |
playerList | Array | 房间中用户的推流信息 |
USER_UPDATE
用户更新。
let handleUserUpdate = function(event) {console.log('用户更新')}tuiCallEngine.on(EVENT.USER_UPDATE, this.handleUserUpdate, this)
参数如下表所示:
参数 | 类型 | 含义 |
pusher | String | 更新后的自身推流信息 |
playerList | Array | 更新后其他用户的推流信息 |
REJECT
通话被拒绝事件,在 1v1 通话中,只有主叫方会收到拒绝事件,在群组通话中,所有被邀请者都可以收到该事件。
let handleInviteeReject = function(event) {console.log('用户拒绝通话')}tuiCallEngine.on(EVENT.REJECT, this.handleInviteeReject, this);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 拒绝通话的用户 ID |
invitee | String | 拒绝通话的用户 ID(后续将废弃) |
inviteID | String | 邀请 ID, 标识一次邀请 |
reason | string | reject 表示拒绝 |
NO_RESP
邀请用户无应答。
在C2C通话中,只有发起方会收到无人应答的回调 例如 A 邀请 B、C 进入通话,B不应答,A可以收到该回调,但C不行
在IM群组通话中,所有被邀请人均能收到该回调 例如 A 邀请 B、C 进入通话,B不应答,A、C均能收到该回调
let handleNoResponse = function(event) {console.log('用户无响应')}tuiCallEngine.on(EVENT.NO_RESP, this.handleNoResponse, this);
参数如下表所示:
参数 | 类型 | 含义 |
groupID | String | 群ID, 唯一标识 |
sponsor | String | 发起方的用户 ID |
userIDList | Array<String> | 触发超时无响应的用户列表 |
timeoutUserList | Array<String> | 触发超时无响应的用户列表(后续将废弃) |
inviteID | String | 邀请 ID, 标识一次邀请 |
LINE_BUSY
用户忙线。
let handleLineBusy = function(event) {console.log('用户忙线')}tuiCallEngine.on(EVENT.LINE_BUSY, this.handleLineBusy, this);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 忙线用户 ID |
invitee | String | 忙线用户 ID(后续将废弃) |
inviteID | String | 邀请 ID, 标识一次邀请 |
reason | string | line busy 表示忙线 |
CALLING_CANCEL
表示此次通话被主叫取消(取消原因有可能是主叫主动取消、也有可能是来自于通话超时取消),被叫会收到,您可以通过监听这个事件来实现类似未接来电等显示逻辑。
1. A 呼叫 B,A 挂断,A 会抛出该事件,userID 就是 A
2. A 呼叫 B,B 一直接通超时,B 会抛出该事件,userID 是 B
3. A 呼叫 B、C、D,B 接通后,A 和 B 都挂断,此时 C 拒绝,此时 B 也会抛出该事件,事件里的 userID 为 C
注意:
计划后续废弃
let handleCallingCancel = function(event) {console.log('通话被取消')}tuiCallEngine.on(EVENT.CALLING_CANCEL, this.handleCallingCancel, this);
参数如下表所示:
参数 | 类型 | 含义 | |
userID | String | 通话取消的用户 ID | |
invitee | String | 通话取消的用户 ID(后续将废弃) | |
inviteID | String | 邀请 ID, 标识一次邀请 | |
callId | String | 本次通话的唯一 ID。v1.5.1+ 版本支持 | |
roomID | Number | 此次通话的音视频房间 ID。v1.5.1+ 版本支持 | |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话。v1.5.1+ 版本支持 | |
callRole | String | 角色,枚举类型:主叫、被叫。v1.5.1+ 版本支持 | |
| | | |
ON_CALL_CANCELED
如果通话未建立,都会抛出该事件。您可以通过监听该事件来实现类似未接来电、重置 UI 状态等显示逻辑。通话未建立的场景如下:
主叫取消:主叫抛出该事件,userID 为主叫;被叫也会抛出该事件,userID 为被叫;
被叫超时:主叫会同时抛出 NO_RESP 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫拒接:主叫会同时抛出 REJECT 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫忙线:主叫会同时抛出 LINE_BUSY 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
注意:
v1.5.1+ 版本支持
let handleOnCallCanceled = function(event) {console.log(event.userID);};tuiCallEngine.on(EVENT.ON_CALL_CANCELED, handleOnCallCanceled);
参数如下表所示:
参数 | 类型 | 含义 |
userID | String | 通话取消的用户 ID |
callId | String | 本次通话的唯一 ID |
roomID | Number | 此次通话的音视频房间 ID |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话 |
callRole | String | 角色,枚举类型:主叫、被叫 |
ON_CALL_BEGIN
表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来开启云端录制、内容审核等流程。
注意:
v1.5.1+ 版本支持
let handleOnCallBegin = function(event) {console.log(event)};tuiCallEngine.on(EVENT.ON_CALL_BEGIN, handleOnCallBegin);
参数如下表所示:
参数 | 类型 | 含义 |
callId | String | 本次通话的唯一 ID |
roomID | Number | 此次通话的音视频房间 ID |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话 |
callRole | String | 角色,类型:主叫、被叫 |
CALL_END
表示通话挂断,主叫和被叫都可以收到,您可以通过监听这个事件来显示通话时长、通话类型等信息,或者来停止云端的录制流程。
let handleCallingEnd = function(event) {console.log('通话结束')}tuiCallEngine.on(EVENT.CALL_END, this.handleCallingEnd, this);
参数如下表所示:
参数 | 类型 | 含义 |
roomID | Number | 此次通话的音视频房间 ID,目前仅支持数字房间号,后续版本会支持字符串房间号 |
callMediaType | Number | 通话的媒体类型,视频通话、语音通话 |
callRole | String | 角色,枚举类型:主叫('inviter')、被叫('invitee')、未知('') |
totalTime | Number | 此次通话的时长,单位: 秒 |
userID | String | 表示引起通话结束 userID |
callEnd | Number | 此次通话的时长(后续将废弃),单位: 秒 |
message | string | 信息字段(后续将废弃) |
callId | String | 本次通话的唯一 ID。v1.5.1+ 版本支持 |
SDK_READY
SDK Ready 回调。
let handleSDKReady = function(event) {console.log('SDK Ready 回调')}tuiCallEngine.on(EVENT.SDK_READY, this.handleSDKReady, this);
KICKED_OUT
被踢下线。
let handleKickedOut = function(event) {console.log('被踢下线')}tuiCallEngine.on(EVENT.KICKED_OUT, this.handleKickedOut, this);
CALL_MODE
切换通话模式。
let handleCallMode = function(event) {console.log('切换通话模式')}tuiCallEngine.on(EVENT.CALL_MODE, this.handleCallMode, this);
ERROR
监听 SDK 的错误信息。
let handleError = function(event) {console.log('错误信息')}tuiCallEngine.on(EVENT.ERROR, this.handleError, this);
ON_USER_NETWORK_QUALITY_CHANGED
所有用户网络质量的事件
注意:
v2.2.4+ 支持。
let handleOnUserNetworkQualityChange = function(event) {console.log(event.networkQualityList);};tuiCallEngine.on(EVENT.ON_USER_NETWORK_QUALITY_CHANGED, this.handleOnUserNetworkQualityChange, this);
参数如下表所示:
参数 | 类型 | 含义 |
networkQualityList | Array<Object> | 网络状态,根据 userID 可以获取对应用户当前的网络质量。例如: networkQualityList: [{ userId: quality }] 。网络质量说明: quality = 0,网络状况未知 quality = 1,网络状况极佳 quality = 2,网络状况较好 quality = 3,网络状况一般 quality = 4,网络状况差 quality = 5,网络状况极差 quality = 6,网络链接已断开 |