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 };