# 快速搭建Plugin
可以查看 JCCGuestManager.md(接口说明文档) 和 JCCGuestCallBack.md(接口回调说明文档)了解支持的接口和回调函数,便于快速实现插件的搭建。
# 1. 初始化销毁
在开始业务前,需要初始化对象,设置回调函数。使用静态 shared 方法获取对象。
/**
* 单例
*/
static shared(): JCCCommonManager<T>
/**
* 添加回调
*
* @param callback 回调接口对象,用于接收 JCCCommonManager 相关通知
*/
addCallback(callback: JCCCommonManager): void;
/**
* 删除回调
*
* @param callback 回调接口对象,用于接收 JCCCommonManager 相关通知
*/
removeCallback(callback: JCCCommonManager): void;
示例代码
// 添加回调
JCCGuestManager.shared().addCallback(this);
// 登录
JCCGuestManager.shared().login({userName:userId, appKey: appKey, server:server});
...
// 删除回调
JCCGuestManager.shared().removeCallback(this);
# 2. 登录
登录菊风账号,调用 login ,登录过程中进行初始化登录配置。
注意:登录成功以后需要关注session的创建销毁回调,如果收到 onSessionDestroy 回调表示session被销毁,需要重新登录。
/**
* 登录 Juphoon RTC 平台,只有登录成功后才能进行平台上的各种业务
*
* 登录结果通过 onLogin 回调通知
* @param param 登录参数
* @returns 接口调用结果
* - true: 接口调用成功
* - false: 接口调用异常
* @note 目前只支持免鉴权模式,服务器不校验账号密码,免鉴权模式下当账号不存在时会自动去创建该账号
* @note 用户名为英文数字和'+' '-' '_' '.',长度不要超过64字符,'-' '_' '.'不能作为第一个字符
*/
public login(param: JCCClientLoginParam): boolean;
回调函数
/**
* 登录结果回调
*
* @param result true 表示登录成功,false 表示登录失败
* @param reason 登录失败原因,当 result 为 false 时该值有效
*/
onLogin(result: boolean, reason: JCCReasonCode): void;
/**
* 登录状态变化通知
*
* @param state 当前状态值
* @param oldState 之前状态值
*/
onClientStateChanged(state: JCCClientState, oldState: JCCClientState): void;
/**
* session 创建结果回调
*
* @param result 创建结果
* - true: 成功
* - false: 失败
*
* @param reason 原因
*/
onSessionCreate(result: boolean, reason: string): void;
/**
* session 销毁回调
* 须重新登录,再进行业务
* @param reason 原因
*/
onSessionDestroy(reason: string): void;
示例代码:
console.log('login user', user);
const userId = user.userName;
const appKey = user.appKey;
const server = user.server;
const ret = JCCGuestManager.shared().login({userName:userId, appKey: appKey, server:server});
/**-------------------------- 回调处理 --------------------------------*/
// 登录结果回调
onLogin(result, reason) {
console.log('onLogin result: ', result, ' reason: ', reason);
}
// 录状态变化通知
onClientStateChanged(state, oldState) {
console.log('onClientStateChanged state: ', state);
// 处理被异常登出情况
}
# 3. 呼叫实现通话
使用 JCCGuestPlugin 组件,放入到应用层的通话页面中。

调用 call 方法,实现呼叫坐席,进行通话。呼叫过程中可以配置呼叫参数。呼叫成功的时候,跳转到通话页面。
/**
* @brief 发起呼叫
* @param number 组号或坐席用户ID
* @param callParam 呼叫参数
* @param oneToOne 是否为点对点呼叫,当为点对点呼叫时,number 参数需传入坐席用户ID;反之则传入业务组号
* @return 接口调用结果
* - YES 表示调用成功,呼叫结果通过 onCallStateChanged 回调通知
* - NO 表示调用异常
*/
call(number: string, callParam: JCCCallCenterCallParam, oneToOne: boolean): boolean;
回调函数
/**
* 通话状态改变回调
*
* @param type 访客通话状态改变类型,即以下情况会收到此回调:
* - {@link JCCCallStateChangeType.CALLING CALLING} 访客呼叫成功
* - {@link JCCCallStateChangeType.WAITING WAITING} 访客呼叫成功后等待座席接听
* - {@link JCCCallStateChangeType.INCOMING INCOMING} 作为第三方访客收到通话邀请
* - {@link JCCCallStateChangeType.TALKING TALKING} 通话接通(第三方访客)或被接通(主访客)
* - {@link JCCCallStateChangeType.TERMED TERMED} 通话挂断或被挂断
* @param incomingType 来电类型,当 type == {@link JCCCallStateChangeType.INCOMING INCOMING} 时有效
* @param inviter 邀请成员对象,当 type == {@link JCCCallStateChangeType.INCOMING INCOMING} 时有效
* @param reason 挂断原因,只在 type 为 {@link JCCCallStateChangeType.TERMED TERMED} 时需要关注
*/
onCallStateChanged(type: JCCCallStateChangeType, incomingType: JCCCallIncomingType, inviter: JCCInviter | undefined, reason: JCCCallTermReason): void;
示例代码
let callParam = new JCCCallCenterCallParam();
callParam.autoRecord = true; // 服务器录制
callParam.captureResolution = 1; // 采集分辨率
callParam.captureFrameRate = 24; // 采集帧率
callParam.extraInfo = ''; // 额外参数
const result = JCCGuestManager.shared().call(number, callParam, false);
if (result) {
// 跳转到通话页面
}
/**-------------------------- 回调处理 --------------------------------*/
// 通话状态改变回调
onCallStateChanged(type, incomingType, inviter, reason) {
console.log('onCallStateChanged ', type);
if (type == JCCCallStateChangeType.TALKING) { // 通话中
} else if (type == JCCCallStateChangeType.TERMED) { // 通话结束
}
}
# 4. 结束通话
插件中已经包含了离开通话的按钮,如果想要应用层结束通话,可以调用 term 结束通话。根据onCallStateChanged 回调结果,判断当前通话状态。
/**
* 挂断
* @returns 接口调用结果
* - true: 接口调用成功
* - false: 接口调用异常
*/
term(): boolean;
示例代码
JCCGuestManager.shared().term();
/**-------------------------- 回调处理 --------------------------------*/
// 通话状态改变回调
onCallStateChanged(type, incomingType, inviter, reason) {
console.log('onCallStateChanged ', type);
if (type == JCCCallStateChangeType.TERMED) { // 通话结束
// 离开通话页面
}
}
/**
* 在线消息发送结果回调
*
* @param result 发送结果是否成功
* - true:发送成功
* - false:发送失败
* @param operatorId 操作id,对应 sendOnlineMessage 的返回值
*/
onOnlineMessageSendResult(result: boolean, operatorId: number): void;
在线消息接收者会收到 onOnlineMessageReceived 回调通知。
/**
* 收到在线消息回调
*
* @param message 消息内容
* @param userId 对方用户ID
*/
onOnlineMessageReceived(message: string, userId: string): void;
示例代码:
// 给成员 agent1 发送在线消息
JCCCallManager.shared().sendOnlineMessage("content", "agent1");
/**-------------------------- 回调处理 --------------------------------*/
// 在线消息发送结果回调
onOnlineMessageSendResult(result,operatorId) {
}
// 收到消息
onMessageReceived(content, fromUserId) {
// 收到消息,消息内容为 content,消息来自 fromUserId
}
# 5. 登出
调用 logout 登出账号。
/**
* 登出 Juphoon RTC 平台,登出后不能进行平台上的各种业务
*
* 登出结果通过 onLogout 回调通知
* @returns 接口调用结果
* - true: 接口调用成功
* - false: 接口调用异常
*/
logout(): boolean;
回调函数
/**
* 登出回调
*
* @param reason 登出原因
*/
onLogout(reason: JCCReasonCode): void;
示例代码
JCCCallManager.shared().logout();
/**-------------------------- 回调处理 --------------------------------*/
onLogout: (reason) => {
console.log('onLogout reason: ', reason);
// 账号登出,销毁处理
},
