# Plugin进阶应用
# 设置定制化参数
/**
* 设置定制配置参数
*
* @param customConfig 定制化配置参数
*/
setCustomConfig(config: JCCCommonCustomConfig<T>);
定制化配置参数
// 通用定制化配置
class JCCCommonCustomConfig {
talkingConfig: JCCTalkingConfig;
}
// 视频客服定制化配置
export class JCCGuestCustomConfig extends JCCCommonCustomConfig {
waitingConfig: JCCWaitingConfig;
}
// 呼叫参数
class JCCWaitingConfig {
urgent: boolean; // 加急呼叫,默认true
}
// 通话参数
class JCCTalkingConfig {
toolBarBackground: string; // 工具栏背景色,工具栏背景色,支持css颜色值,默认rgba(35, 35, 35, 0.7)
localVideoFullScreen: boolean; // 本端全屏显示, 默认true
remoteVideoFullScreen: boolean; // 远端全屏显示, 默认false
videoHoldLastFrame: boolean; // 视频保持最后一帧, 默认false
}
示例代码
const customConfig = new JCCGuestCustomConfig();
customConfig.waitingConfig.urgent = false;
customConfig.talkingConfig.localVideoFullScreen = false;
...
JCCCallManager.shared().setCustomConfig(customConfig);
# 参数说明
# 1. 登录参数 JCCClientLoginParam
class JCCClientLoginParam {
userName = ''; // 用户名
displayName = ''; // 昵称
appKey = ''; //用户从 Juphoon RTC 平台上申请的 AppKey 字符串
server = ''; // 服务地址
terminalType = ''; // 获取终端登录类型
deviceId = ''; // 获取设备ID
token = ''; // 校验token
tokenType = '' ; // token类型
tokenExtraParam = ''; // token额外参数
}
# 2. 呼叫参数 JCCCallCenterCallParam
// 视频客服guest呼叫参数
class JCCCallCenterCallParam {
maxResolution = JCCResolution.R_720; // 最大分辨率 default = 720P;
maxFrameRate = 24; // 最大帧率 default = 24
svcResolution = "1 180 250 360 600 720 1400"; // svc分辨率 default = "1 180 250 360 600 720 1400"
videoDefinition = JCCVideoDefinition.CUSTOM; // 房间视频清晰度
extraInfo = ''; // 随路参数
heartbeatTime = 20; // 心跳间隔 default = 20
heartbeatTimeout = 60; // 心跳超时 default = 60
securityType = JCCSecurityType.DISABLE;
autoRecord = true; // 是否自动录制 default = true
videoEncodeType = JCCVideoEncodeType.H264; // 视频编码 default = H264
audioEncodeType = JCCAudioEncodeType.OPUS; // 音频编码 default = OPUS
multiStream = false; // 是否多流合流
vipPower = 0; // 呼叫权重
}
# 3. 通话属性变化参数 JCCRoomPropChangeParam
// 通话房间属性变化参数
export class JCCRoomPropChangeParam {
/**
* 上传音频状态是否变化
* - true: 变化
* - false: 没变化
*/
uploadAudio = false;
/**
* 上传视频状态是否变化
* - true: 变化
* - false: 没变化
*/
uploadVideo = false;
/**
* 远程录制状态是否变化
* - true: 变化
* - false: 没变化
*/
remoteRecordState = false;
/**
* 屏幕共享状态是否变化
* - true: 变化
* - false: 没变化
*/
screenShare = false;
}
# 4. 通话成员 JCCRoomParticipant
// 通话成员
class JCCRoomParticipant {
netStatus = 0;
role = -1; // 角色
audio = false; // 是否打开音频
video = false; // 是否打开视频
type = 0; // JCCRoomParticipantType
userId = ''; // 用户Id
userUri = string;// 用户Uri,主要用于服务器交互使用,同步移动端
displayName = string; // 昵称
virtual = false; // 是否虚拟成员
streamUrl = ''; // 推拉流地址
changeParam = {}; // JCCRoomParticipantChangeParam
}
# 5. 房间成员属性变化参数 JCCRoomParticipantChangeParam
// 房间成员属性变化参数
class JCCRoomParticipantChangeParam {
/**
* 上传音频是否变化
* - true: 变化
* - false: 没变化
*/
audio = false;
/**
* 上传视频是否变化
* - true: 变化
* - false: 没变化
*/
video = false;
/**
* 视频请求大小是否变化
* - true: 变化
* - false: 没变化
*/
videoSize = false;
/**
* 成员类型是否变化
* - true: 变化
* - false: 没变化
*/
type = false;
/**
* 成员网络状态是否变化
* - true: 变化
* - false: 没变化
*/
netStatus = false;
}
# 枚举值说明
登录状态 JCCClientState
/**
* 登录状态枚举
*/
export const JCCClientState = {
/**
* 未初始化
*/
NOT_INIT : 0,
/**
* 未登录
*/
IDLE : ClientState.IDLE,
/**
* 登录中
*/
LOGINING : ClientState.LOGINING,
/**
* 登录成功
*/
LOGINED : ClientState.LOGINED,
/**
* 登出中
*/
LOGOUTING : ClientState.LOGOUTING,
}
通话结束的原因 JCCCallTermReason
/**
* 通话结束的原因
*/
export const JCCCallTermReason = {
/**
* 无错误
*/
NONE : 0,
/*
* 本端结束通话
*/
QUIT : CallTermReason.QUIT,
/**
* 对端结束通话
*/
OVER : CallTermReason.OVER,
/**
* 网络异常导致本端结束通话
*/
OFFLINE : CallTermReason.OFFLINE,
/**
* 呼叫来电取消
*/
INCOMING_CANCEL : CallTermReason.INCOMING_CANCEL,
/**
* 呼叫来电超时
*/
INCOMING_TIMEOUT : CallTermReason.INCOMING_TIMEOUT,
/**
* 心跳超时
*/
TIME_OUT : CallTermReason.TIME_OUT,
/**
* 会场人员上限,licence限制
*/
JOIN_LICENCE_LIMIT : CallTermReason.JOIN_LICENCE_LIMIT,
/**
* 拒绝呼叫
*/
REJECT : CallTermReason.REJECT,
/**
* 房间异常(服务端下发)
*/
ROOM_ERROR : CallTermReason.ROOM_ERROR,
/**
* 呼叫失败
*/
CALL_FAIL : CallTermReason.CALL_FAIL,
/**
* 参数错误
*/
INVALID_PARAM : CallTermReason.INVALID_PARAM,
/**
* 方法调用失败
*/
CALL_FUNCTION_ERROR : CallTermReason.CALL_FUNCTION_ERROR,
/**
* 用户未登录
*/
NOT_LOGIN : CallTermReason.NOT_LOGIN,
/**
* 其他原因
*/
OTHER : CallTermReason.OTHER,
}
原因枚举 JCCReasonCode
/**
* 原因枚举
*/
export const JCCReasonCode = {
/**
* 正常
*/
NONE : 0,
/**
* 其他原因
*/
OTHER : ReasonCode.OTHER,
/**
* 参数错误
*/
INVALID_PARAM : ReasonCode.INVALID_PARAM,
/**
* 当前状态无法再次登录
*/
CLI_STATE_CANNOT_LOGIN : ReasonCode.CLI_STATE_CANNOT_LOGIN,
/**
* 登录超时
*/
CLI_TIMEOUT : ReasonCode.CLI_TIMEOUT,
/**
* 登录网络异常
*/
CLI_NETWORK : ReasonCode.CLIENT_NETWORK_ERROR,
/**
* 接入房间网络超时
*/
ROOM_TIMEOUT : ReasonCode.ROOM_TIMEOUT,
/**
* 接入房间网络异常
*/
ROOM_NETWORK : ReasonCode.ROOM_NETWORK,
/**
* 被踢出房间
*/
ROOM_KICKED : ReasonCode.ROOM_KICKED,
/**
* 接入房间掉线
*/
ROOM_OFFLINE : ReasonCode.ROOM_OFFLINE,
/**
* 主动离开房间
*/
ROOM_QUIT : ReasonCode.ROOM_QUIT,
/**
* 房间关闭
*/
ROOM_OVER : ReasonCode.ROOM_OVER,
/**
* 房间成员已满
*/
ROOM_FULL : ReasonCode.ROOM_FULL,
/**
* 房间密码无效
*/
ROOM_INVALID_PASSWORD : ReasonCode.ROOM_INVALID_PASSWORD,
/**
* 该房间号的房间不存在
*/
REASON_CONF_NUMBER_NOT_FOUND : ReasonCode.REASON_CONF_NUMBER_NOT_FOUND,
/**
* 服务器房间成员总数上限(移动端房间人数)
*/
ROOM_APP_CONCURRENCY_FUL : ReasonCode.ROOM_APP_CONCURRENCY_FUL,
/**
* 服务器房间成员总数上限(总房间人数)
*/
ROOM_ALL_CONCURRENCY_FUL : ReasonCode.ROOM_ALL_CONCURRENCY_FUL,
/**
* 房间异常(服务端下发)
*/
ROOM_INTERNAL_ERROR : ReasonCode.ROOM_INTERNAL_ERROR,
/**
* 会场人员上限,licence限制
*/
ROOM_JOIN_LICENCE_LIMIT : ReasonCode.ROOM_JOIN_LICENCE_LIMIT,
// 录制cd被释放
ROOM_AGENT_RELEASE : ReasonCode.ROOM_AGENT_RELEASE,
}
视频编码 JCCVideoEncodeType
/**
* 视频编码
*/
export const JCCVideoEncodeType = {
/**
* H264
*/
H264 : 0,
/**
* AV1
*/
AV1 : 1
}
音频编码 JCCAudioEncodeType
/**
* 音频编码
*/
export const JCCAudioEncodeType = {
/**
* OPUS
*/
OPUS : 0,
/**
* PCMA
*/
PCMA : 1,
/**
* PCMU
*/
PCMU : 2
}
分辨率 JCCResolution
/**
* 分辨率
*/
export const JCCResolution = {
R_360: 0, // 360p
R_720: 1, // 720p
R_1080: 2, // 1080p
}
视频清晰度 JCCVideoDefinition
/**
* 视频清晰度
*/
export const JCCVideoDefinition = {
/**
* 自定义
*/
CUSTOM : 0,
/**
* 流畅模式,低帧率
* svc: 1 90 50 180 130 360 360
* 最大帧率: 15fps
*/
FLUENCY_FRAME_LOW: 1,
/**
* 流畅模式,高帧率
* svc: 1 90 70 180 180 360 480
* 最大帧率: 24fps
*/
FLUENCY_FRAME_HIGH: 2,
/**
* 标清模式,低帧率
* svc: 1 90 50 180 130 360 360 720 900
* 最大帧率: 15fps
*/
STANDARD_FRAME_LOW: 3,
/**
* 标清模式,高帧率
* svc: 1 90 70 180 180 360 480 720 1350
* 最大帧率: 24fps
*/
STANDARD_FRAME_HIGH: 4,
/**
* 高清模式,低帧率
* svc: 1 180 130 360 360 720 900 1080 1600
* 最大帧率: 15fps
*/
HIGH_FRAME_LOW: 5,
/**
* 高清模式,高帧率
* svc: 1 180 180 360 480 720 1350 1080 2200
* 最大帧率: 24fps
*/
HIGH_FRAME_HIGH: 6,
}
加密方式 JCCSecurityType
/**
* 加密方式
*/
export const JCCSecurityType = {
/**
* 不加密
*/
DISABLE : 0,
/**
* SRTP
*/
SRTP: 1,
/**
* SM4
*/
SM4: 2
}
消息类型
/**
* 消息类型
*/
export const JCCMessageType = {
/**
* 未知类型
*/
TYPE_UNKNOWN : -1,
/**
* 一对一消息
*/
TYPE_1TO1 : 0,
/**
* 群组消息
*/
TYPE_GROUP : 2
}
