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

TUICallEvent API 简介

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

事件列表

EVENT
描述
SDK 内部发生了错误
SDK 进入 ready 状态时收到该事件
重复登录,收到该事件说明被移出房间
如果有用户接听,那么会收到此事件
如果有用户同意进入通话,那么会收到此事件
如果有用户同意离开通话,那么会收到此事件
用户拒绝通话,会收到该事件
邀请用户无应答,会收到该事件
邀请方忙线,会收到该事件
远端用户开启/关闭了摄像头, 会收到该事件
远端用户开启/关闭了麦克风, 会收到该事件
远端用户说话音量调整, 会收到该事件
群聊更新邀请列表收到该事件
被邀请进行通话,会收到该事件
通话请求的事件
通话未建立时,通话的各端都会抛出该事件
通话接通时抛出的事件
收到该事件说明本次通话结束了
设备列表更新收到该事件
通话类型切换收到该事件

ERROR

SDK 内部发生了错误,可以通过监听该事件,捕获底层 SDK 的内部错误。
let onError = function(error) {
console.log(error.code, error.msg);
};
tuiCallEngine.on(TUICallEvent.ERROR, onError);
参数如下表所示:
参数
类型
含义
code
int
错误码
msg
String
错误信息

SDK_READY

SDK 进入 ready 状态时收到该事件。
let onSDKReady = function(event) {
console.log(event);
};
tuiCallEngine.on(TUICallEvent.SDK_READY, onSDKReady);

KICKED_OUT

重复登录,收到该事件说明被踢出房间。
let handleOnKickedOut = function(event) {
console.log(event);
};
tuiCallEngine.on(TUICallEvent.KICKED_OUT, handleOnKickedOut);

USER_ACCEPT

如果有用户接听,其他用户都会收到该事件,userID 就是接听的用户。
1. 1v1 通话下:被叫接通,主叫会抛出该事件。
2. 群组通话下:A 呼叫 B、C,B 接通,A、C 都会抛出该事件,事件的 userID 都是 B。同理 C 接通,A、B 都会抛出该事件,事件的 userID 都是 C。
let handleUserAccept = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.USER_ACCEPT, handleUserAccept);
参数如下表所示:
参数
类型
含义
userID
String
接听的用户 ID

USER_ENTER

如果有用户同意进入通话,其他用户都会收到该事件,userID 就是同意进入通话的用户。
let handleUserEnter = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.USER_ENTER, handleUserEnter);
参数如下表所示:
参数
类型
含义
userID
String
进房的用户 ID

USER_LEAVE

有用户离开此次通话时,通话中的其他用户都会收到该事件,userID 就是离开通话的用户。
let handleUserLeave = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.USER_LEAVE, handleUserLeave);
参数如下表所示:
参数
类型
含义
userID
String
退房的用户 ID

REJECT

通话被拒绝事件
1. 在 1v1 通话中,只有主叫方会收到拒绝事件,userID 就是被叫用户。
2. 在群组通话中,所有被邀请者都可以收到该事件,userID 就是拒绝通话的用户。
let handleInviteeReject = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.REJECT, handleInviteeReject);
参数如下表所示:
参数
类型
含义
userID
String
拒绝通话的用户 ID

NO_RESP

邀请用户无应答事件。
在 1v1 通话中,只有发起方会收到无人应答的事件。例如 A 邀请 B,B 不应答,A 可以收到该事件。
在群组通话中,所有被邀请人均能收到该事件。例如 A 邀请 B、C 进入通话,B 不应答,A、C 均能收到该事件。
let handleNoResponse = function(event) {
console.log(event.sponsor, event.userIDList);
};
tuiCallEngine.on(TUICallEvent.NO_RESP, handleNoResponse);
参数如下表所示:
参数
类型
含义
sponsor
String
发起方的用户 ID
userIDList
Array<String>
触发超时无响应的用户列表

LINE_BUSY

通话忙线事件。
let handleLineBusy = function(event) {
console.log(event)
};
tuiCallEngine.on(TUICallEvent.LINE_BUSY, handleLineBusy);
参数如下表所示:
参数
类型
含义
userID
String
忙线用户 ID

USER_VIDEO_AVAILABLE

远端用户开启/关闭了摄像头, 会收到该事件。
let handleUserVideoChange = function(event) {
console.log(event.userID, event.isVideoAvailable);
};
tuiCallEngine.on(TUICallEvent.USER_VIDEO_AVAILABLE, handleUserVideoChange);
参数如下表所示:
参数
类型
含义
userID
String
远端用户 ID
isVideoAvailable
Boolean
true 远端用户打开摄像头;false 远端用户关闭摄像头

USER_AUDIO_AVAILABLE

远端用户开启/关闭了麦克风, 会收到该事件。
let handleUserAudioChange = function(event) {
console.log(event.userID, event.isAudioAvailable);
};
tuiCallEngine.on(TUICallEvent.USER_AUDIO_AVAILABLE, handleUserAudioChange);
参数如下表所示:
参数
类型
含义
userID
String
远端用户 ID
isAudioAvailable
Boolean
true 远端用户打开麦克风;false 远端用户关闭麦克风

USER_VOICE_VOLUME

远端用户说话音量调整, 会收到该事件。
let handleUserVoiceVolumeChange = function(event) {
console.log(event.volumeMap);
};
tuiCallEngine.on(TUICallEvent.USER_VOICE_VOLUME, handleUserVoiceVolumeChange);
参数如下表所示:
参数
类型
含义
volumeMap
Array<Object>
音量表,根据每个 userid 可以获取对应的音量大小,音量最小值0,音量最大值100

GROUP_CALL_INVITEE_LIST_UPDATE

群聊更新邀请列表收到该事件。
let handleGroupInviteeListUpdate = function(event) {
console.log(event.userIDList);
};
tuiCallEngine.on(TUICallEvent.GROUP_CALL_INVITEE_LIST_UPDATE, handleGroupInviteeListUpdate);
参数如下表所示:
参数
类型
含义
userIDList
Array<String>
群组更新邀请列表

INVITED

收到一个新的来电请求事件,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
注意:
计划后续版本废弃
let handleNewInvitationReceived = function(event) {
console.log(event.sponsor, event.userIDList, event.isFromGroup, event.inviteData, event.inviteDate, event.inviteID);
};
tuiCallEngine.on(TUICallEvent.INVITED, handleNewInvitationReceived);
参数如下表所示:
参数
类型
含义
sponsor
String
邀请者
userIDList
Array<String>
同时还被邀请的人
isFromGroup
Boolean
是否是群组通话
inviteData
Object
呼叫数据
inviteID
String
邀请 ID,标识一次邀请
userData
String
扩展字段:用于在邀请信令中增加扩展信息
callId
String
本次通话的唯一 ID。v1.4.6+ 版本支持
roomID
Number
此次通话的音视频房间 ID。v1.4.6+ 版本支持
callMediaType
Number
通话的媒体类型,视频通话、语音通话。v1.4.6+ 版本支持
callRole
String
角色,枚举类型:主叫、被叫。v1.4.6+ 版本支持

ON_CALL_RECEIVED

收到一个新的来电请求事件,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
注意:
v1.4.6+ 版本支持
let handleOnCallReceived = function(event) {
console.log(event)
};
tuiCallEngine.on(TUICallEvent.ON_CALL_RECEIVED, handleOnCallReceived);
参数如下表所示:
参数
类型
含义
sponsor
String
邀请者
userIDList
Array<String>
同时还被邀请的人
isFromGroup
Boolean
是否是群组通话
inviteData
Object
呼叫数据
inviteID
String
邀请 ID,标识一次邀请
userData
String
扩展字段:用于在邀请信令中增加扩展信息
callId
String
本次通话的唯一 ID
roomID
Number
此次通话的音视频房间 ID
callMediaType
Number
通话的媒体类型,视频通话、语音通话
callRole
String
角色,枚举类型:主叫、被叫

CALLING_CANCEL

如果通话未建立,都会抛出该事件。您可以通过监听该事件来实现类似未接来电、重置 UI 状态等显示逻辑。通话未建立的场景如下:
主叫取消:主叫抛出该事件,userID 为主叫;被叫也会抛出该事件,userID 为被叫;
被叫超时:主叫会同时抛出 NO_RESPCALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫拒接:主叫会同时抛出 REJECTCALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫忙线:主叫会同时抛出 LINE_BUSYCALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
注意:
计划后续版本废弃
let handleCallingCancel = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.CALLING_CANCEL, handleCallingCancel);
参数如下表所示:
参数
类型
含义
userID
String
通话取消的用户 ID
callId
String
本次通话的唯一 ID。v1.4.6+ 版本支持
roomID
Number
此次通话的音视频房间 ID。v1.4.6+ 版本支持
callMediaType
Number
通话的媒体类型,视频通话、语音通话。v1.4.6+ 版本支持
callRole
String
角色,枚举类型:主叫、被叫。v1.4.6+ 版本支持

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.4.6+ 版本支持
let handleOnCallCanceled = function(event) {
console.log(event.userID);
};
tuiCallEngine.on(TUICallEvent.ON_CALL_CANCELED, handleOnCallCanceled);
参数如下表所示:
参数
类型
含义
userID
String
通话取消的用户 ID
callId
String
本次通话的唯一 ID
roomID
Number
此次通话的音视频房间 ID
callMediaType
Number
通话的媒体类型,视频通话、语音通话
callRole
String
角色,枚举类型:主叫、被叫

ON_CALL_BEGIN

表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来开启云端录制、内容审核等流程。
注意:
v1.4.6+ 版本支持
let handleOnCallBegin = function(event) {
console.log(event)
};
tuiCallEngine.on(TUICallEvent.ON_CALL_BEGIN, handleOnCallBegin);
参数如下表所示:
参数
类型
含义
callId
String
本次通话的唯一 ID
roomID
Number
此次通话的音视频房间 ID
callMediaType
Number
通话的媒体类型,视频通话、语音通话
callRole
String
角色,类型:主叫、被叫

CALLING_END

表示通话结束,主叫和被叫抛出该事件。您可以通过监听这个事件来显示通话时长、通话类型等信息,或者来停止云端的录制流程。
let handleCallingEnd = function(event) {
console.log(event.userID, event.);
};
tuiCallEngine.on(TUICallEvent.CALLING_END, handleCallingEnd);
参数如下表所示:
参数
类型
含义
roomID
Number
此次通话的音视频房间 ID,目前仅支持数字房间号,后续版本会支持字符串房间号
callMediaType
Number
通话的媒体类型,视频通话、语音通话
callRole
String
角色,枚举类型:主叫('inviter')、被叫('invitee')、未知('')
totalTime
Number
此次通话的时长,单位: 秒
userID
String
通话结束的 userID。
callId
String
本次通话的唯一 ID。v1.4.6+ 版本支持
callEnd
Number
此次通话的时长(后续将废弃),单位: 秒

DEVICED_UPDATED

设备列表更新收到该事件。
let handleDeviceUpdated = function({ microphoneList, cameraList, currentMicrophoneID, currentCameraID }) {
console.log(microphoneList, cameraList, currentMicrophoneID, currentCameraID)
};
tuiCallEngine.on(TUICallEvent.DEVICED_UPDATED, handleDeviceUpdated);

CALL_TYPE_CHANGED

通话类型切换收到该事件。
let handleCallTypeChanged = function({ oldCallType, newCallType }) {
console.log(oldCallType, newCallType)
};
tuiCallEngine.on(TUICallEvent.CALL_TYPE_CHANGED, handleDeviceUpdated);
参数如下表所示:
参数
类型
含义
oldCallType
Number
旧通话类型
newCallType
Number
新通话类型