TUICallEvent

TUICallEvent API 简介

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

事件列表

EVENT
描述
通话过程中错误事件
SDK 进入 ready 状态时收到该事件
用户重复登录,被踢下线
xxxx 用户接通的事件
xxxx 用户加入通话的事件
xxxx 用户离开通话的事件
xxxx 用户拒绝通话的事件
xxxx 用户不响应的事件
xxxx 用户忙线的事件
xxxx 用户是否有视频流的事件
xxxx 用户是否有音频流的事件
所有用户音量大小的反馈事件
群聊更新邀请列表收到该事件
通话接通的事件,v1.4.6+ 支持
通话请求的事件, 后续废弃,建议使用 TUICallEvent.ON_CALL_RECEIVED
通话请求的事件,v1.4.6+ 支持
通话取消的事件, 后续废弃,建议使用 TUICallEvent.ON_CALL_CANCELED
通话取消的事件,v1.4.6+ 支持
通话接通时抛出的事件
通话结束的事件
设备列表更新的事件
通话的媒体类型发生改变的回调
所有用户网络质量的事件,v3.0.7+ 支持

ERROR

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

SDK_READY

TUICallEngine 依赖 @tencentcloud/chat SDK,登录成功后才会出发 SDK_READY 事件,然后才能使用 SDK 的各项功能。
let onSDKReady = function(event) {
console.log(event);
};
tuiCallEngine.on(TUICallEvent.SDK_READY, onSDKReady);

KICKED_OUT

当前用户被踢下线,此时可以 UI 提示用户,并再次重新调用登录。
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>
无响应的用户 ID 列表

LINE_BUSY

通话忙线事件。例如:B 正在通话时,此时 A 呼叫 B,A 会抛出事件。
let handleLineBusy = function(event) {
console.log(event);
};
tuiCallEngine.on(TUICallEvent.LINE_BUSY, handleLineBusy);
参数如下表所示:
参数
类型
含义
userID
String
忙线用户 ID

USER_VIDEO_AVAILABLE

视频通话中一个用户开启/关闭了摄像头, 通话的其他用户都会抛出该事件。例如:A 和 B 在进行视频通话,A 开/关摄像头,B 会抛出该事件。
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

音视频通话中一个用户开启/关闭了麦克风, 通话的其他用户都会抛出该事件。例如:A 和 B 在进行音视频通话,A 开/关麦克风,B 会抛出该事件。
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

音视频通话中用户音量变化时,通话的其他用户都会抛出该事件。例如:A 和 B 在进行音视频通话,A 音量变化,B 会抛出该事件。
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

收到一个新的来电请求事件,被叫会收到,您可以通过监听这个事件,来决定是否显示通话接听界面。
注意:
计划后续版本废弃,建议使用:ON_CALL_RECEIVED

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 状态等显示逻辑。通话未建立的场景如下:
注意:
计划后续版本废弃,建议使用:ON_CALL_CANCELED

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
此次通话的时长(后续将废弃,请使用 totalTime),单位: 秒

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
新通话类型

ON_USER_NETWORK_QUALITY_CHANGED

所有用户网络质量的事件
注意:
v3.0.7+ 支持。
let handleOnUserNetworkQualityChange = function(event) {
console.log(event.networkQualityList);
};
tuiCallEngine.on(TUICallEvent.ON_USER_NETWORK_QUALITY_CHANGED, handleOnUserNetworkQualityChange);
参数如下表所示:
参数
类型
含义
networkQualityList
Array<Object>
网络状态,根据 userID 可以获取对应用户当前的网络质量(仅表示本地的上下行)。例如: networkQualityList: [{ userId: quality }]网络质量说明: quality = 0,网络状况未知 quality = 1,网络状况极佳 quality = 2,网络状况较好 quality = 3,网络状况一般 quality = 4,网络状况差 quality = 5,网络状况极差 quality = 6,网络链接已断开