@tencentcloud/tuiroom-engine-js
Version:
TUIRoomEngine Web SDK
1,341 lines (1,337 loc) • 122 kB
TypeScript
import { ChatSDK } from '@tencentcloud/chat';
export { default as TIM, default as TencentCloudChat } from '@tencentcloud/chat';
import TRTCCloud, { TRTCScreenCaptureSourceInfo, TRTCDeviceInfo } from 'trtc-cloud-js-sdk';
export { Rect, default as TRTCCloud, TRTCDeviceInfo, TRTCDeviceState, TRTCDeviceType, TRTCLogLevel, TRTCScreenCaptureSourceInfo, TRTCScreenCaptureSourceType, TRTCVideoEncParam, TRTCVideoFillMode, TRTCVideoMirrorType, TRTCVideoResolution, TRTCVideoResolutionMode, TRTCVideoRotation, TRTCVideoStreamType, TRTCVolumeInfo } from 'trtc-cloud-js-sdk';
declare enum TUIErrorCode {
ERR_SUCC = 0,
ERR_FAILED = -1,
ERR_FREQ_LIMIT = -2,
ERR_REPEAT_OPERATION = -3,
ERR_SDKAPPID_NOT_FOUND = -1000,
ERR_INVALID_PARAMETER = -1001,
ERR_SDK_NOT_INITIALIZED = -1002,
ERR_PERMISSION_DENIED = -1003,
ERR_REQUIRE_PAYMENT = -1004,
ERR_CAMERA_START_FAILED = -1100,
ERR_CAMERA_NOT_AUTHORIZED = -1101,
ERR_CAMERA_OCCUPIED = -1102,
ERR_CAMERA_DEVICE_EMPTY = -1103,
ERR_MICROPHONE_START_FAILED = -1104,
ERR_MICROPHONE_NOT_AUTHORIZED = -1105,
ERR_MICROPHONE_OCCUPIED = -1106,
ERR_MICROPHONE_DEVICE_EMPTY = -1107,
ERR_GET_SCREEN_SHARING_TARGET_FAILED = -1108,
ERR_START_SCREEN_SHARING_FAILED = -1109,
ERR_ROOM_ID_NOT_EXIST = -2100,
ERR_OPERATION_INVALID_BEFORE_ENTER_ROOM = -2101,
ERR_EXIT_NOT_SUPPORTED_FOR_ROOM_OWNER = -2102,
ERR_OPERATION_NOT_SUPPORTED_IN_CURRENT_ROOM_TYPE = -2103,
ERR_ROOM_ID_INVALID = -2105,
ERR_ROOM_ID_OCCUPIED = -2106,
ERR_ROOM_NAME_INVALID = -2107,
ERR_ALREADY_IN_OTHER_ROOM = -2108,
ERR_NEED_PASSWORD = -2109,
ERR_WRONG_PASSWORD = -2110,
ERR_ROOM_USER_FULL = -2111,
ERR_USER_NOT_EXIST = -2200,
ERR_USER_NOT_ENTERED = -2201,
ERR_NEED_OWNER_PERMISSION = -2300,
ERR_NEED_ADMIN_PERMISSION = -2301,
ERR_REQUEST_NO_PERMISSION = -2310,
ERR_REQUEST_ID_INVALID = -2311,
ERR_REQUEST_ID_REPEAT = -2312,
ERR_REQUEST_ID_CONFLICT = -2313,
ERR_MAX_SEAT_COUNT_LIMIT = -2340,
ERR_ALREADY_IN_SEAT = -2341,
ERR_SEAT_OCCUPIED = -2342,
ERR_SEAT_LOCKED = -2343,
ERR_SEAT_INDEX_NOT_EXIST = -2344,
ERR_USER_NOT_IN_SEAT = -2345,
ERR_ALL_SEAT_OCCUPIED = -2346,
ERR_SEAT_NOT_SUPPORT_LINK_MIC = -2347,
ERR_OPEN_MICROPHONE_NEED_SEAT_UNLOCK = -2360,
ERR_OPEN_MICROPHONE_NEED_PERMISSION_FROM_ADMIN = -2361,
ERR_OPEN_CAMERA_NEED_SEAT_UNLOCK = -2370,
ERR_OPEN_CAMERA_NEED_PERMISSION_FROM_ADMIN = -2371,
ERR_OPEN_SCREEN_SHARE_NEED_SEAT_UNLOCK = -2372,
ERR_OPEN_SCREEN_SHARE_NEED_PERMISSION_FROM_ADMIN = -2373,
ERR_SEND_MESSAGE_DISABLED_FOR_ALL = -2380,
ERR_SEND_MESSAGE_DISABLED_FOR_CURRENT = -2381
}
type TUIRoomInfo = {
roomId: string;
roomName: string;
roomType: TUIRoomType;
isSeatEnabled: boolean;
seatMode: TUISeatMode;
password: string;
isMicrophoneDisableForAllUser: boolean;
isScreenShareDisableForAllUser: boolean;
isCameraDisableForAllUser: boolean;
isMessageDisableForAllUser: boolean;
maxSeatCount: number;
roomOwner: string;
ownerId: string;
ownerName: string;
ownerAvatarUrl: string;
createTime: number;
roomMemberCount: number;
};
type TUIEnterRoomOptions = {
password?: string;
};
type TUILoginUserInfo = {
userId: string;
userName: string;
avatarUrl: string;
customInfo: Record<string, any>;
};
type TUISeatLockParams = {
lockSeat: boolean;
lockVideo: boolean;
lockAudio: boolean;
};
declare enum TUIRole {
kRoomOwner = 0,
kAdministrator = 1,
kGeneralUser = 2
}
/**
* 消息结构体
* @typedef {object} TUIMessage
* @property {string} messageId 消息 Id
* @property {string} message 消息内容
* @property {number} timestamp 时间戳信息, 精确到秒
* @property {TUIRole} userId 用户 Id
* @property {boolean} userName 用户名称
* @property {boolean} avatarUrl 用户头像地址
*/
type TUIMessage = {
messageId: string;
message: string;
timestamp: number;
userId: string;
userName: string;
avatarUrl: string;
};
declare enum TUIVideoQuality {
kVideoQuality_360p = 1,
kVideoQuality_540p = 2,
kVideoQuality_720p = 3,
kVideoQuality_1080p = 4
}
declare enum TUIAudioQuality {
kAudioProfileSpeech = 0,
kAudioProfileDefault = 1,
kAudioProfileMusic = 2
}
declare enum TUIVideoStreamType {
kCameraStream = 0,
kScreenStream = 1,
kCameraStreamLow = 2
}
declare enum TUINetworkQuality {
kQualityUnknown = 0,
kQualityExcellent = 1,
kQualityGood = 2,
kQualityPoor = 3,
kQualityBad = 4,
kQualityVeryBad = 5,
kQualityDown = 6
}
/**
* 消息结构体
* @typedef {object} TUINetwork
* @property {string} userId 用户 Id
* @property {TUINetworkQuality} quality 网络质量
* @property {number} upLoss 上行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息
* @property {TUIRole} downLoss 下行丢包率,单位 (%) 该数值越小越好,目前仅本地用户有该信息
* @property {Number} delay 网络延迟,单位 ms,目前仅本地用户有该信息
*/
type TUINetwork = {
userId: string;
quality: TUINetworkQuality;
upLoss: number;
downLoss: number;
delay: number;
};
/**
* 视频编码参数
* @typedef {object} TUIVideoEncoderParams
* @property {number} fps 帧率设置
* @property {number} bitrate 目标编码码率设置
* @property {TUIVideoQuality} quality 上行视频分辨率
* @property {TUIVideoQuality} videoResolution 上行视频分辨率(自 v1.6.0 版本开始支持,v1.6.0 之前版本请使用 quality 参数)
* @property {TUIResolutionMode} resolutionMode 横竖屏模式
*/
type TUIVideoEncoderParams = {
quality?: TUIVideoQuality;
videoResolution: TUIVideoQuality;
fps: number;
bitrate: number;
resolutionMode: TUIResolutionMode;
};
declare enum TUIRoomType {
kConference = 1,
kLive = 2
}
declare enum TUISeatMode {
kFreeToTake = 1,
kApplyToTake = 2
}
declare enum TUIMediaDevice {
kMicrophone = 1,
kCamera = 2,
kScreen = 3
}
declare enum TUICaptureSourceType {
kWindow = 0,
kScreen = 1
}
declare enum TUIChangeReason {
kChangedBySelf = 0,
kChangedByAdmin = 1
}
declare enum TUIKickedOutOfRoomReason {
kKickedByAdmin = 0,
kKickedByLoggedOnOtherDevice = 1,
kKickedByServer = 2
}
declare enum TUIRequestAction {
kInvalidAction = 0,
kRequestToOpenRemoteCamera = 1,
kRequestToOpenRemoteMicrophone = 2,
kRequestToConnectOtherRoom = 3,
kRequestToTakeSeat = 4,
kRequestRemoteUserOnSeat = 5,
kApplyToAdminToOpenLocalCamera = 6,
kApplyToAdminToOpenLocalMicrophone = 7,
kApplyToAdminToOpenLocalScreenShare = 8
}
declare enum TUIRequestCallbackType {
kRequestAccepted = 0,
kRequestRejected = 1,
kRequestCancelled = 2,
kRequestTimeout = 3,
kRequestError = 4
}
declare enum TRTCRole {
kAnchor = 0,
kAudience = 1
}
declare enum TUIResolutionMode {
kResolutionMode_Landscape = 0,
kResolutionMode_Portrait = 1
}
declare enum TUIRoomDismissedReason {
kByOwner = 1,
kByServer = 2
}
type TUIUserInfo = {
userId: string;
userName: string;
nameCard: string;
avatarUrl: string;
userRole: TUIRole;
hasAudioStream: boolean;
hasVideoStream: boolean;
hasScreenStream: boolean;
isMessageDisabled: boolean;
roomCustomInfo: Record<string, any>;
};
type TUISeatInfo = {
index: number;
userId: string;
userName: string;
nameCard: string;
avatarUrl: string;
locked: boolean;
isVideoLocked: boolean;
isAudioLocked: boolean;
};
type TUIRequest = {
requestAction: TUIRequestAction;
timestamp: number;
requestId: string;
userId: string;
userName: string;
nameCard: string;
avatarUrl: string;
content: string;
};
type TUIRequestCallback = {
requestCallbackType: TUIRequestCallbackType;
requestId: string;
userId: string;
code: number;
message: string;
};
declare enum TUIMediaDeviceType {
kMediaDeviceTypeUnknown = -1,
kMediaDeviceTypeAudioInput = 0,
kMediaDeviceTypeAudioOutput = 1,
kMediaDeviceTypeVideoCamera = 2
}
declare enum TUIMediaDeviceState {
kMediaDeviceStateAdd = 0,
kMediaDeviceStateRemove = 1,
kMediaDeviceStateActive = 2
}
declare enum TUIAudioRoute {
kAudioRouteSpeakerphone = 0,
kAudioRouteEarpiece = 1
}
type TUIDeviceInfo = {
deviceId: string;
deviceName: string;
deviceProperties?: {
supportedResolution?: {
width: number;
height: number;
}[];
};
};
declare enum TUIConferenceStatus {
kConferenceStatusNone = 0,
kConferenceStatusNotStarted = 1,
kConferenceStatusRunning = 2
}
declare enum TUIConferenceCancelReason {
kConferenceCancelReasonCancelledByAdmin = 0,
kConferenceCancelReasonRemovedFromAttendees = 1
}
type TUIConferenceInfo = {
scheduleStartTime: number;
scheduleEndTime: number;
scheduleAttendees: string[];
reminderSecondsBeforeStart: number;
status: TUIConferenceStatus;
basicRoomInfo: TUIRoomInfo;
};
type TUIConferenceModifyInfo = {
scheduleStartTime?: number;
scheduleEndTime?: number;
basicRoomInfo: {
roomId: string;
roomName?: string;
};
};
declare enum TUIInvitationStatus {
kNone = 0,
kPending = 1,
kTimeout = 2,
kAccepted = 3,
kRejected = 4
}
declare enum TUIInvitationCode {
kSuccess = 0,
kAlreadyInInvitationList = 1,
kAlreadyInConference = 2
}
declare enum TUIInvitationRejectedReason {
kRejectToEnter = 0,
kInOtherConference = 1
}
type TUIInvitation = {
status: TUIInvitationStatus;
invitee: TUIUserInfo;
inviter: TUIUserInfo;
};
/**
* **TUIRoomEngine 事件列表**<br>
* @namespace TUIRoomEvents
* @example
* import TUIRoomEngine, { TUIRoomEvents } from '@tencentcloud/tuiroom-engine-js';
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onError, (error) => {
* console.log('roomEngine.error', error);
* })
*/
declare enum TUIRoomEvents {
/**
*
* @description 错误事件
* @event TUIRoomEvents#onError
* @param {object} options
* @param {number} options.code 错误代码
* @param {string} options.message 错误信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onError, (error) => {
* console.log('TUIRoomError error', error);
* })
*/
onError = "onError",
/**
* @description 踢出房间事件
* @default 'onKickedOutOfRoom'
* @event TUIRoomEvents#onKickedOutOfRoom
* @param {object} options
* @param {string} options.roomId 房间号
* @param {TUIKickedOutOfRoomReason} options.reason 用户被踢出房间枚举
* @param {string} options.message 踢出房间信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onKickedOutOfRoom, ({ roomId, reason, message }) => {
* console.log('roomEngine.onKickedOutOfRoom', roomId, reason, message);
* });
*/
onKickedOutOfRoom = "onKickedOutOfRoom",
/**
* @description 当前用户被踢下线
* @default 'onKickedOffLine'
* @event TUIRoomEvents#onKickedOffLine
* @param {string} options.message 用户被踢下线信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onKickedOffLine, ({ message }) => {
* console.log('roomEngine.onKickedOffLine', message);
* });
*/
onKickedOffLine = "onKickedOffLine",
/**
* @description userSig 过期事件
* @default 'onUserSigExpired'
* @event TUIRoomEvents#onUserSigExpired
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserSigExpired, () => {
* console.log('roomEngine.onUserSigExpired');
* });
*/
onUserSigExpired = "onUserSigExpired",
/**
* @description 主持人销毁房间事件
* @default 'onRoomDismissed'
* @event TUIRoomEvents#onRoomDismissed
* @param {object} options
* @param {string} options.roomId 房间号
* @param {TUIRoomDismissedReason} options.reason 房间解散原因枚举,该字段自 v2.3.0 开始支持
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRoomDismissed, ({ roomId,reason }) => {
* console.log('roomEngine.onRoomDismissed', roomId,reason);
* });
*/
onRoomDismissed = "onRoomDismissed",
/**
* @description 房间名字修改事件
* @default 'onRoomNameChanged'
* @event TUIRoomEvents#onRoomChanged
* @param {object} options
* @param {string} options.roomName 房间名字
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRoomNameChanged, ({ roomId, roomName }) =>{
* console.log('roomEngine.onRoomNameChanged', roomId, roomName);
* });
*/
onRoomNameChanged = "onRoomNameChanged",
/**
* @description 上麦模式修改事件
* @default 'onRoomSeatModeChanged'
* @event TUIRoomEvents#onRoomSeatModeChanged
* @param {object} options
* @param {TUISeatMode} options.seatMode 房间上麦模式
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRoomSeatModeChanged, ({ roomId, seatMode }) =>{
* console.log('roomEngine.onRoomSeatModeChanged', roomId, seatMode);
* });
*/
onRoomSeatModeChanged = "onRoomSeatModeChanged",
/**
* @description 房间内人数变化事件
* @default 'onRoomUserCountChanged'
* @event TUIRoomEvents#onRoomUserCountChanged
* @param {object} options
* @param {string} options.roomId 房间号
* @param {number} options.userCount 房间内人数
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRoomUserCountChanged, ({ roomId, userCount }) =>{
* console.log('roomEngine.onRoomUserCountChanged', roomId, userCount);
* });
*/
onRoomUserCountChanged = "onRoomUserCountChanged",
/**
* @description 所有成员摄像头使用权限改变事件
* @default 'onAllUserCameraDisableChanged'
* @event TUIRoomEvents#onAllUserCameraDisableChanged
* @param {object} options
* @param {boolean} options.isDisable 是否允许使用摄像头
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onAllUserCameraDisableChanged, ({ isDisable }) =>{
* console.log('roomEngine.onAllUserCameraDisableChanged', isDisable);
* });
*/
onAllUserCameraDisableChanged = "onAllUserCameraDisableChanged",
/**
* @since v2.2.0
* @description 房间内所有用户屏幕分享被禁用事件
* @default 'onScreenShareForAllUserDisableChanged'
* @event TUIRoomEvents#onScreenShareForAllUserDisableChanged
* @param {object} options
* @param {boolean} options.isDisable 是否开启禁止屏幕分享
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onScreenShareForAllUserDisableChanged, ({ isDisable }) =>{
* console.log('roomEngine.onScreenShareForAllUserDisableChanged', isDisable);
* });
*/
onScreenShareForAllUserDisableChanged = "onScreenShareForAllUserDisableChanged",
/**
* @description 所有成员麦克风使用权限改变事件
* @default 'onAllUserMicrophoneDisableChanged'
* @event TUIRoomEvents#onAllUserMicrophoneDisableChanged
* @param {object} options
* @param {boolean} options.isDisable 是否允许使用麦克风
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onAllUserMicrophoneDisableChanged, ({ isDisable }) =>{
* console.log('roomEngine.onAllUserMicrophoneDisableChanged', isDisable);
* });
*/
onAllUserMicrophoneDisableChanged = "onAllUserMicrophoneDisableChanged",
/**
* @description 所有成员发送消息权限改变事件
* @default 'onSendMessageForAllUserDisableChanged'
* @event TUIRoomEvents#OnSendMessageForAllUserDisableChanged
* @param {object} options
* @param {boolean} options.isDisable 是否被允许
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onSendMessageForAllUserDisableChanged, ({ isDisable }) =>{
* console.log('roomEngine.onSendMessageForAllUserDisableChanged', isDisable);
* });
*/
onSendMessageForAllUserDisableChanged = "onSendMessageForAllUserDisableChanged",
/**
* @description 房间最大麦位数修改事件
* @default 'onRoomMaxSeatCountChanged'
* @event TUIRoomEvents#onRoomMaxSeatCountChanged
* @param {object} options
* @param {boolean} options.maxSeatNumber 最大麦位数
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRoomMaxSeatCountChanged, ({ maxSeatNumber }) =>{
* console.log('roomEngine.onRoomMaxSeatCountChanged', maxSeatNumber);
* });
*/
onRoomMaxSeatCountChanged = "onRoomMaxSeatCountChanged",
/**
* @description 远端用户进入房间事件
* @default 'onRemoteUserEnterRoom'
* @event TUIRoomEvents#onRemoteUserEnterRoom
* @param {object} options
* @param {string} options.roomId 房间号
* @param {TUIUserInfo} options.userInfo 用户信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRemoteUserEnterRoom, ({ roomId, userInfo }) => {
* console.log('roomEngine.onRemoteUserEnterRoom', roomId, userInfo);
* });
*/
onRemoteUserEnterRoom = "onRemoteUserEnterRoom",
/**
* @description 远端用户离开房间事件
* @default 'onRemoteUserLeaveRoom'
* @event TUIRoomEvents#onRemoteUserLeaveRoom
* @param {object} options
* @param {string} options.roomId 房间号
* @param {TUIUserInfo} options.userInfo 用户信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRemoteUserLeaveRoom, ({ roomId, userInfo }) => {
* console.log('roomEngine.onRemoteUserLeaveRoom', roomId, userInfo);
* });
*/
onRemoteUserLeaveRoom = "onRemoteUserLeaveRoom",
/**
* @since v2.5.0
* @description 房间内用户信息改变事件
* @default 'onUserInfoChanged'
* @event TUIRoomEvents#onUserInfoChanged
* @param {object} options
* @param {TUIUserInfo} options.userInfo 用户信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserInfoChanged, ({ userInfo }) => {
* console.log('roomEngine.onUserInfoChanged', userInfo);
* });
*/
onUserInfoChanged = "onUserInfoChanged",
/**
* @description 用户角色改变事件
* @deprecated 该接口自 v2.5.0 版本废弃,请使用'onUserInfoChanged'.
* @default 'onUserRoleChanged'
* @event TUIRoomEvents#onUserRoleChanged
* @param {object} options
* @param {string} options.userId 用户Id
* @param {TUIRole} options.userRole 用户变更后的角色
* @param {TUIUserInfo} options.userInfo 用户信息,该字段自 v2.3.0 开始支持
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserRoleChanged, ({ userInfo }) => {
* console.log('roomEngine.onUserRoleChanged', userInfo);
* });
*/
onUserRoleChanged = "onUserRoleChanged",
/**
* @description 用户视频状态改变事件
* @default 'onUserVideoStateChanged'
* @event TUIRoomEvents#onUserVideoStateChanged
* @param {object} options
* @param {string} options.userId 用户Id
* @param {TUIVideoStreamType} options.streamType 用户流类型
* @param {boolean} options.hasVideo 是否有视频流
* @param {TUIChangeReason} options.reason 变更原因
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserVideoStateChanged, ({ userId, streamType, hasVideo, reason }) => {
* console.log('roomEngine.onUserVideoStateChanged', userId, streamType, hasVideo, reason);
* });
*/
onUserVideoStateChanged = "onUserVideoStateChanged",
/**
* @description 用户音频状态改变事件
* @default 'onUserAudioStateChanged'
* @event TUIRoomEvents#onUserAudioStateChanged
* @param {object} options
* @param {string} options.userId 用户Id
* @param {boolean} options.hasVideo 是否有音频流
* @param {TUIChangeReason} options.reason 原因
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserAudioStateChanged, ({ userId, hasAudio, reason }) => {
* console.log('roomEngine.onUserAudioStateChanged', userId, hasAudio, reason);
* });
*/
onUserAudioStateChanged = "onUserAudioStateChanged",
/**
* @description 用户发送消息状态改变事件
* @default 'onSendMessageForUserDisableChanged'
* @event TUIRoomEvents#onSendMessageForUserDisableChanged
* @param {object} options
* @param {string} options.userId 成员 Id
* @param {boolean} options.isDisable 是否被允许
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onSendMessageForUserDisableChanged, ({ userId, isDisable }) =>{
* console.log('roomEngine.onSendMessageForUserDisableChanged', isDisable);
* });
*/
onSendMessageForUserDisableChanged = "onSendMessageForUserDisableChanged",
/**
* @description 用户音量改变事件
* @default 'onUserVoiceVolumeChanged'
* @event TUIRoomEvents#onUserVoiceVolumeChanged
* @param {object} options
* @param {Array<TRTCVolumeInfo>} options.userVolumeList 房间内所有用户的音量, 包含 userId 及 volume 信息,volume 区间为 1~100;
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserVoiceVolumeChanged, ({ userVolumeList }) => {
* userVolumeList.forEach(userVolume => {
* console.log('roomEngine.onUserVoiceVolumeChanged', userVolume.userId, userVolume.volume);
* })
* });
*/
onUserVoiceVolumeChanged = "onUserVoiceVolumeChanged",
/**
* @description 用户网络质量改变事件
* @default 'onUserNetworkQualityChanged'
* @event TUIRoomEvents#onUserNetworkQualityChanged
* @param {object} options
* @param {TUINetwork} options.userNetworkList 网络质量信息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserNetworkQualityChanged, ({ userNetworkList }) => {
* userNetworkList.forEach(userNetwork => {
* console.log('roomEngine.onUserNetworkQualityChanged',
* userNetwork.userId, userNetwork.quality, userNetwork.upLoss, userNetwork.downLoss, userNetwork.delay);
* })
* });
*/
onUserNetworkQualityChanged = "onUserNetworkQualityChanged",
/**
* @description 麦位列表改变事件
* @default 'onSeatListChanged'
* @event TUIRoomEvents#onSeatListChanged
* @param {object} options
* @param {Array<TUISeatInfo>} options.seatList 麦位列表
* @param {Array<TUISeatInfo>} options.seatedList 新增麦位列表
* @param {Array<TUISeatInfo>} options.leftList 离开的麦位列表
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onSeatListChanged, ({ seatList, seatedList, leftList }) => {
* console.log('roomEngine.onSeatListChanged',seatList, seatedList, leftList);
* });
*/
onSeatListChanged = "onSeatListChanged",
/**
* @description 当前用户被踢下麦事件
* @default 'onKickedOffSeat'
* @event TUIRoomEvents#onKickedOffSeat
* @param {number} options.seatIndex 麦位编号,该字段自 v2.3.0 开始支持
* @param {TUIUserInfo} options.userInfo 操作踢人的(主持人/管理员)用户信息,该字段自 v2.3.0 开始支持
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onKickedOffSeat, ({ seatIndex, userInfo }) => {
* console.log('roomEngine.onKickedOffSeat', seatIndex, userInfo);
* });
*/
onKickedOffSeat = "onKickedOffSeat",
/**
* @description 请求接收事件
* @default 'onRequestReceived'
* @event TUIRoomEvents#onRequestReceived
* @param {object} options
* @param {TUIRequest} options.request 请求接收
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRequestReceived, ({ request }) => {
* console.log('roomEngine.onRequestReceived', request);
* });
*/
onRequestReceived = "onRequestReceived",
/**
* @description 请求取消事件
* @default 'onRequestCancelled'
* @event TUIRoomEvents#onRequestCancelled
* @param {object} options
* @param {string} options.requestId 请求Id
* @param {string} options.userId 取消请求的用户Id
* @param {TUIRequest} options.request 请求信息,该字段自 v2.3.0 开始支持
* @param {TUIUserInfo} options.userInfo 处理该请求的 管理员/房主 的用户信息,该字段自 v2.3.0 开始支持
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRequestCancelled, ({ request, userInfo }) => {
* console.log('roomEngine.onRequestCancelled', request, userInfo);
* });
*/
onRequestCancelled = "onRequestCancelled",
/**
* @description 请求被其他 管理员/房主 处理事件
* @default 'onRequestProcessed'
* @event TUIRoomEvents#onRequestProcessed
* @param {object} options
* @param {string} options.requestId 请求Id
* @param {string} options.userId 处理该请求的 管理员/房主 的用户ID
* @param {TUIRequest} options.request 请求信息,该字段自 v2.3.0 开始支持
* @param {TUIUserInfo} options.userInfo 处理该请求的 管理员/房主 的用户信息,该字段自 v2.3.0 开始支持
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onRequestProcessed, ({ request, userInfo }) => {
* console.log('roomEngine.onRequestProcessed', request, userInfo);
* });
*/
onRequestProcessed = "onRequestProcessed",
/**
* @description 接收文本消息事件
* @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件
* @default 'onReceiveTextMessage'
* @event TUIRoomEvents#onReceiveTextMessage
* @param {object} options
* @param {string} options.roomId 房间Id
* @param {TUIMessage} options.message 接收的文本消息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onReceiveTextMessage, ({ roomId, message }) => {
* console.log('roomEngine.onReceiveTextMessage', roomId, message);
* });
*/
onReceiveTextMessage = "onReceiveTextMessage",
/**
* @description 接收自定义消息事件
* @deprecated 该接口自 v2.0.0 版本废弃,请使用 tim 实例监听收消息事件
* @default 'onReceiveCustomMessage'
* @event TUIRoomEvents#onReceiveCustomMessage
* @param {object} options
* @param {string} options.roomId 房间Id
* @param {TUIMessage} options.message 接收的自定义消息
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onReceiveCustomMessage, ({ roomId, message }) => {
* console.log('roomEngine.onReceiveCustomMessage', roomId, message);
* });
*/
onReceiveCustomMessage = "onReceiveCustomMessage",
/**
* @description 设备变更事件
* @default 'onDeviceChange'
* @event TUIRoomEvents#onDeviceChange
* @param {object} options
* @param {string} options.deviceId 设备 Id
* @param {TRTCDeviceType} options.type 设备类型
* @param {TRTCDeviceState} options.state 设备变更状态
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onDeviceChange, ({ deviceId, type, state }) => {
* console.log('roomEngine.onDeviceChange', deviceId, type, state);
* });
*/
onDeviceChange = "onDeviceChange",
/**
* @description 屏幕分享停止事件,当用户使用浏览器自带的【停止分享】按钮结束屏幕共享时,该用户会收到 'onUserScreenCaptureStopped' 事件用来修改屏幕共享状态。
* @default 'onUserScreenCaptureStopped'
* @event TUIRoomEvents#onUserScreenCaptureStopped
* @example
* const roomEngine = new TUIRoomEngine();
* roomEngine.on(TUIRoomEvents.onUserScreenCaptureStopped, () => {
* console.log('roomEngine.onUserScreenCaptureStopped');
* });
*/
onUserScreenCaptureStopped = "onUserScreenCaptureStopped"
}
declare enum TUIRoomDeviceMangerEvents {
/**
* @description 设备变更事件
* @default 'onDeviceChange'
* @event TUIRoomDeviceMangerEvents#onDeviceChange
* @param {object} options
* @param {string} options.deviceId 设备 Id
* @param {TRTCDeviceType} options.type 设备类型
* @param {TRTCDeviceState} options.state 设备变更状态
* @example
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
* deviceManager.on(TUIRoomDeviceMangerEvents.onDeviceChange, ({ deviceId, type, state }) => {
* console.log('deviceManager.onDeviceChange', deviceId, type, state);
* });
*/
onDeviceChanged = "onDeviceChanged",
/**
* @description 麦克风测试音量
* @default 'onTestMicVolume'
* @event TUIRoomDeviceMangerEvents#onTestMicVolume
* @param {object} options
* @param {number} options.volume 麦克风测试音量(0-100)
* @example
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
* deviceManager.on(TUIRoomDeviceMangerEvents.onTestMicVolume, ({ volume }) => {
* console.log('deviceManager.onTestMicVolume', volume);
* });
*/
onTestMicVolume = "onTestMicVolume",
/**
* @description 扬声器测试音量,仅 Electron 端支持
* @default 'onTestSpeakerVolume'
* @event TUIRoomDeviceMangerEvents#onTestSpeakerVolume
* @param {object} options
* @param {number} options.volume 扬声器测试音量(0-100)
* @example
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
* deviceManager.on(TUIRoomDeviceMangerEvents.onTestSpeakerVolume, ({ volume }) => {
* console.log('deviceManager.onTestSpeakerVolume', volume);
* });
*/
onTestSpeakerVolume = "onTestSpeakerVolume"
}
/**
* @since v2.5.0
* **TUIConferenceListManager 事件列表**<br>
* @namespace TUIConferenceListManagerEvents
*/
declare enum TUIConferenceListManagerEvents {
/**
* @description 会议预定回调
* @default 'onConferenceScheduled'
* @event TUIConferenceListManagerEvents#onConferenceScheduled
* @param {object} options
* @param {string} options.conferenceInfo 会议信息。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceScheduled, ({ conferenceInfo }) => {
* console.log('conferenceListManager.onConferenceScheduled', conferenceInfo);
* })
*/
onConferenceScheduled = "onConferenceScheduled",
/**
* @description 会议即将开始回调
* @default 'onConferenceWillStart'
* @event TUIConferenceListManagerEvents#onConferenceWillStart
* @param {object} options
* @param {string} options.conferenceInfo 会议信息。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceWillStart, ({ conferenceInfo }) => {
* console.log('conferenceListManager.onConferenceWillStart', conferenceInfo);
* })
*/
onConferenceWillStart = "onConferenceWillStart",
/**
* @description 会议取消回调
*
* @param {object} options
* @param {string} options.roomId 会议Id,即房间 roomId 。
* @param {TUIConferenceCancelReason} options.reason 会议取消原因。
* @param {TUIUserInfo} options.operateUser 取消会议操作者信息。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceCancelled, ({ roomId, reason, operateUser }) => {
* console.log('conferenceListManager.onConferenceCancelled', roomId, reason, operateUser);
* })
*/
onConferenceCancelled = "onConferenceCancelled",
/**
* @description 会议信息变更回调
*
* @param {object} options
* @param {TUIConferenceModifyInfo} options.conferenceModifyInfo 会议信息。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceInfoChanged, ({ conferenceModifyInfo }) => {
* console.log('conferenceListManager.onConferenceInfoChanged', conferenceModifyInfo);
* })
*/
onConferenceInfoChanged = "onConferenceInfoChanged",
/**
* @description 参会人员变更回调
*
* @param {object} options
* @param {string} options.roomId 会议Id,即房间roomId。
* @param {Array<TUIUserInfo>} options.leftUsers 离开成员列表。
* @param {Array<TUIUserInfo>} options.joinedUsers 新加入成员列表。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onScheduleAttendeesChanged, ({ roomId, leftUsers, joinedUsers }) => {
* console.log('conferenceListManager.onScheduleAttendeesChanged', roomId, leftUsers, joinedUsers);
* })
*/
onScheduleAttendeesChanged = "onScheduleAttendeesChanged",
/**
* @description 会议状态变更回调
*
* @param {object} options
* @param {string} options.roomId 会议Id,即房间roomId。
* @param {TUIConferenceStatus} options.status 会议状态。
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceListManager = roomEngine.getConferenceListManager();
* conferenceListManager.on(TUIConferenceListManagerEvents.onConferenceStatusChanged, ({ roomId, status }) => {
* console.log('conferenceListManager.onConferenceStatusChanged', roomId, status );
* })
*/
onConferenceStatusChanged = "onConferenceStatusChanged"
}
/**
* @since v2.6.0
* **TUIConferenceInvitationManager 事件列表**<br>
* @namespace TUIConferenceInvitationManagerEvents
*/
declare enum TUIConferenceInvitationManagerEvents {
/**
* @description 收到会中邀请回调
* @default 'onReceiveInvitation'
* @event TUIConferenceInvitationManagerEvents#onReceiveInvitation
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
* @param {string} options.extensionInfo 自定义扩展信息
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onReceiveInvitation, ({ roomInfo, invitation, extensionInfo }) => {
* console.log('conferenceInvitationManager.onReceiveInvitation', roomInfo, invitation, extensionInfo);
* })
*/
onReceiveInvitation = "onReceiveInvitation",
/**
* @description 邀请在其他设备处理的回调
* @default 'onInvitationHandledByOtherDevice'
* @event TUIConferenceInvitationManagerEvents#onInvitationHandledByOtherDevice
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {boolean} options.accepted 接受状态。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationHandledByOtherDevice, ({ roomInfo, accepted }) => {
* console.log('conferenceInvitationManager.onInvitationHandledByOtherDevice', roomInfo, accepted);
* })
*/
onInvitationHandledByOtherDevice = "onInvitationHandledByOtherDevice",
/**
* @description 会中邀请取消的回调
* @default 'onInvitationCancelled'
* @event TUIConferenceInvitationManagerEvents#onInvitationCancelled
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationCancelled, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationCancelled', roomInfo, invitation);
* })
*/
onInvitationCancelled = "onInvitationCancelled",
/**
* @description 会中邀请接受的回调
* @default 'onInvitationAccepted'
* @event TUIConferenceInvitationManagerEvents#onInvitationAccepted
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationAccepted, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationAccepted', roomInfo, invitation);
* })
*/
onInvitationAccepted = "onInvitationAccepted",
/**
* @description 会中邀请拒绝的回调
* @default 'onInvitationRejected'
* @event TUIConferenceInvitationManagerEvents#onInvitationRejected
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
* @param {TUIInvitationRejectedReason} options.reason 拒绝加入会议的原因。
*
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRejected, ({ roomInfo, invitation, reason }) => {
* console.log('conferenceInvitationManager.onInvitationRejected', roomInfo, invitation, reason);
* })
*/
onInvitationRejected = "onInvitationRejected",
/**
* @description 会中邀请超时的回调
* @default 'onInvitationTimeout'
* @event TUIConferenceInvitationManagerEvents#onInvitationTimeout
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationTimeout, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationTimeout', roomInfo, invitation);
* })
*/
onInvitationTimeout = "onInvitationTimeout",
/**
* @description 会中邀请被管理员撤回的回调
* @default 'onInvitationRevokedByAdmin'
* @event TUIConferenceInvitationManagerEvents#onInvitationRevokedByAdmin
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
* @param {TUIUserInfo} options.operateUser 撤回邀请的人的信息
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRevokedByAdmin, ({ roomInfo, invitation, userRole }) => {
* console.log('conferenceInvitationManager.onInvitationRevokedByAdmin', roomInfo, invitation, operateUser);
* })
*/
onInvitationRevokedByAdmin = "onInvitationRevokedByAdmin",
/**
* @description 新添加会中邀请的回调
* @default 'onInvitationAdded'
* @event TUIConferenceInvitationManagerEvents#onInvitationAdded
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationAdded, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationAdded', roomInfo, invitation);
* })
*/
onInvitationAdded = "onInvitationAdded",
/**
* @description 会中邀请被移除的回调
* @default 'onInvitationRemoved'
* @event TUIConferenceInvitationManagerEvents#onInvitationRemoved
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationRemoved, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationRemoved', roomInfo, invitation);
* })
*/
onInvitationRemoved = "onInvitationRemoved",
/**
* @description 会中邀请状态变更的回调
* @default 'onInvitationStatusChanged'
* @event TUIConferenceInvitationManagerEvents#onInvitationStatusChanged
* @param {object} options
* @param {TUIRoomInfo} options.roomInfo 会议信息。
* @param {TUIInvitation} options.invitation 邀请信息。
*
*
* @example
* const roomEngine = new TUIRoomEngine();
* const conferenceInvitationManager = roomEngine.getConferenceInvitationManager();
* conferenceInvitationManager.on(TUIConferenceInvitationManagerEvents.onInvitationStatusChanged, ({ roomInfo, invitation }) => {
* console.log('conferenceInvitationManager.onInvitationStatusChanged', roomInfo, invitation);
* })
*/
onInvitationStatusChanged = "onInvitationStatusChanged"
}
declare class Logger {
private logger;
private trtcCloud;
private seq;
constructor(trtcCloud: any, options?: {
userId: string;
sdkAppId: number;
seq: number;
});
getLogMessage(params: any[]): string | any[];
update(options: {
sdkAppId: number;
userId: string;
}): void;
debug(...params: any[]): void;
info(...params: any[]): void;
warn(...params: any[]): void;
error(...params: any[]): void;
private getTime;
}
/**
* 设备管理
* @class DeviceManager
*/
declare class TUIRoomDeviceManager {
private deviceManagerWASM;
private logger;
private static deviceManager;
private trtcCloud;
constructor(options: {
Module: any;
logger: Logger;
trtcCloud: TRTCCloud;
});
setDeviceManagerWASM(deviceManagerWASM: any): void;
/**
* @private
* 调用 TUIRoomEngineWASM 的异步方法
* @param funcName
* @param args
*/
private JSCallNativeFunctionPromise;
/**
* 获取设备列表
* @param {TRTCDeviceType} type 设备类型
* @example
* // 获取设备管理 Manager
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
*
* // 获取摄像头设备列表
* const cameraList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceVideoCamera });
* // 获取麦克风设备列表
* const micList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput });
* // 获取扬声器设备列表
* const speakerList = await deviceManager.getDeviceList({ type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput });
* @returns {Promise} Array<TUIDeviceInfo>
*/
getDevicesList(options: {
type: TUIMediaDeviceType;
}): Promise<TUIDeviceInfo[]>;
/**
* 设置当前使用设备
* @param {TRTCDeviceType} type 设备类型
* @param {string} deviceId 设备 Id
* @example
* // 获取设备管理 Manager
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
*
* // 设置当前麦克风设备
* deviceManager.setCurrentDevice({
* type: TUIMediaDeviceType.kMediaDeviceTypeAudioInput,
* deviceId: 'default',
* });
* // 设置当前扬声器设备
* deviceManager.setCurrentDevice({
* type: TUIMediaDeviceType.kMediaDeviceTypeAudioOutput,
* deviceId: 'default',
* });
* // 设置当前摄像头设备
* deviceManager.setCurrentDevice({
* type: TUIMediaDeviceType.kMediaDeviceVideoCamera,
* deviceId: '',
* });
* @returns {void}
*/
setCurrentDevice(options: {
type: TUIMediaDeviceType;
deviceId: string;
}): Promise<void>;
/**
* 获取当前使用的设备信息
* @param {object} options 获取当前设备信息的参数
* @param {TUIMediaDeviceType} options.type 设备类型
* @example
* // 获取设备管理 Manager
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
* @returns {TUIDeviceInfo}
*/
getCurrentDevice(options: {
type: TUIMediaDeviceType;
}): TUIDeviceInfo;
/**
* 开始进行摄像头测试
* @param {object} options 摄像头测试参数
* @param {string} options.view 显示摄像头测试的视频区域, 传入的 view 为承载预览画面 div 元素的 id
* @returns {Promise<void>}
*
* @example
* const roomEngine = new TUIRoomEngine();
* await roomEngine.startCameraDeviceTest({ view: 'test-preview' });
*/
startCameraDeviceTest(options: {
view: string;
}): Promise<void>;
/**
* 停止摄像头测试
* @returns {Promise<void>}
* @example
* const roomEngine = new TUIRoomEngine();
* await roomEngine.stopCameraDeviceTest();
*/
stopCameraDeviceTest(): Promise<void>;
/**
* 开始进行麦克风测试
* @param options
* @param {number} options.interval 麦克风音量的回调时间
*/
startMicDeviceTest(options: {
interval: number;
}): Promise<void>;
/**
* 停止进行麦克风测试
*/
stopMicDeviceTest(): Promise<void>;
startSpeakerDeviceTest(options: {
filePath: string;
}): Promise<void>;
stopSpeakerDeviceTest(): Promise<void>;
isFrontCamera(): boolean;
/**
* 切换前后置摄像头,该接口只适用于移动端浏览器
* @param {Object} options
* @param {boolean} options.isFrontCamera 是否切换为前置摄像头
*
* const deviceManager = roomEngine.instance?.getDeviceManager();
* // 移动端切换为前置摄像头
* await deviceManager?.switchCamera({ isFrontCamera: true });
* // 移动端切换为后置摄像头
* await deviceManager?.switchCamera({ isFrontCamera: false });
*/
switchCamera(options: {
isFrontCamera: boolean;
}): Promise<void>;
isAutoFocusEnabled(): boolean;
enableCameraTorch(options: {
enabled: boolean;
}): void;
setAudioRoute(options: {
route: TUIAudioRoute;
}): void;
/**
* 监听 roomEngine 的事件
* @param event TUIRoomEvents
* @param func function
* @returns {void}
*
* @example
* const roomEngine = new TUIRoomEngine();
* const deviceManager = roomEngine.getDeviceManager();
* deviceManager.on(event, func);
*/
on(event: TUIRoomDeviceMangerEvents, func: (...args: any[]) => void): void;
private handleTrtcCloudBindEvent;
off(event: string, func: (...args: any[]) => void): void;
}
/**
* 会议列表
* @class conferenceListManager
*/
declare class TUIConferenceListManager {
private static readonly ROOM_NAME;
private static readonly SCHEDULED_START_TIME;
private static readonly SCHEDULED_END_TIME;
private conferenceListManagerWASM;
private logger;
private static conferenceListManager;
constructor(options: {
Module: any;
logger: Logger;
roomEngineWASM: any;
});
/**
* @private
* 调用 TUIRoomEngineWASM 的异步方法
* @param funcName
* @param args
*/
private JSCallNativeFunctionPromise;
/**
* 预定会议
* @param {object} options
* @param {string} options.roomId 房间 Id,必填, roomId 限制长度为64字节,且仅支持以下范围的字符集:<br>
* - 大小写英文字母(a-zA-Z)
* - 数字(0-9)
* - 空格 ! # $ % & ( ) + - : ; < = . > ? @ [ ] ^ _ { } | ~ ,
* @param {number} [options.scheduleStartTime] 预定会议开始时间(计数单位为秒的时间戳)
* @param {number} [options.scheduleEndTime] 预定会议结束时间(计数单位为秒的时间戳)
* @param {array=} [options.scheduleAttendees=[]] 预定会议邀请成员 userId 列表
* @param {number=} [options.reminderSecondsBeforeStart=0] 会议开始前提醒时间,单位秒
* @param {string=} [options.roomName=roomId] 房间名称,默认值为 roomId,传入的值不能为空字符串
* @param {TUIRoomType=} [options.roomType=TUIRoomType.kConference] 房间类型, 默认值为 TUIRoomType.kConference <br>
* 办公协同、医疗问诊、远程会议、教育场景,roomType 设置为 TUIRoomType.kConference
* 电商直播、语聊房场景,roomType 设置为 TUIRoomType.kLive
* @param {boolean=} [options.isSeatEnabled=false] 是否开启麦位控制,默认值为 false
* @param {TUISeatMode=} [options.seatMode=TUISeatMode.kFreeToTake] 上麦模式(开启麦位控制后生效),默认值为 TUISeatMode.kFreeToTake <br>
* 自由上麦模式,台下观众可以自由上麦,无需申请,seatMode 设置为 TUISeatMode.kFreeToTake
* 申请上麦模式,台下观众上麦需要房主或者管理员同意后才能上麦,seatMode 设置为 TUISeatMode.kApplyToTake
* @param {boolean=} [options.isMicrophoneDisableForAllUser=false] 是否开启全员禁麦,默认不开启全员禁麦(创建房间可选参数)
* @param {boolean=} [options.isScreenShareDisableForAllUser=false] 是否开启禁止屏幕分享,默认不开启禁止屏幕分享权限(该属性自 v2.2.0 版本 以后支持,创建房间可选参数)
* @param {boolean=} [options.isCameraDisableForAllUser=false] 是否开启全员禁画,默认不开启全员禁画(创建房间可选参数)
* @param {boolean=} [options.isMessageDisableForAllUser=false] 是否允许成员发送消息,默认不禁止(创建房间可选参数)
* @param {number=} options.maxSeatCount 最大麦位数量 (创建房间可选参数)
* @param {stri