排队
功能简介: 在呼叫中心的业务场景下,有多个客户呼叫进来,有多个坐席提供服务,简单的一对一呼叫无法满足业务需求。此时可以使用我们的排队功能,客户不再直接呼叫某个坐席,而是呼叫到一个坐席队列,由系统自动给客户分配一个空闲的坐席。
- 当坐席提供的是通用型服务时,多个坐席可以服务于一个队列,客户呼叫这个队列,系统就会自动给客户分配一个空闲坐席。
- 如果是业务高峰期没有空闲的坐席了,客户将在队列中等待,一旦有坐席空闲了就会自动被分配给最先开始等待的客户。
- 坐席可以同时服务多个队列,队列有优先级,当坐席从忙变成空闲时,优先被分配给高优先级的队列里的客户。
- 同一个队列内的坐席可以配置不同的坐席优先级,客户接入时如果同时存在多个空闲坐席,会把客户分配给优先级更高的坐席。
注意:在登录成功后才可以使用排队功能。
排队流程如下:
1.初始化队列,获取队列数据
在登录成功后初始化队列数据
- 调用接口
// 设置队列回调
CloudroomQueue.getInstance().registerCallback(mQueueCallback);
- 回调通知
//可在登录成功后初始化队列数据
void onLoginSuccess() {
// 初始化专家坐席用户队列
CloudroomQueue.getInstance().initQueue("");
}
//队列初始化响应
void initQueueDatRslt(CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
ArrayList<QueueInfo> queueInfos = CloudroomQueue.getInstance().getAllQueueInfo();
}
相关API请参考:
相关结构定义请参考:
2.坐席队列操作
坐席角色开始和停止服务队列,以及操作后队列状态的变化
- 调用接口:
//开始服务队列
CloudroomQueue.getInstance().startService(queID, "");
//停止服务队列
CloudroomQueue.getInstance().stopService(queID, "");
//获取服务的所有队列
ArrayList<Integer> queIDs = CloudroomQueue.getInstance().getServiceQueues();
- 回调通知:
//开始队列服务结果
@Override
void startServiceRslt(int queID, CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
}
//停止队列服务结果
@Override
void stopServiceRslt(int queID, CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
}
//队列状态变化通知
@Override
void queueStatusChanged(QueueStatus queStatus) {
// TODO Auto-generated method stub
}
相关API请参考:
相关结构定义请参考:
3.坐席请求用户
在设置DND免打扰状下态,系统不再自动分配,需要手动申请用户
- 调用接口:
// 设置队列回调
CloudroomQueue.getInstance().registerCallback(mQueueCallback);
//设置免打扰状态,关掉系统自动推送
CloudroomVideoMgr.getInstance().setDNDStatus(1, "");
//手动请求一个用户
CloudroomQueue.getInstance().reqAssignUser("");
//取消免打扰,开启系统自动推送
CloudroomVideoMgr.getInstance().setDNDStatus(0, "");
- 回调通知:
//请求用户的结果
@Override
void reqAssignUserRslt(CRVIDEOSDK_ERR_DEF sdkErr, UserInfo usr, String cookie) {
// TODO Auto-generated method stub
if (sdkErr == CRVIDEOSDK_ERR_DEF.CRVIDEOSDK_NOERR){
// 请求用户成功
}else if(sdkErr == CRVIDEOSDK_ERR_DEF.CRVIDEOSDK_QUE_NOUSER){
// 队列中没有排队人员
}else{
// 手动请求用户失败,代码:sdkErr
}
}
相关API请参考:
4.系统自动给坐席分配用户
系统自动分配的用户在坐席还未选择接受或拒绝时,系统可以撤回分配
- 调用接口:
// 设置队列回调
CloudroomQueue.getInstance().registerCallback(mQueueCallback);
- 回调通知:
//系统自动分配用户通知
@Override
void autoAssignUser(UserInfo usr) {
// TODO Auto-generated method stub
//...
}
//接受或拒绝分配的用户操作响应
@Override
void responseAssignUserRslt(CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
//...
}
//系统撤回分配此用户通知
@Override
void cancelAssignUser(int queID, String usrID) {
// TODO Auto-generated method stub
//取消分配用户的弹框
}
相关API请参考:
5.客户排队操作
客户选择一个队列进行排队,每次只能排一个队列
- 调用接口:
//开始排队
int queID = 1;
CloudroomQueue.getInstance().startQueuing(queID, "");
//停止排队
CloudroomQueue.getInstance().stopQueuing("");
- 回调通知:
//开始排队结果
@Override
void startQueuingRslt(CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
}
//停止排队结果
@Override
void stopQueuingRslt(CRVIDEOSDK_ERR_DEF sdkErr, String cookie) {
// TODO Auto-generated method stub
}
//队列状态变化通知
@Override
void queueStatusChanged(QueueStatus queStatus) {
// TODO Auto-generated method stub
}
//排队信息更新
@Override
void queuingInfoChanged(QueuingInfo queuingInfo) {
// TODO Auto-generated method stub
}
相关API请参考:
相关结构定义请参考: