# 常用功能管理

本文将介绍访客常用的基础功能。

# 随路参数

在发起呼叫时携带额外信息。

/**
 * 发起呼叫
 * @param number 组号
 * @param callParam 参数设置
 * @return 接口调用成功失败
 */
- (bool)call:(NSString *)number callParams:(JCGuestCallParam *)callParam;
/**
 * 呼叫到指定坐席
 * @param number 坐席 id
 * @param callParam 参数设置
 * @return 接口调用成功失败
 */
- (bool)oneToOneCall:(NSString *)number callParams:(JCGuestCallParam *)callParam;

呼叫时通过callParam.extraInfo把随路参数传给坐席。

# 透明通道

给通话中的成员发送文字消息。

/**
 * 发送消息
 * @param type 消息类型
 * @param content 消息内容
 * @return 接口调用结果
 */
- (bool)sendMessage:(NSString *)type content:(NSString *)content;
/**
 * 发送消息 (一对一)
 * @param type 消息类型
 * @param content 消息内容
 * @param userId 接收者id
 * @return 接口调用结果
 */
- (bool)sendMessage:(NSString *)type content:(NSString *)content toUserId:(nullable NSString *)userId;

文字内消息通过实现 JCAgentCallback 中的 onMessageReceive (opens new window) 接口上报。

/**
* @brief 收到消息
*
* @param type 消息类型
* @param content 消息内容
* @param fromUserId    消息发送成员的userId
*/
- (void)onMessageReceive:(NSString *)type content:(NSString *)content fromUserId:(NSString *)fromUserId;

# 文本消息

由于会议内透明通道接口要用来处理很多业务流程,故单独封装了用于通话中进行文字交流的接口。

接口原型:

/// 发送文本消息,消息内容不能大于4K
/// @note 通话中的其他成员会收到{@link JCAgentCallback#onTextMessageRecvNotify:fromUserId: onTextMessageRecvNotify}事件
/// @param content 消息内容
/// @param userId 三人及三人以上时可以指定要发送的ID,传空即发送给所有人
- (void)sendTextMessage:(NSString *)content toUserId:(NSString *)userId;

对方收到消息之后会收到回调。

/// 收到文本消息
/// @param content 消息内容
/// @param userId 发送方的ID
- (void)onTextMessageRecvNotify:(NSString *)content fromUserId:(NSString *)userId;

onTextMessageRecvNotify (opens new window) 调用示例:

[_guest sendTextMessage:@"1111" toUserId:NULL];

- (void)onTextMessageRecvNotify:(NSString *)content fromUserId:(NSString *)userId {
    // 收到消息,内容content,发送者userId
}

# 排队人数

排队人数通过实现 JCGuestCallback 中的 onCallQueueCount (opens new window) 接口上报(5s自动上报一次)

- (void)onCallQueryWaitCount:(int)count;

# 获取访客对象

通过 JCGuest.agentParticipant (opens new window) 获取访客对象。

# 加急

访客呼叫时申请加急优先进行通话:

/**
*  @brief 请求加急
*  @return 接口调用成功返回 true,失败返回 false
*/
- (bool)requestUrgent;

加急结果通过实现 JCGuestCallback 中的 onUrgentResult (opens new window) 接口上报:

/**
* 坐席处理加急的结果
* @param agree 加急是否通过
*/
- (void)onUrgentResult:(bool)agree;

# 在线消息

只要登录到 Juphoon Cloud 平台就可以通过 JCClient (opens new window) 实现在线消息的收发。

/**
 * 发送在线消息
 *
 * @param message 消息内容
 * @param userId 对方的 id
 * @return 成功返回整型的相应的 消息 id,收到{@link JCClientCallback#onOnlineMessageSendResult:messageId: onOnlineMessageSendResult}的通知
 * 失败返回 -1 不会收到{@link JCClientCallback#onOnlineMessageSendResult:messageId: onOnlineMessageSendResult}的通知
 */
- (int)sendOnlineMessage:(NSString* __nonnull)message userId:(NSString* __nonnull)userId;
/**
 * 在线消息发送结果
 *
 * @param result 发送结果是否成功
 * - true:发送成功
 * - false:发送失败
 * @param messageId 消息 id
 */
- (void)onOnlineMessageSendResult:(BOOL)result messageId:(int)messageId;
/**
 * 收到在线消息
 *
 * @param message 消息内容
 * @param userId  对方 id
 */
- (void)onOnlineMessageReceived:(NSString *)message userId:(NSString *)userId;

调用示例:

发送在线消息

[_client sendOnlineMessage:messageField.text userId:userIdField.text];

接收在线消息发送结果

- (void)onOnlineMessageSendResult:(BOOL)result messageId:(int)messageId {
    if (result) {
        // 在线消息发送成功
    } else {
        // 在线消息发送失败
    }
}

收到在线消息通知

- (void)onOnlineMessageReceived:(NSString *)message userId:(NSString *)userId {
    NSLog(@"收到在线消息,内容:%@, 发送方id:%@", message, userId);
}

# 电子签名

当坐席发起电子签名,访客触发 JCGuestCallback 中的 onSignRequestRecvNotify (opens new window) 回调

/// 收到签名请求
- (void)onSignRequestRecvNotify;