import { ChatSDK } from '@tencentcloud/lite-chat/basic'; export { default as TIM, default as TencentCloudChat } from '@tencentcloud/lite-chat/basic'; import TRTCCloud from '@tencentcloud/trtc-component-wx'; export { default as TRTCCloud } from '@tencentcloud/trtc-component-wx'; declare enum TUIErrorCode { ERR_FAILED = -1 } /** * **TUIRoomEngine 事件列表**
* @namespace TUICallEvents * @example * import TUIRoomEngine, { TUICallEvents } from '@tencentcloud/tuiroom-engine-js'; * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUICallEvents.onError, (error) => { * console.log('roomEngine.error', error); * }) */ declare enum TUICallEvent { /** * @description sdk内部发生了错误 * @memberOf module:TUICallEvent * @example * let onError = function(error) { * console.log(error) * }; * tuiCallEngine.on(TUICallEvent.ERROR, onError); */ ERROR = "onError", /** * @description SDK 进入 ready 状态时收到该回调 * @memberOf module:TUICallEvent * @example * let onSDKReady = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.SDK_READY, onSDKReady); */ SDK_READY = "sdkReady", /** * @description 重复登陆,收到该回调说明被踢出房间 * @memberOf module:TUICallEvent * @example * let handleOnKickedOut = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.KICKED_OUT, handleOnKickedOut); */ KICKED_OUT = "onKickedOffLine", /** * @description userSig 过期事件 * @default 'onUserSigExpired' * @event TUICallEvents#onUserSigExpired * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUICallEvents.onUserSigExpired, () => { * console.log('roomEngine.onUserSigExpired'); * }); */ onUserSigExpired = "onUserSigExpired", /** * @description 表示通话接通,主叫和被叫都可以收到,您可以通过监听这个事件来开启云端录制、内容审核等流程。 * - **注意:支持 v1.4.6+ 版本**。 * @memberOf module:TUICallEvent * @example * let handleOnCallBegin = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.ON_CALL_BEGIN, handleOnCallBegin); */ ON_CALL_BEGIN = "onCallBegin", /** * @description 收到通话请求的回调(仅被叫收到) * - 注意:后续计划废弃, 建议使用 ON_CALL_RECEIVED 事件。 * @memberOf module:TUICallEvent * @example * let handleNewInvitationReceived = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.INVITED, handleNewInvitationReceived); */ INVITED = "onInvited", /** * @description 收到通话请求的回调(仅被叫收到),您可以通过监听这个事件,来决定是否显示通话接听界面。 * @memberOf module:TUICallEvent * @example * let handleOnCallReceived = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.ON_CALL_RECEIVED, handleOnCallReceived); */ ON_CALL_RECEIVED = "onCallReceived", /** * @description 如果有用户接听,那么会收到此回调 * @memberOf module:TUICallEvent * @example * let handleUserAccept = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_ACCEPT, handleUserAccept); */ USER_ACCEPT = "onUserAccept", /** * @description 如果有用户同意进入通话,那么会收到此回调 * @memberOf module:TUICallEvent * @example * let handleUserEnter = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_ENTER, handleUserEnter); */ USER_ENTER = "onUserJoin", /** * @description 如果有用户同意离开通话,那么会收到此回调 * @memberOf module:TUICallEvent * @example * let handleUserLeave = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_LEAVE, handleUserLeave); */ USER_LEAVE = "onUserLeave", /** * @description 用户拒绝通话 * 1. 在C2C通话中,只有发起方会收到拒绝回调 * 例如 A 邀请 B、C 进入通话,B拒绝,A可以收到该回调,但C不行 * 2. 在IM群组通话中,所有被邀请人均能收到该回调 * 例如 A 邀请 B、C 进入通话,B拒绝,A、C均能收到该回调 * @memberOf module:TUICallEvent * @example * let handleInviteeReject = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.REJECT, handleInviteeReject); */ REJECT = "onUserReject", /** * @description 邀请用户无应答 * 1. 在C2C通话中,只有发起方会收到无人应答的回调 * 例如 A 邀请 B、C 进入通话,B不应答,A可以收到该回调,但C不行 * 2. 在IM群组通话中,所有被邀请人均能收到该回调 * 例如 A 邀请 B、C 进入通话,B不应答,A、C均能收到该回调 * @memberOf module:TUICallEvent * @example * let handleNoResponse = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.NO_RESP, handleNoResponse); */ NO_RESP = "onUserNoResponse", /** * @description 邀请方忙线 * @memberOf module:TUICallEvent * @example * let handleLineBusy = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.LINE_BUSY, handleLineBusy); */ LINE_BUSY = "onUserLineBusy", /** * @description 作为被邀请方会收到,收到该回调说明本次通话被取消了 * - **注意:废弃,推荐使用 ON_CALL_NOT_CONNECTED 事件**。 * @memberOf module:TUICallEvent * @example * let handleCallingCancel = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.CALLING_CANCEL, handleCallingCancel); */ CALLING_CANCEL = "onCallingCancel", /** * @description 如果通话未建立,都会抛出该事件。您可以通过监听该事件来实现类似未接来电、重置 UI 状态等显示逻辑。 * - **注意:废弃,推荐使用 ON_CALL_NOT_CONNECTED 事件**。 * @memberOf module:TUICallEvent * @example * let handleOnCallCanceled = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.ON_CALL_CANCELED, handleOnCallCanceled); */ ON_CALL_CANCELED = "onCallCancelled", /** * @description 收到该回调说明本次通话结束了 * @memberOf module:TUICallEvent * @example * let handleCallingEnd = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.ON_CALL_END, handleCallEnd); */ ON_CALL_END = "onCallEnd", /** * @private * @description 收到该回调说明本次通话结束了 * @memberOf module:TUICallEvent * @example * let handleCallingEnd = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.CALL_END, handleCallingEnd); */ CALL_END = "onCallEnd", /** * @description 收到该回调说明本次通话结束了 * @memberOf module:TUICallEvent * @example * let handleCallingEnd = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.CALLING_END, handleCallingEnd); */ CALLING_END = "onCallEnd", /** * @description 远端用户开启/关闭了摄像头, 会收到该回调 * @memberOf module:TUICallEvent * @example * let handleUserVideoChange = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_VIDEO_AVAILABLE, handleUserVideoChange); */ USER_VIDEO_AVAILABLE = "onUserVideoAvailable", /** * @description 远端用户开启/关闭了麦克风, 会收到该回调 * @memberOf module:TUICallEvent * @example * let handleUserAudioChange = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_AUDIO_AVAILABLE, handleUserAudioChange); */ USER_AUDIO_AVAILABLE = "onUserAudioAvailable", /** * @description 远端用户说话音量调整, 会收到该回调 * @memberOf module:TUICallEvent * @example * let handleUserVoiceVolumeChange = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.USER_VOICE_VOLUME, handleUserVoiceVolumeChange); */ USER_VOICE_VOLUME = "onUserVoiceVolumeChanged", /** * @description 群聊更新邀请列表收到该回调 * @memberOf module:TUICallEvent * @example * let handleGroupInviteeListUpdate = function(event) { * console.log(event) * }; * tuiCallEngine.on(TUICallEvent.GROUP_CALL_INVITEE_LIST_UPDATE, handleGroupInviteeListUpdate); */ GROUP_CALL_INVITEE_LIST_UPDATE = "onGroupCallInviteeListUpdate", /** * @description 通话类型切换收到该回调 * @memberOf module:TUICallEvent * @example * let handleCallTypeChanged = function({oldCallType, newCallType}) { * console.log(oldCallType, newCallType) * }; * tuiCallEngine.on(TUICallEvent.CALL_TYPE_CHANGED, handleCallTypeChanged); */ CALL_TYPE_CHANGED = "onCallMediaTypeChanged", /** * @description 设备列表更新 * @memberOf module:TUICallEvent * @example * let handleDeviceUpdated = function({ microphoneList, cameraList, currentMicrophone, currentCamera}) { * console.log(microphoneList, cameraList, currentMicrophone, currentCamera) * }; * tuiCallEngine.on(TUICallEvent.DEVICED_UPDATED, handleDeviceUpdated); */ DEVICED_UPDATED = "onDeviceUpdated", /** * @description 用户网络质量 * @memberOf module:TUICallEvent * @example * let handleOnUserNetworkQualityChanged = function(event) { * console.log(event.networkQualityList); * }; * tuiCallEngine.on(TUICallEvent.ON_USER_NETWORK_QUALITY_CHANGED, handleOnUserNetworkQualityChanged); */ ON_USER_NETWORK_QUALITY_CHANGED = "onUserNetworkQualityChanged", MESSAGE_SENT_BY_ME = "onMessageSentByMe", /** * @description 设备变更事件 * @default 'onDeviceChange' * @event TUICallEvents#onDeviceChange * @param {object} options * @param {string} options.deviceId 设备 Id * @param {any} options.type 设备类型 * @param {any} options.state 设备变更状态 * @example * const roomEngine = new TUIRoomEngine(); * roomEngine.on(TUICallEvents.onDeviceChange, ({ deviceId, type, state }) => { * console.log('roomEngine.onDeviceChange', deviceId, type, state); * }); */ onDeviceChange = "onDeviceChange", /** * @description 通话结束的回调,通话未接通的情况下,因为用户拒绝、忙线等原因导致的通话结束,都会回调该接口。 * - **注意:v3.0.0 + 支持**。 * @memberOf module:TUICallEvent * @example * tuiCallEngine.on(TUICallEvent.ON_CALL_NOT_CONNECTED, (event) => { * console.log(event); * }); */ ON_CALL_NOT_CONNECTED = "onCallNotConnected", /** * @description 当一个多人通话发生邀请他人时, 处在该通话的所有人都会抛出该事件, userId 就是被邀请者 * - **注意:v3.0.0 + 支持**。 * @memberOf module:TUICallEvent * @example * tuiCallEngine.on(TUICallEvent.ON_USER_INVITING, (event) => { * console.log(event); * }); */ ON_USER_INVITING = "onUserInviting" } declare enum CallMediaType { UNKNOWN = 0, AUDIO = 1, VIDEO = 2 } /** * @property {String} ear 听筒 * @property {String} speaker 免提 */ declare enum AudioPlayBackDevice { EAR = "ear", SPEAKER = "speaker" } declare enum CameraPosition { FRONT = 0, BACK = 1 } declare enum IOSOfflinePushType { APNs = 0, VoIP = 1 } declare enum LOG_LEVEL { NORMAL = 0, RELEASE = 1, WARNING = 2, ERROR = 3, NONE = 4 } /** * TRTC 关键类型定义
* @description 分辨率、质量等级等枚举和常量值的定义 */ /** * 视频分辨率
* 此处仅定义了横屏分辨率,如果要使用360 × 640这样的竖屏分辨率,需要同时指定 TRTCVideoResolutionMode 为 Portrait。 * @enum {Number} */ declare enum TRTCVideoResolution { TRTCVideoResolution_640_480 = 62, TRTCVideoResolution_960_720 = 64, TRTCVideoResolution_960_540 = 110, TRTCVideoResolution_1280_720 = 112, TRTCVideoResolution_1920_1080 = 114 } /** * 视频画面填充模式
* 如果画面的显示分辨率不等于画面的原始分辨率,就需要您设置画面的填充模式: * - TRTCVideoFillMode_Fill,图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。 * - TRTCVideoFillMode_Fit,图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。 * @enum {Number} */ declare enum TRTCVideoFillMode { TRTCVideoFillMode_Fill = 0, TRTCVideoFillMode_Fit = 1 } /** * 画面渲染镜像类型
* TRTC 的画面镜像提供下列设置模式 * @enum {Number} */ declare enum TRTCVideoMirrorType { TRTCVideoMirrorType_Auto = 0, TRTCVideoMirrorType_Enable = 1, TRTCVideoMirrorType_Disable = 2 } /** * 美颜(磨皮)算法
* TRTC SDK 内置了多种不同的磨皮算法,您可以选择最适合您产品定位的方案。 * @enum {Number} */ declare enum TRTCBeautyStyle { TRTCBeautyStyleSmooth = 0, TRTCBeautyStyleNature = 1 } /** * 设备信息
* @param {String} deviceId - 设备PID,字符编码格式是UTF-8 * @param {String} deviceName - 设备名称,字符编码格式是UTF-8 * @param {String} kind - 设备类型,['videoinput' | 'audioinput'] * @param {String} deviceName - 设备名称,字符编码格式是UTF-8 */ declare class TRTCDeviceInfo { deviceId: string; deviceName: string; kind?: string; label?: string; groupId?: string; constructor(deviceId?: string, deviceName?: string, kind?: string, label?: string, groupId?: string); } /** * 视频编码参数
* 该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)。 * @param {TRTCVideoResolution} videoResolution - 【字段含义】 视频分辨率
* 【推荐取值】
* - 视频通话建议选择360 × 640及以下分辨率,resMode 选择 Portrait。
* - 手机直播建议选择 540 × 960,resMode 选择 Portrait。
* - Window 和 iMac 建议选择 640 × 360 及以上分辨率,resMode 选择 Landscape。 * 【特别说明】 TRTCVideoResolution 默认只能横屏模式的分辨率,例如640 × 360。
* 如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如640 × 360结合 Portrait 则为360 × 640。
* @param {Number} videoFps - 【字段含义】视频采集帧率
* 【推荐取值】15fps 或 20fps,10fps 以下会有轻微卡顿感,5fps 以下卡顿感明显,20fps 以上的帧率则过于浪费(电影的帧率也只有 24fps)。
* 【特别说明】很多 Android 手机的前置摄像头并不支持15fps以上的采集帧率,部分过于突出美颜功能的 Android 手机前置摄像头的采集帧率可能低于10fps。
* @param {Number} videoBitrate - 【字段含义】视频上行码率
* 【推荐取值】推荐设置请参考本文件前半部分 TRTCVideoResolution 定义处的注释说明
* 【特别说明】码率太低会导致视频中有很多的马赛克
*/ declare class TRTCVideoEncParam { videoResolution: TRTCVideoResolution; videoFps: number; videoBitrate: number; constructor(videoResolution?: TRTCVideoResolution, videoFps?: number, videoBitrate?: number); } /** * 视频画面旋转方向
* TRTC SDK 提供了对本地和远程画面的旋转角度设置 API,如下的旋转角度都是指顺时针方向的。 * @enum {Number} */ declare enum TRTCVideoRotation { TRTCVideoRotation0 = 0, TRTCVideoRotation90 = 1, TRTCVideoRotation180 = 2, TRTCVideoRotation270 = 3 } /** * 画面渲染参数
* 您可以通过设置此参数来控制画面的旋转、填充、镜像模式 * @param {TRTCVideoRotation} rotation - 【字段含义】视频画面旋转方向 * @param {TRTCVideoFillMode} fillMode - 【字段含义】视频画面填充模式 * @param {TRTCVideoMirrorType} mirrorType - 【字段含义】画面渲染镜像类型 */ declare class TRTCRenderParams { rotation: TRTCVideoRotation; fillMode: TRTCVideoFillMode; mirrorType: TRTCVideoMirrorType; constructor(rotation?: TRTCVideoRotation, fillMode?: TRTCVideoFillMode, mirrorType?: TRTCVideoMirrorType); } /** * 网络质量
* @enum {Number} */ declare enum TRTCQuality { TRTCQuality_Unknown = 0, TRTCQuality_Excellent = 1, TRTCQuality_Good = 2, TRTCQuality_Poor = 3, TRTCQuality_Bad = 4, TRTCQuality_Vbad = 5, TRTCQuality_Down = 6 } /** * 4.1 Log 级别 * @enum {Number} */ declare enum TRTCLogLevel { TRTCLogLevelVerbose = 0, TRTCLogLevelDebug = 1, TRTCLogLevelInfo = 2, TRTCLogLevelWarn = 3, TRTCLogLevelError = 4, TRTCLogLevelFatal = 5, TRTCLogLevelNone = 6 } interface IPlayVideoOption { rotation?: TRTCVideoRotation; fillMode?: TRTCVideoFillMode; mirrorType?: TRTCVideoMirrorType; muted?: boolean; } interface IStartRemoteViewParam { userID: string; videoViewDomID: string; options?: IPlayVideoOption; } interface IMediaDeviceAuth { audio?: boolean; video?: boolean; isThrowVideoError?: boolean; callMediaType?: CallMediaType; } interface IWxDeviceCheckParams { microphone: boolean; camera: boolean; } interface IBeautyLevelParams { style: TRTCBeautyStyle; beautyLevel: number; whitenessLevel: number; } interface ITUICallEngineOption { SDKAppID?: number; sdkAppID?: number; tim?: any; callkitVersion?: string; framework?: string; isFromChat?: boolean; language?: number; component?: number; isSharedInstance?: boolean; scene?: string; } interface ICallParam { userID: string; type: CallMediaType; timeout?: number; offlinePushInfo?: IOfflinePushInfo; roomID?: number; strRoomID?: string; userData?: string; } interface IGroupCallParam { userIDList: string[]; type: CallMediaType; groupID: string; timeout?: number; offlinePushInfo?: IOfflinePushInfo; roomID?: number; strRoomID?: string; userData?: string; } interface IJoinInGroupCallParam { type: CallMediaType; groupID: string; roomID: number; strRoomID: string; } interface IInviteUserParam { userIDList: string[]; offlinePushInfo?: IOfflinePushInfo; timeout?: number; userData?: string; } interface ICallsParam { userIDList: string[]; type: CallMediaType; chatGroupID?: string; timeout?: number; offlinePushInfo?: IOfflinePushInfo; roomID?: number; strRoomID?: string; userData?: string; } interface IJoinParam { callId: string; } interface IOfflinePushInfo { title?: string; description?: string; androidOPPOChannelID?: string; extension: string; ignoreIOSBadge?: boolean; iOSSound?: string; androidSound?: string; androidVIVOClassification?: number; androidXiaoMiChannelID?: string; androidFCMChannelID?: string; androidHuaWeiCategory?: string; isDisablePush?: boolean; iOSPushType?: IOSOfflinePushType; } interface ILoginParams { userID: string; userSig: string; assetsPath?: string; } interface IStopRemoteViewParam { userID: string; } /** * @param {string} callType * @returns {boolean} */ declare function devicePermissions(callType: CallMediaType): Promise; /** * 检测input类型是否为string * @param {*} input 任意类型的输入 * @returns {Boolean} true->string / false->not a string */ declare const isString: (input: any) => boolean; declare const isObject: (input: any) => boolean; /** * 检测input类型是否为数组 * @param {*} input 任意类型的输入 * @returns {Boolean} true->array / false->not an array */ declare const isArray: (input: any) => boolean; /** * Checks to see if a value is undefined * @param {*} input 任意类型的输入 * @returns {Boolean} true->input value is undefined */ declare const isUndefined: (input: any) => boolean; /** * 检测input类型是否为数组或者object * @param {*} input 任意类型的输入 * @returns {Boolean} true->input is an array or an object */ declare const isArrayOrObject: (input: any) => boolean; /** * 检测input类型是否为function * @param {*} input 任意类型的输入 * @returns {Boolean} true->input is a function */ declare const isFunction: (input: any) => boolean; /** * 检测input是否为Error的实例 * @param {*} input 任意类型的输入 * @returns {Boolean} true->input is an instance of Error */ declare const isInstanceOfError: (input: any) => boolean; /** * Get the object type string * @param {*} input 任意类型的输入 * @returns {String} the object type string */ declare const getType: (input: any) => string; /** * 序列化Error实例,只序列化Error实例的message和code属性(如果有的话) * @param {Error} error Error实例 * @returns {String} 序列化后的内容 */ declare const stringifyError: (error: any) => string; declare function getValueType(value: any): string; declare function safelyParse(data: any): any; declare function generateRandomString(length: any): string; /** * 获取设备权限,查看当前是否有麦克风以及摄像头权限 * @param {Object} params - 参数对象 * @param {Boolean} params.microphone 麦克风权限 * @param {Boolean} params.camera 摄像头权限 */ declare function deviceCheck(params: any): Promise; declare function appDeviceCheck(params: any): boolean; declare function convertOfflinePushInfoToCIdentifier(offlinePushInfo?: {}): { title: any; desc: any; extension: any; is_disable_push: any; ios_push_type: any; android_push_type: any; ignore_ios_badge: boolean; android_vivo_classification: any; }; /** * TUICallEngine 提供了 Call 的基本能力 * @class TUICallEngine */ declare class TUICallEngine { static className: string; static instance: TUICallEngine | null; private static isWasmReady; private static sdkAppId; private static userId; private static Module; private _callEngineWASM; private _logger; private _uniqueLoginId; private _isExternalTim; private _localRenderFillMode; private _remoteRenderFillMode; private _callMediaType; tim: any; trtcCloud: TRTCCloud; private _permission; constructor(options: ITUICallEngineOption); static setModule(Module: any): void; /** * @private * 调用 TUICallEngineWASM 的异步方法 * @param funcName * @param args */ private JSCallNativeFunctionPromise; /** * 创建 TUICallEngine 实例 * @memberof TUICallEngine * @param {Object} options 配置 * @param {Number} options.SDKAppID - 云通信应用的 `SDKAppID` * @param {ChatSDK=} options.tim - [TIM 实例](https://web.sdk.qcloud.com/im/doc/zh-cn/TIM.html)(选填) * - tim 参数适用于业务中已存在 TIM 实例,需要传入保证 TIM 实例唯一性 * @example * let options = { * SDKAppID: 0, // 接入时需要将0替换为您的云通信应用的 SDKAppID * // tim 参数适用于业务中已存在 TIM 实例,需要传入保证 TIM 实例唯一性 * tim: tim * }; * let tuiCallEngine = TUICallEngine.createInstance(options); */ static createInstance(options: ITUICallEngineOption): TUICallEngine; static once(event: string, func: (...args: any[]) => void): void; /** * 销毁 TUICallEngine 实例 * - 注:SDK 会先 logout,然后释放资源 * @memberof TUICallEngine * @returns {Promise} */ destroyInstance(): Promise; /** * 登录 TUICallEngine * @param {object} options * @param {number} options.sdkAppId sdkAppId
* 在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 单击 **应用管理** > **创建应用** 创建新应用之后,即可在 **应用信息** 中获取 sdkAppId 信息。 * @param {string} options.userId 用户ID
* 建议限制长度为32字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。 * @param {string} options.userSig userSig 签名
* 计算 userSig 的方式请参考 [UserSig 相关](https://cloud.tencent.com/document/product/647/17275)。 * @returns {Promise} * @example * // 登录 TUICallEngine * await TUICallEngine.login({ * sdkAppId: 0, // 填写您申请的 sdkAppId * userId: '', // 填写您业务对应的 userId * userSig: '', // 填写服务器或本地计算的 userSig * }) */ login(params: ILoginParams): Promise; /** * 登出接口,登出后无法再进行拨打操作 * @memberof TUICallEngine * @returns {Promise} * @example * await tuiCallEngine.logout(); */ logout(): Promise; /** * C2C邀请通话,被邀请方会收到 TUICallEvent.INVITED 事件
* - 注意:离线推送仅适用于终端(Android 或 iOS),Web 和 微信小程序不支持。 * @memberof TUICallEngine * @param {Object} params - 拨打通话配置 * @param {String} params.userID 被邀请方 userID * @param {Number} params.type 0-未知, 1-语音通话,2-视频通话 * @param {Number=} params.timeout 0为不超时, 单位 s(秒)(选填) - 默认 30s * @param {Number=} params.roomID 数字房间号, 范围 [1, 2147483647]。支持 v1.4.2+ 版本。 * @param {String=} params.userData 扩展字段: 用于在邀请信令中增加扩展信息。支持 v1.4.2+ 版本。 * @param {Object=} params.offlinePushInfo - 自定义离线消息推送(选填)-- 需 tsignaling 版本 >= 0.8.0 * | name | Type | Description | * | :--- | :--- | :--- | * | title | string | 离线推送标题(选填) | * | description | string | 离线推送内容(选填) | * | androidOPPOChannelID | string | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID(选填) | * | extension | string | 离线推送透传内容(选填)(tsignaling 版本 >= 0.9.0)| * @returns {Promise} * @example * await tuiCallEngine.call({userID: 'user1', type: 1}); */ call(params: ICallParam): Promise; /** * IM群组邀请通话,被邀请方会收到 TUICallEvent.INVITED 事件
* 注意:离线推送仅适用于终端(Android 或 iOS),Web 和 微信小程序不支持。 * @memberof TUICallEngine * @param {Object} params - 群聊拨打通话配置 * @param {Array} params.userIDList 邀请列表 * @param {Number} params.type 0-未知, 1-语音通话,2-视频通话 * @param {String} params.groupID IM 群组 ID * @param {Number=} params.timeout 0为不超时, 单位 s(秒)(选填) - 默认 30s * @param {Number=} params.roomID 数字房间号, 范围 [1, 2147483647] * @param {String=} params.userData 扩展字段: 用于在邀请信令中增加扩展信息 * @param {Object=} params.offlinePushInfo - 自定义离线消息推送(选填)-- 需 tsignaling 版本 >= 0.8.0 * | name | Type | Description | * | :--- | :--- | :--- | * | title | string | 离线推送标题(选填) | * | description | string | 离线推送内容(选填) | * | androidOPPOChannelID | string | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID (选填) | * | extension | string | 离线推送透传内容(选填)(tsignaling 版本 >= 0.9.0) | * @returns {Promise} * @example * await tuiCallEngine.groupCall({userIDList: ['user1', 'user2'], type: 1, groupID: 'IM群组 ID'}); */ groupCall(params: IGroupCallParam): Promise; /** * 多人通话
* 注意:离线推送仅适用于终端(Android 或 iOS),Web 和 微信小程序不支持。 * @memberof TUICallEngine * @param {Object} params - 群聊拨打通话配置 * @param {Array} params.userIDList 邀请列表 * @param {Number} params.type 0-未知, 1-语音通话,2-视频通话 * @param {String=} params.chatGroupID IM 群组 ID * @param {Number=} params.timeout 0为不超时, 单位 s(秒)(选填) - 默认 30s * @param {Number=} params.roomID 数字房间号, 范围 [1, 2147483647] * @param {String=} params.userData 扩展字段: 用于在邀请信令中增加扩展信息 * @param {Object=} params.offlinePushInfo - 自定义离线消息推送(选填)-- 需 tsignaling 版本 >= 0.8.0 * | name | Type | Description | * | :--- | :--- | :--- | * | title | string | 离线推送标题(选填) | * | description | string | 离线推送内容(选填) | * | androidOPPOChannelID | string | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID (选填) | * | extension | string | 离线推送透传内容(选填)(tsignaling 版本 >= 0.9.0) | * @returns {Promise} * @example * await tuiCallEngine.calls({userIDList: ['user1', 'user2'], type: 1, chatGroupID: 'IM群组 ID'}); */ calls(params: ICallsParam): Promise; /** * 当您作为被邀请方收到 TUICallEvent.INVITED 事件的回调时,可以调用该接口接听来电 * @memberof TUICallEngine * @returns {Promise} * @example * tuiCallEngine.on(TUICallEvent.INVITED, () => { * tuiCallEngine.accept().then(() => { * //success * }).catch(error => { * console.warn('accept error:', error); * }); * }); */ accept(): Promise; reject(): Promise; hangup(): Promise; /** * IM群组邀请通话,被邀请方会收到 TUICallEvent.INVITED 事件
* 注意:离线推送仅适用于终端(Android 或 iOS),Web 和 微信小程序不支持。 * @memberof TUICallEngine * @param {Object} params - 群聊拨打通话配置 * @param {Array} params.userIDList 邀请列表 * @param {Number} params.type 0-未知, 1-语音通话,2-视频通话 * @param {String} params.groupID IM 群组 ID * @param {Number=} params.timeout 0为不超时, 单位 s(秒)(选填) - 默认 30s * @param {Number=} params.roomID 数字房间号, 范围 [1, 2147483647] * @param {String=} params.userData 扩展字段: 用于在邀请信令中增加扩展信息 * @param {Object=} params.offlinePushInfo - 自定义离线消息推送(选填)-- 需 tsignaling 版本 >= 0.8.0 * | name | Type | Description | * | :--- | :--- | :--- | * | title | string | 离线推送标题(选填) | * | description | string | 离线推送内容(选填) | * | androidOPPOChannelID | string | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID (选填) | * | extension | string | 离线推送透传内容(选填)(tsignaling 版本 >= 0.9.0) | * @returns {Promise} * @example * await tuiCallEngine.inviteUser({userIDList: ['user1', 'user2'], type: 1, groupID: 'IM群组 ID'}); */ inviteUser(params: IInviteUserParam): Promise; /** * IM群组邀请通话,被邀请方会收到 TUICallEvent.INVITED 事件
* 注意:离线推送仅适用于终端(Android 或 iOS),Web 和 微信小程序不支持。 * @memberof TUICallEngine * @param {Object} params - 群聊拨打通话配置 * @param {Array} params.userIDList 邀请列表 * @param {Number} params.type 0-未知, 1-语音通话,2-视频通话 * @param {String} params.groupID IM 群组 ID * @param {Number=} params.timeout 0为不超时, 单位 s(秒)(选填) - 默认 30s * @param {Number=} params.roomID 数字房间号, 范围 [1, 2147483647] * @param {String=} params.userData 扩展字段: 用于在邀请信令中增加扩展信息 * @param {Object=} params.offlinePushInfo - 自定义离线消息推送(选填)-- 需 tsignaling 版本 >= 0.8.0 * | name | Type | Description | * | :--- | :--- | :--- | * | title | string | 离线推送标题(选填) | * | description | string | 离线推送内容(选填) | * | androidOPPOChannelID | string | 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID (选填) | * | extension | string | 离线推送透传内容(选填)(tsignaling 版本 >= 0.9.0) | * @returns {Promise} * @example * await tuiCallEngine.groupCall({userIDList: ['user1', 'user2'], type: 1, groupID: 'IM群组 ID'}); */ joinInGroupCall(params: IJoinInGroupCallParam): Promise; /** * call 3.0 新增的 “中途加入” 接口 * @param params 入参 * @param {String} params.callId 当前通话的唯一 id */ join(params: IJoinParam): Promise; openCamera(videoViewDomID: string, isFrontCamera?: boolean): Promise; closeCamera(): Promise; /** * 切换前后置摄像头
* **Note: v3.0.0+ 支持,且该接口仅在移动端使用生效。** * @memberof TUICallEngine * @param {CameraPosition} cameraPosition 摄像头类型 * - CameraPosition.FRONT 前置摄像头 * - CameraPosition.BACK 后置摄像头 * @example * await tuiCallEngine.switchCamera(CameraPosition.FRONT); // 切换前置摄像头 * await tuiCallEngine.switchCamera(CameraPosition.BACK); // 切换后置摄像头 */ switchCamera(cameraPosition: CameraPosition): Promise; /** * 打开麦克风,处于通话中的用户会收到 USER_AUDIO_AVAILABLE 回调 * @memberof TUICallEngine * @returns {Promise} * @example * tuiCallEngine.openMicrophone().then(() => { * // success * }).catch(error => { * console.warn('openMicrophone error:', error) * }); */ openMicrophone(): Promise; /** * 关闭麦克风,处于通话中的用户会收到 USER_AUDIO_AVAILABLE 回调 * @memberof TUICallEngine * @returns {Promise} * @example * tuiCallEngine.closeMicrophone().then(() => { * // success * }).catch(error => { * console.warn('closeMicrophone error:', error) * }); */ closeMicrophone(): Promise; startRemoteView(params: IStartRemoteViewParam): Promise; /** * 停止远端画面渲染 * @memberof TUICallEngine * @param {Object} params - 渲染远端视频配置 * @param {String} params.userID 用户id * @returns {Promise} * @example * let promise = tuiCallEngine.stopRemoteView({userID: 'user1'}); * promise.then(() => { * //success * }).catch(error => { * console.warn('stopRemoteView error:', error) * }); */ stopRemoteView(params: IStopRemoteViewParam): Promise; /** * 开启/关闭 TUICallEngine 的多设备登录模式 (**尊享版套餐支持**) * - **注意**:v2.1.1+ 才支持。 * @param {boolean} enable 开启、关闭多设备登录. 开启: true; 关闭: false; 默认: 关闭 * @returns {void} * @example * tuiCallEngine.enableMultiDeviceAbility(true); */ enableMultiDeviceAbility(enable: boolean): void; /** * 设置当前用户基本信息(用户名、用户头像) * * @param {object} options * @param {string} options.nickName 用户名,必填 * @param {string} options.avatar 用户头像,必填 * App 管理员可以通过 [即时通信 IM 控制台 > 用户自定义字段](https://console.cloud.tencent.com/im/user-data) 新增自定义资料字段 * 用户自定义字段生效以后,用户可以调用 setSelfInfo 接口设置自定义资料 * @returns {Promise} * * @example * // 设置当前用户用户名及用户头像 * await TUICallEngine.setSelfInfo(nickName: '', avatar: '') */ setSelfInfo(nickName: string, avatar: string): Promise; /** * 支持 webrtc 的基础美颜 * @param {TRTCBeautyStyle} style 磨皮算法,有“光滑”(TRTCBeautyStyleSmooth=0)和“自然”(TRTCBeautyStyleNature=1)两种算法, 默认为 TRTCBeautyStyleNature * @param {number} beautyLevel 美颜级别,取值范围 [0 - 9],0表示关闭,1 - 9值越大,效果越明显。 * @param {number} whitenessLevel 美白级别,取值范围 [0 - 9],0表示关闭,1 - 9值越大,效果越明显。 * @returns {Promise} * @example * import {} from 'call-engine-lite-js'; * await setBeautyLevel({ * type: TRTCBeautyStyle.TRTCBeautyStyleSmooth, * beautyLevel: 0.3, * whitenessLevel: 0.4, * }) */ setBeautyLevel(params: IBeautyLevelParams): Promise; /** * @memberof TUICallEngine * @description 设置日志级别,低于 level 的日志将不会输出。 * @param {LOG_LEVEL} level - 日志级别 * - 0 普通级别,日志量较多,接入时建议使用 * - 1 主要级别,SDK 输出关键信息,默认日志等级 * - 2 告警级别,SDK 只输出告警和错误级别的日志 * - 3 错误级别,SDK 只输出错误级别的日志 * - 4 无日志级别,SDK 将不打印任何日志 * @example * tuiCallEngine.setLogLevel(0); */ setLogLevel(level: LOG_LEVEL): void; /** * login() 方法的别名接口,参数一致 * @memberof TUICallEngine * @returns {Promise} */ init(params: ILoginParams): Promise; /** * 监听 callEngine 的事件 * @param event TUICallEvent * @param func function * @returns {void} * @example * const callEngine = new TUICallEngine(); * callEngine.on(event, func); */ on(event: TUICallEvent, callback: () => void, context: any): void; /** * 移除监听 callEngine 的事件 * @param event TUICallEvent * @param func function * @returns {void} * @example * const callEngine = new TUICallEngine(); * callEngine.off(event, func); */ off(event: TUICallEvent, callback: () => void, context: any): void; /** * 获取 trtcCloud 实例 * @returns {TRTCCloud} trtcCloud * web 端 trtcCloud 能力请查看:https://web.sdk.qcloud.com/trtc/webrtc/trtcCloud/doc/TRTCCloud.html * * @example * const callEngine = new TUICallEngine(); * const trtcCloud = callEngine.getTRTCCloud(); */ getTRTCCloudInstance(): TRTCCloud; /** * 获取 tim 实例 * @returns {TIM} tim * web 端 tim 能力请查看:https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html * @example */ getTim(): ChatSDK; /** * 实验性接口 * @private * @param jsonStr jason 字符串 * @returns */ callExperimentalAPI(jsonStr: string): Promise; reportLog(logData: any): void; /** * 切换扬声器和听筒 */ selectAudioPlaybackDevice(type: AudioPlayBackDevice): Promise; deviceCheck(params: IWxDeviceCheckParams): Promise; /** * 当前通话类型切换 * - 仅支持1v1通话过程中使用 * - 失败监听 ERROR 事件,code: 60001 * @memberof TUICallEngine * @param {String} newMediaType 通话类型 * - 1 语音通话 * - 2 视频通话 * @example * tuiCallEngine.switchCallMediaType(1).then(() => { // 视频通话切换语音通话 * // success * }).catch(error => { * console.warn('switchCallMediaType error:', error) * }); */ switchCallMediaType(newMediaType: number): Promise; private _checkDevicePermission; private _handleTrtcCloudBindEvent; private _observerFunction; private _initLogger; getDevicePermission(): { audio: boolean; video: boolean; }; } export { AudioPlayBackDevice, CallMediaType, CameraPosition, IOSOfflinePushType, LOG_LEVEL, TRTCBeautyStyle, TRTCDeviceInfo, TRTCLogLevel, TRTCQuality, TRTCRenderParams, TRTCVideoEncParam, TRTCVideoFillMode, TRTCVideoMirrorType, TRTCVideoResolution, TRTCVideoRotation, TUICallEngine, TUICallEvent, TUIErrorCode, appDeviceCheck, convertOfflinePushInfoToCIdentifier, TUICallEngine as default, deviceCheck, devicePermissions, generateRandomString, getType, getValueType, isArray, isArrayOrObject, isFunction, isInstanceOfError, isObject, isString, isUndefined, safelyParse, stringifyError }; export type { IBeautyLevelParams, ICallParam, ICallsParam, IGroupCallParam, IInviteUserParam, IJoinInGroupCallParam, IJoinParam, ILoginParams, IMediaDeviceAuth, IOfflinePushInfo, IPlayVideoOption, IStartRemoteViewParam, IStopRemoteViewParam, ITUICallEngineOption, IWxDeviceCheckParams };