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_RESP 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫拒接:主叫会同时抛出 REJECT 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫忙线:主叫会同时抛出 LINE_BUSY 和 CALLING_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_RESP 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫拒接:主叫会同时抛出 REJECT 和 CALLING_CANCEL 事件,userID 为主叫;被叫抛出 CALLING_CANCEL 事件,userID 为被叫;
被叫忙线:主叫会同时抛出 LINE_BUSY 和 CALLING_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 | 新通话类型 |