有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

TUICallEvent API 简介

TUICallEvent API 是音视频通话组件的事件接口。

事件表

事件名
说明
INVITED
被邀请通话
通话请求的事件
用户接听
用户进入通话
用户离开通话
用户更新
REJECT
用户拒绝通话
NO_RESP
用户无响应
LINE_BUSY
用户忙线
通话被取消
通话未建立时,通话的各端都会抛出该事件
通话接通时抛出的事件
CALL_END
通话结束
SDK_READY
SDK Ready 回调
被踢下线
CALL_MODE
切换通话模式
ERROR
错误信息

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_RESPCALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫拒接:主叫会同时抛出 REJECTCALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫忙线:主叫会同时抛出 LINE_BUSYCALLING_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);