@hysc/external
Version:
Boom external js sdk
1,328 lines (1,312 loc) • 41.6 kB
TypeScript
interface IResponse {
code: number;
message: string;
data?: unknown;
}
/**
* @internal
*/
declare interface IRoomCreate {
/**
* 房间号.
*/
room: string;
/**
* 房间模式 1 = 会议;2 = 直播.
*/
mode: number;
/**
* 房间类型 1 = 公开;0 = 非公开.默认值为1公开会议.
*/
room_type: number;
/**
* 房间名称.
*/
room_name: string;
/**
* 会议开始时间戳(单位秒),不能少于当前时间戳半小时以上.
*/
start_time: number;
/**
* 会议结束时间戳(单位秒.
*/
end_time: number;
/**
* 主持人.
*/
creator?: string;
/**
* 主持人名字 .
* */
creator_nickname?: string;
/**
* 房间人数限制 0表示无限制.
*/
user_num: number;
/**
* 房间密码.
*/
secret?: string;
/**
* 是否允许嘉宾在主持人进会前加入会议 0 允许 1 不允许.
*/
is_must_host?: boolean;
/**
* 参会人员列表的用户id.
*/
guests?: string;
/**
* 管理员(联席主持人)列表的用户id, 传入之后可以在主持人之前开启直播.
*/
admins?: string;
/**
* 是否自动开启云录,默认值为 false.
*/
is_record?: string;
/**
* 设置云录参数.
*/
record?: object;
/**
* 是否使用小程序 默认false.
*/
is_mini_app?: boolean;
template_name?: string;
/**
* 是否开启会议录制水印 0:不开启 1:开启.
*/
watermark?: number;
/**
* 是否自动开启录制, vb
*/
meeting_record?: number;
/**
* 测验地址
*/
quiz_domain?: string;
}
/**
* 0: 是挑屏 1:播控 2:会控 3:调度 4: TY视频会议进入会控 5: TY学习会进入会控 7:房间统计,8:视频剪辑, 9查看剪辑 11:课后评价
* @public
*/
declare type ControlRoutesOptions = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
interface IJoinMeetingElectron {
/**
* Electron环境.
*/
isElectron: boolean;
/**
*Electron环境回调.
*/
callback: Function;
}
/**
* 会控按钮展示隐藏控制.
* @public
*/
interface IMeetingControl {
/**
* 隐藏麦克风.
*/
hideMicrophone?: boolean;
/**
* 隐藏摄像头.
*/
hideCamera?: boolean;
/**
* 隐藏扬声器.
*/
hideLoudspeaker?: boolean;
/**
* 隐藏邀请.
*/
hideInvite?: boolean;
/**
* 隐藏分享.
*/
hideShare?: boolean;
/**
* 隐藏聊天.
*/
hideChat?: boolean;
/**
* 隐藏参会者列表.
*/
hideParticipant?: boolean;
/**
* 隐藏协作文档.
*/
hideDocument?: boolean;
/**
* 隐藏记录.
*/
hideRecord?: boolean;
/**
* 隐藏设置.
*/
hideSetting?: boolean;
/**
* 隐藏离会按钮.
*/
hideLeaveRoom?: boolean;
/**
* 隐藏锁定按钮.
*/
hideLockLiving?: boolean;
/**
* 隐藏视频预览.
*/
hideVideoPreview?: boolean;
/**
* 隐藏互动
*/
hideInteraction?: boolean;
/**
* 隐藏系统按钮
*/
hideDialogButton?: boolean;
/**
* 隐藏加密保护图标
*/
hideShield?: boolean;
/**
* 隐藏点赞
*/
hideGiveLike?: boolean;
/**
* 隐藏离开会议弹窗 当值为true:主动离开的时候,没有二次确认弹窗,直接退会、房间被动结束的时候,不弹出会议已结束弹窗; 值为false则走正常逻辑,默认值为false
*/
hideEndMeetingConfirm?: boolean;
}
interface IJoinMeetingParam {
/**
* 通过Boom服务下发.
*
* @privateRemarks
* */
brtcAppId: string;
/**
* 房间插入的节点.
* */
parentNode: HTMLElement;
/**
* 房间号.
* */
roomId: string;
/**
* 昵称.
* */
nickname?: string;
/**
* 房间主题.
* */
title: string;
/**
* 用户ID.
* */
user?: string;
/**
* 头像.
* */
avatar?: string;
/**
* 身份(即将废弃) 1: 主持人, 2: 嘉宾, 3: 观众, 4: 游客观众 5: 管理员 6: 普通参会者 9: 巡视员.
* @deprecated 使用 userType
* */
identity: number;
/**
* 身份 1: 主持人, 20:管理员, 21:巡视员, 30:嘉宾, 40:参会者, 50:观众(直播), 51:游客(观众).
* */
userType: number;
/**
* 通过Boom服务下发.
*
* @privateRemarks
* */
server: string;
/**
* 房间密码, 设置了就有(数字,四位), 默认无.
* */
secret: string;
/**
* 是否是会议外投屏, 默认是false.
* */
screen: boolean;
/**
* 会控挑屏等配置项 0: 是挑屏 1:播控 2:会控 3:调度 4: TY视频会议进入会控 5: TY学习会进入会控.
* */
isControl: ControlRoutesOptions;
/**
* 是否为分会场.
* */
subVenue: boolean;
/**
* @deprecated
*/
audio: boolean;
/**
* @deprecated
*/
video: boolean;
/**
* 打开摄像头.
* */
videoEnable: boolean;
/**
* 打开麦克风.
* */
audioEnable: boolean;
/**
* 是否已经加入到房间了.
* */
joined: boolean;
/**
* @privateRemarks
* */
limit: number;
/**
*@privateRemarks
* */
token: string;
/**
* @privateRemarks
* */
visitor?: boolean;
/**
* 模式 meeting:会议, live:房间.
* */
mode: 'meeting' | 'live' | 'audio';
/**
* Electron PC客户端.
* */
electron?: IJoinMeetingElectron;
/**
* 设置隐藏房间间内的按钮.
* */
meetingControlOptions?: IMeetingControl;
/**
* 展示会议内全员可上传文档入口.
* */
visitorDocument?: boolean;
/**
* @privateRemarks
* */
authorization: string;
/**
*@privateRemarks
* */
brtc_host: string;
/**
* 是否开启语音激励.
*/
voiceEncourage: 0 | 1;
/**
* 是否显示会议主题
*/
showMeetingTopic: boolean;
/**
* 自定义用户信息
*/
customInfo: any;
qdtls: 0 | 1;
qdtls_group_id: string;
/**
* 模板名称 三分屏, 后续会增加更多的模板. 不传值默认原来的模板.
*/
template_name: string | 'triple';
}
interface IExtLoginParam {
/**
* 接入方的用户id.
* */
extUserId: string;
/**
* 接入方的用户昵称.
* */
nickname: string;
/**
* 接入方的用户用户头像.
* */
avatar: string;
/**
* 接入方token过期时间 秒级别 .
* */
expireTime: string;
/**
* 接入方后端返回, 通过Boom提供的接口.
* */
nonce: string;
/**
* Signature 端上计算得到.
* */
signature: string;
}
/**
* 会控相关的操作.
*/
interface IMeetingControlOptions {
/**
* 是否取消自动拉流.
*/
cancelAutoPull: boolean;
}
/**
* 分辨率参数设置 type VideoProfile = '120p' | '180p' | '240p' | '360p' | '480p' | '720p' | '1080p'.
*/
declare type VideoProfile = '120p' | '180p' | '240p' | '360p' | '480p' | '720p' | '1080p';
/**
* @public
*
* SDK 初始化时的参数
*
*/
interface ISetupParam {
/**
* 应用ID.
*/
appId: string;
/**
* 应用私有化服务器地址.
*/
baseURL: string;
/**
* 应用部署域名.
*/
domain: string;
/**
* 是否开启加密.
*/
enableEncrypt?: boolean;
/**
* 加密公钥.
*/
publicKey?: string;
}
interface ILoginParam {
/**
* 用户id(会议用户id).
* */
userId: string;
/**
* 接入方的用户昵称.
* */
nickname: string;
/**
* 接入方的用户头像.
* */
avatar?: string;
/**
* 接入方token过期时间 秒级别 .
* */
expireTime: string;
/**
* 接入方后端返回, 通过Boom提供的op/v2/auth/signature接口.
* */
nonce: string;
/**
* 接入方后端返回, 通过Boom提供的op/v2/auth/signature接口.
* */
signature: string;
/**
* 接入方的用户id(第三方的用户id).
* */
extUserId?: string;
/**
* 接入方的账号字段(可用于水印).
* */
account?: string;
}
interface IUserRoles {
/**
* 设置入会发起人身份的展示文字.
* */
sponsor: string;
/**
* 接入方设置入会主持人身份的展示文字的用户头像.
* */
host: string;
/**
* 设置入会管理员身份的展示文字.
* */
admin: string;
/**
* 设置入会嘉宾身份的展示文字.
* */
guest: string;
/**
* 设置入会观众身份的展示文字.
* */
tourist: string;
/**
* 设置入会参会者列表展示区嘉宾区的展示文字.
* */
guestNameSetting: string;
}
interface InvitationInfo {
/**
* 邀请人信息.
*/
inviter?: string;
/**
* 邀请信息.
*/
inviteInfo: string;
/**
* 房间名称.
*/
title: string;
/**
* 产品名称.
*/
productName?: string;
/**
* 会议时间.
*/
time: string;
/**
* 会议号.
*/
roomNumber: string;
/**
* 会议密码.
*/
password?: string;
/**
* 邀请唤起链接.
*/
awaken: string;
/**
* 是否仅邀请信息邀请.
*/
onlyInfoInvite: boolean;
/**
* 是否是非公开会议.
*/
onlyInvite: boolean;
}
interface StaticsPageOptions {
/** 房间的唯一标识 */
roomId: string;
/** 房间号 */
roomNo?: string;
parentNode: HTMLElement;
domain?: string;
}
interface ClipPageOptions {
/** 房间的唯一标识 */
roomId: string;
/** 房间号 */
roomNo?: string;
/** 视频的唯一标识 */
videoId: string;
parentNode: HTMLElement;
/** 是否是查看剪辑 */
preview?: boolean;
domain?: string;
}
interface EvaluationOptions {
parentNode: HTMLElement;
domain?: string;
}
/**
* @class
* BoomMeetingExternal
*/
declare class BoomMeetingExternal {
private static setupParam;
private static style;
private static isJoining;
private static brtc_host;
private static isExtUser;
private static extUserId;
private static brtm_host;
private static loginParam;
private static companyMeetingConfigInfo;
private static meetingInfo;
private static meetingControlOptions;
/**.
* 初始化SDK
*
* @param options - 初始化参数
* @param {String} options.appId 跟商务人员获取
* @param {String} options.baseURL 接口的 baseURL, 部署完成之后的
* @param {String} options.domain 部署完成的展示页面的域名或者ip
* @example
* ```js
* BoomMeetingExternal.setup({appId, baseURL, domain})
* ```
* @returns {Boolean} true:成功 false:失败
* 参见{@link ISetupParam}
*/
static setup(options: ISetupParam): boolean;
static getVersion(): string;
private static isExternalUser;
/**.
* 登录 Boom服务. 内部用户使用
*
* @param {Object} options
* @param {string} options.nonce - 接入方后端返回, 通过Boom提供的op/v2/auth/signature接口.
* @param {string} options.userId - 接入方的用户id,.
* @param {string} options.nickname - 接入方的用户昵称,.
* @param {string} options.avatar - 接入方的用户用户头像.
* @param {string} options.signature - 接入方后端返回, 通过Boom提供的op/v2/auth/signature接口.
* @param {string} options.expireTime - 接入方后端返回, 通过Boom提供的op/v2/auth/signature接口.
* @example
* ```ts
* BoomMeetingExternal.login({ userId, nonce, expireTime, nickname, signature }).then(res => {
if (res.code === 200) {
showToast('登录成功')
} else {
showToast('登录失败')
}
}).catch(error => {
console.log(error)
})
*```
*/
static login(options: ILoginParam): Promise<IResponse>;
/**
* 三方用户登录Boom服务-(带账号体系).
*
* @param {Object} options
* @param {string} options.nonce - 接入方后端返回, 通过Boom提供的接口.
* @param {string} options.extUserId - 接入方的用户id,.
* @param {string} options.nickname - 接入方的用户昵称,.
* @param {string} options.avatar - 接入方的用户用户头像.
* @param {string} options.signature - Signature.
* @param {string} options.expireTime - 接入方token过期时间,.
* @example
* ```ts
* BoomMeetingExternal.loginExternalAccount({ extUserId, nonce, expireTime, nickname, signature }).then(res => {
if (res.code === 200) {
showToast('登录成功')
} else {
showToast('登录失败')
}
}).catch(error => {
console.log(error)
})
// signature 计算方式 使用这个库 CryptoJS
function signatureEncode(msg, app_secret) {
let hash = CryptoJS.HmacSHA256(msg, app_secret)
let res = CryptoJS.enc.Hex.stringify(hash)
return res
}
let strBefore = app_id + ":" + userId + ':' + nickname + ":" + avatar + ":" + expireTime + ":" + nonce
let signature = signatureEncode((strBefore), app_secret)
* ```
*/
static loginExternalAccount(options: IExtLoginParam): Promise<unknown>;
/**.
* 退出Boom服务
*
* @example BoomMeetingExternal.logout()
*/
static logout(): Promise<IResponse>;
/**.
* 创建房间
*
* @param {Object} options
* @param {Number} [options.mode=1] 房间模式 1 = 会议;2 = 直播
* @param options.room_type 房间类型 1 = 公开;0 = 非公开
* @param {String} options.room_name 房间名称
* @param {Number} options.start_time 会议开始时间戳(单位秒),不能少于当前时间戳半小时以上
* @param {Number} options.end_time 会议结束时间戳(单位秒)
* @param {String} options.creator 创建者id
* @param {String} options.creator_nickname 创建者昵称
* @param {Number} options.user_num 房间人数限制 0表示无限制
* @param {String} options.secret 房间密码
* @param {Boolean} [options.is_must_host= 0] 是否允许嘉宾在主持人进会前加入会议 0 允许 1 不允许
* @param {Boolean} [options.is_record=false] 是否自动开启云录,默认值为 false。
* @param {Object} [options.record] 设置云录参数
* @param {String} [options.record.notify_url] 云录回调地址
* @param {Object} [options.record.params] 云录透传参数
* @param {String} options.guests 嘉宾列表的用户id,逗号隔开 'user01,user02,user03,user04'
* @param {String} options.admins 管理员列表的用户id, 传入之后可以在主持人之前开启直播, 逗号隔开 'admin01,admin02,admin03,admin04'
* @param {Boolean} options.is_mini_app 是否使用小程序 默认false
* @returns Promise<>
* @example
* ```js
* BoomMeetingExternal.create({ room, mode, room_type, room_name, start_time, end_time, creator, creator_nickname, user_num, secret, is_must_host, guests, admins })
*```
* @remarks
*
* 创建房间说明:登录后才可创建
*错误码
- 201:结束时间和开始时间要大于当前时间且结束时间要大于结束时间
- 202:自动生成房间号失败
- 203:会议/直播已存在
- 204:会议或直播正在进行中
- 205:房间创建失败
*/
static create(options: IRoomCreate): Promise<IResponse>;
/**.
* 加入房间
*
* @param {Object} options
* @param {HTMLDivElement} options.parentNode 房间插入的节点
* @param {String} options.roomId 房间号
* @param {String} options.secret 房间密码, 设置了就有(数字,四位), 默认无
* @param {String} options.user 用户ID
* @param {String} options.nickname 昵称
* @param {String} options.avatar 头像
* @param {String} options.screen 是否是会议外投屏, 默认是false
* @param {Boolean} options.audioEnable 打开麦克风
* @param {Boolean} options.videoEnable 打开摄像头
* @param {Number} options.identity 身份(即将废弃) 1: 主持人, 2: 嘉宾, 3: 观众, 4: 游客观众 5: 管理员 6: 普通参会者 9: 巡视员
* @param {Number} options.userType 身份 1: 主持人, 20:管理员, 21:巡视员, 30:嘉宾, 40:参会者, 50:观众(直播), 51:游客(观众)
* @param {String} options.mode 模式 meeting:会议, live:房间
* @param {IJoinMeetingElectron} options.electron electron PC客户端
* @param {String} options.electron.isElectron electron electron环境
* @param {Function} options.electron.callback electron electron环境回调
* @param {IMeetingControl} options.meetingControlOptions 设置隐藏房间间内的按钮
* @param {Boolean} options.visitorDocument 展示会议内全员可上传文档入口
* @param {Number} options.isControl 会控挑屏等配置项 0: 是挑屏 1:播控 2:会控 3:调度 4: TY视频会议进入会控 5: TY学习会进入会控
* @param {Boolean} options.subVenue 是否为分会场
* @param {Boolean} options.voiceEncourage 是否开启语音激励 0:不开启,1:开启
* @param {Boolean} options.showMeetingTopic 是否展示会议主题
* @param {Boolean} options.singleTalk 是否为单聊会议
* @returns {Promise} promise<>
* @example
* ```ts
* 入会说明:登录后才可入会,首先主持人加入房间,接着嘉宾&观众入会;若主持人未加入房间,会提示“直播暂未开始, 等待主持人加入,注意:不同角色入会需要打开新的浏览器窗口”
* BoomMeetingExternal.join({roomId: '424830', nickname:'nickname'})
*
* 错误码说明:
* 201-查询不到房间信息
*
* 202-房间信息校验失败
*
* 203-会议/直播暂未开始
*
* 204-房间信息获取失败
*
* 205-房间容量已经达到上限
*
* 210-未输入密码
*
* 212-密码错误
* ```
*/
static join(options: IJoinMeetingParam): Promise<IResponse>;
private static private_join;
/**.
* 设置入会身份展示名称
*
* @param {Object} options 设置入会的用户角色
* @param {String} options.sponsor 设置入会发起人身份的展示文字
* @param {String} options.host 设置入会主持人身份的展示文字
* @param {String} options.admin 设置入会管理员身份的展示文字
* @param {String} options.guest 设置入会嘉宾身份的展示文字
* @param {String} options.tourist 设置入会观众身份的展示文字
* @param {String} options.guestNameSetting 设置入会参会者列表展示区嘉宾区的展示文字
* @returns promise<>
* @example
* const userRoles = {
sponsor:"发起人",
host:"主持人",
admin:"管理员",
guest:"嘉宾",
tourist:"观众",
guestNameSetting:"嘉宾"
}
* BoomMeetingExternal.setRole(userRoles)
*/
static setRole(role: IUserRoles): Promise<IResponse>;
/**.
* 设置宫格最大显示窗口数
*
* @param {Number} windowNumber 窗口数 (输入的值应大于等于4小于等于25)
*/
static setWindowNumber(windowNumber: number): Promise<IResponse>;
/**.
* 巡检管理员加入房间
*
* @param {Object} options
* @param {HTMLDivElement} options.parentNode 房间插入的节点
* @param {String} options.roomId 房间号
* @param {String} options.secret 房间密码, 设置了就有(数字,四位), 默认无
* @param {String} options.user 用户ID
* @param {String} options.nickname 昵称
* @param {String} options.avatar 头像
* @param {String} options.mode 模式 meeting:会议, live:房间
* @param {Number} options.isControl 会控挑屏等配置项 0: 是挑屏 1:播控 2:会控 3:调度 4: TY视频会议进入会控 5: TY学习会进入会控
* @param {Boolean} options.subVenue 是否是分会场
* @param {IMeetingControl} options.meetingControlOptions 设置隐藏房间间内的按钮
* @example
* ```ts
* 巡检管理员入会说明:登录后才可入会,首先主持人加入房间,然后巡检入会;若主持人未加入房间,会提示“直播暂未开始, 等待主持人加入,注意:不同角色入会需要打开新的浏览器窗口”
* BoomMeetingExternal.robotJoin({roomId: 424830, user:''user', nickname:'nickname', mode: 'live'}).catch(err => {
if (err.code === 9) {
console.log('参数不正确')
} else if (err.code === 10) {
console.log('房间不存在')
} else if (err.code === 19) {
console.log('房间容量已达上限, 不可加入')
} else if (err.code === 34) {
console.log('直播暂未开始, 等待主持人加入')
} else if (err.code === 108) {
console.log('请输入密码')
} else if (err.code === 14) {
console.log('密码错误, 请重新输入')
}
});
* ```
* @returns Promise
*/
static robotJoin(options: IJoinMeetingParam): Promise<IResponse>;
/**.
* 设置邀请信息
*
* @param {Object} option 邀请信息
* @param {String} option.inviter 邀请人信息
* @param {String} option.inviteInfo 可复制的邀请信息
* @param {String} option.title 房间名称
* @param {String} option.productName 产品名称
* @param {String} option.time 会议时间
* @param {String} option.roomNumber 会议号
* @param {String} option.password 会议密码
* @param {String} option.awaken 邀请唤起链接
* @param {String} option.language
* @param {String} option.isSeminars 是否直播
* @param {String} option.isLZ
* @param {Boolean} option.onlyInvite 是否是非公开会议
* @param {Boolean} option.onlyInfoInvite 是否仅邀请信息邀请
* @example BoomMeetingExternal.setInvitationInfo(info)
@returns {Promise}
*/
static setInvitationInfo(option: InvitationInfo): Promise<unknown>;
/**.
* 设置房间配置属性,可扩展
*
* @param {Object} info 设置的信息
* @param {Object} info.invitationInfo 名称
* @param {String} info.invitationInfo.title
* @param {String} info.invitationInfo.time
* @param {String} info.invitationInfo.productName
* @param {String} info.invitationInfo.roomNumber
* @param {String} info.invitationInfo.password
* @param {String} info.invitationInfo.awaken
* @param {String} info.invitationInfo.introduceUrl
* @param {String} info.invitationInfo.language
* @param {String} info.invitationInfo.isSeminars
* @param {String} info.invitationInfo.isLZ
* @param {String} info.invitationInfo.onlyInvite
* @param {Object} info.agreementAndLogoInfo logo地址
* @param {String} info.agreementAndLogoInfo.name logo地址
* @param {String} info.agreementAndLogoInfo.logo logo地址
* @param {String} info.agreementAndLogoInfo.userAgreement logo地址
* @param {String} info.agreementAndLogoInfo.privacyPolicy 隐私政策地址
* @param {Object} info.commonConfigInfo 通用config.
* @param {Object} info.streamConfig 流的通用config.
* @param {boolean} info.streamConfig.disableSmallStream true/false 关闭大小流
* @param {String} info.streamConfig.videoHint 'detail' | 'motion' 1.保证采集的流清晰度优先设置到流的track上面,
* @param {String} info.streamConfig.sourceType 'screen' | 'camera' 2.告诉服务端这个流不需要动态降分辨率,通过特殊标识
*
* @example
* ```ts
* let agreementAndLogoInfo = {
name: 'Boom',//名称
logo: 'https://cb-web-sdk.boom.cn/static/media/setting_logo.d20d7992.png',//logo地址
userAgreement: 'https://cb-web.boom.cn/p/serviceAgreement.html',//用户协议地址
privacyPolicy: 'https://cb-web.boom.cn/train/conceal?isConceal=true',//隐私政策地址
appVersion: '0.0.1' // 当前版本
}
BoomMeetingExternal.setRoomConfig({agreementAndLogoInfo:agreementAndLogoInfo})
| Parameter | Type | Description |
| --------------------------------------- | ------ | ------------------------------------------------------------ |
| info.invitationInfo | Object | 邀请信息 |
| info.invitationInfo.title | | |
| invitationInfo.time | | |
| info.invitationInfo.productName | | |
| info.invitationInfo.roomNumber | | |
| info.invitationInfo.password | | |
| info.invitationInfo.awaken | | |
| info.invitationInfo.introduceUrl | | |
| info.invitationInfo.language | | |
| info.invitationInfo.isSeminars | | |
| info.invitationInfo.onlyInvite | | |
| info.agreementAndLogoInfo | | |
| info.agreementAndLogoInfo.name | | |
| info.agreementAndLogoInfo.logo | | |
| info.agreementAndLogoInfo.userAgreement | | |
| info.agreementAndLogoInfo.privacyPolicy | | |
| info.commonConfigInfo | Object | |
| info.streamConfig | Object | 推流信息配置 |
| info.streamConfig.disableSmallStream | boolen | true/false 关闭大小流,默认值false |
| info.streamConfig.videoHint | string | 'detail' / 'motion' 1.保证采集的流清晰度优先设置到流的track上面 默认值 motion |
| info.streamConfig.sourceType | string | 'screen' / 'camera' 告诉服务端这个流不需要动态降分辨率,通过特殊标识 默认值 camera |
*```
*
@returns {Promise} Promise
*/
static setRoomConfig(info: any): Promise<unknown>;
/**.
* 离开房间
*
* @returns Promise
* @example BoomMeetingExternal.leave()
*/
static leave(): Promise<IResponse>;
/**.
* 结束房间
*
* @returns Promise
* @example BoomMeetingExternal.release()
*/
static release(): Promise<IResponse>;
/**.
* 获取参会人员列表
*
* @returns Promise<>
* @example
* ```ts
* BoomMeetingExternal.getParticipants()
* ```
*/
static getParticipants(): Promise<IResponse>;
/**.
* 主题颜色配置
*
* @returns Promise<>
*/
static setTheme(theme: any): Promise<IResponse>;
/**.
* 开始云录
* 会议开始并推流后即可开始录制
* @param {String} roomNumber 会议号
* @example BoomMeetingExternal.startCloudRecord(roomNumber)
@returns {Promise}
*/
static startCloudRecord(roomNumber: string): Promise<IResponse>;
/**.
* 结束云录
* @param {String} roomNumber 会议号
* @example BoomMeetingExternal.endCloudRecord(roomNumber)
@returns {Promise}
*/
static endCloudRecord(roomNumber: string): Promise<IResponse>;
/**.
* 国际化配置
*
* @returns Promise<>
*/
static setLanguage(language: any): Promise<IResponse>;
/**.
* 获取主持人
*
* @returns Promise<>
* @example
* ```ts
* BoomMeetingExternal.getMaster()
* ```
*/
static getMaster(): Promise<IResponse>;
/**.
* 会控按钮可配置
*
* @param {IMeetingControl} options.meetingControlOptions 设置隐藏房间间内的按钮
* @param {Object} options
* @param {Boolean} options.hideCamera
* @param {Boolean} options.hideLoudspeaker
* @param {Boolean} options.hideInvite
* @param {Boolean} options.hideShare
* @param {Boolean} options.hideChat
* @param {Boolean} options.hideParticipant
* @param {Boolean} options.hideDocument
* @param {Boolean} options.hideRecord
* @param {Boolean} options.hideSetting
* @param {Boolean} options.hideLeaveRoom
* @returns {Promise} Promise<>
* @example
* ```ts
* BoomMeetingExternal.meetingCtrlConfig({
* hideMicrophone: false,
hideCamera: false,
hideLoudspeaker: false,
hideInvite: true,
hideShare: true,
hideChat: true,
hideParticipant: false,
hideDocument: true,
hideRecord: true,
hideSetting: false,
hideLeaveRoom: false
})
* ```
*/
static meetingCtrlConfig(options: IMeetingControl): any;
/**.
* 会控功能配置. join之前调用
*
* @param {IMeetingControlOptions} options - // Options.
* @param {Boolean} [options.cancelAutoPull] 是否取消自动拉流
* @returns {void}
* @example BoomMeetingExternal.setupMeetingControlOptions({cancelAutoPull: true})
*/
static setupMeetingControlOptions(options: IMeetingControlOptions): void;
/**.
* 截取用户图像
*
* @param {String[]} ids 用户id数组
* @returns Promise<> {userId1: Base64Image1, userId2: Base64Image2 }
* @example BoomMeetingExternal.snapshot(['userId1', 'userId2']).then((res)=> { console.log('res:', res) })
*/
static snapshot(ids: string[]): Promise<IResponse>;
/**.
* 一键截图
*
* @returns Promise<>
*/
/**.
* 修改主持人
*
* @param {String} id 新主持人id
* @returns Promise<>
*/
/**.
* 收回主持人
*
* @returns Promise<>
*/
/**.
* 设置联席主持人
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 撤销联席主持人
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 获取全部嘉宾
*
* @returns Promise<>
*/
/**.
* 获取全部观众
*
* @returns Promise<>
*/
/**.
* 获取联席主持人
*
* @returns Promise<>
*/
/**.
* 嘉宾音频举手/本地手放下
*
* @returns Promise<>
*/
/**.
* 嘉宾手放下
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 观众音频举手/本地手放下
*
* @returns Promise<>
*/
/**.
* 观众音频手放下
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 群体手放下
*
* @returns Promise<>
*/
/**.
* 嘉宾视频举手(废弃)
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 同步全屏状态
* @internal
* @param {Boolean} isFull: true-最大化状态 false-非最大化状态
* @param isFull
* @example
*/
static syncFullStatus(isFull: boolean): Promise<IResponse>;
/**.
* 同步全屏按钮状态
* @internal
* @param {Boolean} isMax: true-全屏状态 false-非全屏状态
* @param isMax
* @example
*/
static syncMaxStatus(isMax: boolean): Promise<IResponse>;
/**.
* 观众群体手放下(废弃)
*
* @returns Promise<>
*/
/**.
* 同意观众音频举手
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 同意嘉宾音频举手
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 同意嘉宾视频举手
*
* @param {String} id 用户id
* @returns Promise<>
*/
/**.
* 开启屏幕录制
*
* @returns Promise<>
*/
/**.
* 结束屏幕录制
*
* @returns Promise<>
*/
/**.
* 更名
*
* @param {String} id 用户id
* @param {String} nickname 用户新昵称
* @returns Promise<>
* @example BoomMeetingExternal.rename(id, name)
*/
static rename(id: string, nickname: string): Promise<IResponse>;
/**.
* 从房间踢出用户
*
* @param {String} id 用户id
* @returns Promise<>
* @example
* ```ts
* BoomMeetingExternal.evictUser(id)
* ```
*/
static evictUser(id: string): Promise<unknown>;
/**.
* 开关本地摄像头
*
* @returns Promise<>
* @example BoomMeetingExternal.setLocalVideoEnable()
*/
static setLocalVideoEnable(videoEnable: boolean): Promise<IResponse>;
/**.
* 开关本地麦克风
*
* @returns Promise<>
* @example BoomMeetingExternal.setLocalAudioEnable(audioEnable: boolean)
*/
static setLocalAudioEnable(audioEnable: boolean): Promise<IResponse>;
/**.
* 开关远端摄像头
*
* @param {String} id 用户id
* @returns Promise<>
* @example BoomMeetingExternal.muteRemoteVideoStream(id)
*/
private static muteRemoteVideoStream;
/**.
* 开关远端麦克风
*
* @param {String} id 用户id
* @returns Promise<>
* @example BoomMeetingExternal.muteRemoteAudioStream(id)
*/
private static muteRemoteAudioStream;
/**.
* 开关扬声器
*
* @returns Promise<>
* @example BoomMeetingExternal.setLocalSpeaker()
*/
private static setLocalSpeaker;
/**.
* 全员静音
*
* @param {Boolean} openBySelf 是否允许用户自行打开麦克风
* @returns Promise<>
* @example BoomMeetingExternal.setAllMuted(openBySelf)
*/
static setAllMuted(openBySelf: boolean): Promise<unknown>;
/**.
* 结束全员静音
*
* @returns Promise<>
* @example BoomMeetingExternal.setAllUnMuted()
*/
static setAllUnMuted(): Promise<unknown>;
/**
* @internal
*/
protected static eventMap: Map<string, (data: any) => void>;
/**.
* 添加事件监听
*
* @param {String} key 事件名称
* 'participant-joined': 用户加入,
'participant-left': 用户离开,
'room-connected': 房间连接,
'get-participants'获取会议内用户列表
'room-error': 房间错误,
'room-end': 房间结束, 结束类型: data.detail.releaseType 房间释放类型:release 释放房间 leave 离开房间 是否为自己结束会议:data.detail.isSelf 是自己结束: true 非自己结束false data.detail.meetingCommonConfig 偏好设置: openCamera 入会是否开启摄像头、openMicrophone 入会是否开启麦克风
userStatsNotice:是否开启进离会通知
'full-screen': 全屏,
'need-secret': 需要密码,
'change-master': 主持人变更
'shareEvent': 分享会议, 房间号: data.detail.roomId
'inviteEvent': 添加参会人, 房间号: data.detail.roomId
'callUserEvent': 呼叫未入会人员,返回的呼叫人员数组: data.detail,
'fullScreen': 最大化,
'exitFullScreen': 退出最大化,
'minApp': 最小化,
'doubleClick':标头双击事件,
'maxWindow': '全屏',
'exitMax':'退出全屏',
'changeClientSize':'改变会议窗口大小'
'signalChanged' : 信号源改变 data.detail.signal, customInfo: { signals:[{ name: '摄像头1', value: 's1'}, { name: '摄像头 2 ', value: 's2' }] }
* @param {Function} callback 回调函数
* @example BoomMeetingExternal.on('room-end', callback)
*/
static on(key: string, callback: (data: any) => void): void;
static off(key: string): void;
private static __create;
private static createIframe;
private static checkIframe;
private static idConvert;
private static _snapshot;
private static _snapshotAll;
private static _startRecord;
private static _stopRecord;
private static _notifyRecord;
private static _notifyStopRecord;
/**.
* 获取boom内部分享链接
*
* @param {string} roomId
* @returns {Promise}
* @example
*/
private static getBoomShare;
/**.
* 获取会中人员列表
*
* @returns
* @example
*/
private static _getParticipants;
private static _getMaster;
private static _evictUser;
private static _setTheme;
private static _statCloud;
private static _endCloud;
private static _setLanguage;
/**.
*设置摄像头的视频分辨率,要在入会之前设置!
* @param {VideoProfile} vProfile
* @example
*```ts
* BoomMeetingExternal.setup({
appId: config.appId,
baseURL: config.baseURL,
domain: config.domain
})
BoomMeetingExternal.setVideoProfile('720p')
*```
*/
static setVideoProfile(vProfile: VideoProfile): void;
/**.
* 参会者列表有几个tab
* join 之前设置
*
* @param {number} column
* @example
* BoomMeetingExternal.setUserListColumns(1)
*/
static setUserListColumns(column: number): void;
/**.
* 设置推流参数
* join 之前设置
*
* @param {number} config
* @example
* BoomMeetingExternal.setUserListColumns(1)
*/
static setStreamConfig(config: number): void;
/**.
* 设置当前采用的排序规则
*
* @param {number} type 1 是标品排序方式 2 是自定义排序
* @example
*
*/
static setSortType(type: number): void;
/**.
* 是否显示会议主题
* join 之前设置
*
* @param {boolean} meetingTopic
* @example
* BoomMeetingExternal.setMeetingTopic(false)
*/
static setMeetingTopic(meetingTopic: boolean): void;
/**.
* 是否为单聊模式
* join 之前设置 是单聊模式传true 非单聊传false
*
* @param {boolean} setSingle
* @example
* BoomMeetingExternal.setMeetingTopic(false)
*/
static setSingleTalk(setSingle: boolean): void;
/**.
* 直播结束后房间统计页面
*
* @param {object} options
* @param {string} options.roomId 房间表ID
* @param {HTMLElement} options.parentNode 统计页面挂载节点
* @example
* BoomMeetingExternal.staticsPage({roomId, parentNode})
*/
static staticsPage(options: StaticsPageOptions): boolean;
/**.
* 直播结束后 视频剪辑页面 和 查看剪辑列表页面
*
* @param {object} options
* @param {string} options.roomId 房间表ID
* @param {string} options.videoUrl 视频地址
* @param {HTMLElement} options.parentNode 视频剪辑页面挂载节点
* @returns {boolean}
* @example
* BoomMeetingExternal.clipPage({roomId, videoUrl, parentNode})
*/
static clipPage(options: ClipPageOptions): boolean;
/**
* 课后评价管理页面
* @param options
* @returns
*/
static evaluationView(options: EvaluationOptions): boolean;
}
declare global {
interface Window {
BoomMeetingExternal: any;
BMQTBridge: any;
electron: any;
}
}
export { ClipPageOptions, ControlRoutesOptions, EvaluationOptions, IExtLoginParam, IJoinMeetingElectron, IJoinMeetingParam, ILoginParam, IMeetingControl, IMeetingControlOptions, IResponse, IRoomCreate, ISetupParam, IUserRoles, InvitationInfo, StaticsPageOptions, VideoProfile, BoomMeetingExternal as default };