排队

功能简介 : 在呼叫中心的业务场景下,有多个客户呼叫进来,有多个坐席提供服务,简单的一对一呼叫无法满足业务需求。

  • 当坐席提供的是通用型服务时,多个坐席可以服务于一个队列,客户呼叫这个队列,系统就会自动给客户分配一个空闲坐席。
  • 如果是业务高峰期没有空闲的坐席了,客户将在队列中等待,一旦有坐席空闲了就会自动被分配给最先开始等待的客户。

队列管理使用流程如下:

  1. 初始化队列,获取队列数据
  2. 坐席队列操作
  3. 坐席请求用户
  4. 系统自动给坐席分配用户
  5. 客户排队操作

1.初始化队列,获取队列数据

在登录成功后初始化队列数据

  • 调用接口
// 设置队列回调
[[CloudroomQueue shareInstance] setQueueCallback:self];
  • 回调通知
//可在登录成功后初始化队列数据
- (void)loginSuccess:(NSString *)usrID cookie:(NSString *)cookie {
	// 初始化专家坐席用户队列
	[[CloudroomQueue shareInstance] initQueueDat:@""];
}

//队列初始化响应
- (void)initQueueDatRslt:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
	// TODO Auto-generated method stub
	NSMutableArray <QueueInfo *> * queueInfos = [[CloudroomQueue shareInstance] getQueueInfo];
}

相关API请参考:

相关结构定义请参考:

2.坐席队列操作

坐席角色开始和停止服务队列,以及操作后队列状态的变化

  • 调用接口:
//开始服务队列
[[CloudroomQueue shareInstance] startService:queID cookie:@""];

//停止服务队列
[[CloudroomQueue shareInstance] stopQueuing:queID];

//获取服务的所有队列
NSMutableArray <NSNumber *> *queIDs =  [[CloudroomQueue shareInstance] getServiceQueues];

  • 回调通知:
//开始队列服务结果
- (void)startServiceRslt:(int)queID errCode:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
    // TODO Auto-generated method stub
}
	
//停止队列服务结果
- (void)stopServiceRslt:(int)queID errCode:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
	// TODO Auto-generated method stub
}
	
//队列状态变化通知
- (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, "");
  • 回调通知:
//请求用户的结果
- (void)reqAssignUserRslt:(CRVIDEOSDK_ERR_DEF)errCode userInfo:(UserInfo *)usr cookie:(NSString *)cookie {
	// TODO Auto-generated method stub
    if (sdkErr == CRVIDEOSDK_NOERR){
        // 请求用户成功
    }else if(sdkErr == CRVIDEOSDK_QUE_NOUSER){
        // 队列中没有排队人员
    }else{
        // 手动请求用户失败,代码:sdkErr
    }
}

相关API请参考:

4.系统自动给坐席分配用户

系统自动分配的用户在坐席还未选择接受或拒绝时,系统可以撤回分配

  • 调用接口:
// 设置队列回调
[[CloudroomQueue shareInstance] setQueueCallback:self];
  • 回调通知:
//系统自动分配用户通知
- (void)autoAssignUser:(UserInfo *)usr {
    // TODO Auto-generated method stub
    //...
}

//接受或拒绝分配的用户操作响应
- (void)responseAssignUserRslt:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
    // TODO Auto-generated method stub
    //...
}

//系统撤回分配此用户通知
- (void)cancelAssignUser:(int)queID usrID:(NSString *)usrID {
    // TODO Auto-generated method stub
    //取消分配用户的弹框
}

相关API请参考:

5.客户排队操作

客户选择一个队列进行排队,每次只能排一个队列

  • 调用接口:
//开始排队
int queID = 1;
 [[CloudroomQueue shareInstance] startQueuing:queID cookie:@""];

//停止排队
 [[CloudroomQueue shareInstance] stopQueuing:queID];
  • 回调通知:
//开始排队结果
- (void)startQueuingRslt:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
    // TODO Auto-generated method stub
}

 //停止排队结果
- (void)stopQueuingRslt:(CRVIDEOSDK_ERR_DEF)errCode cookie:(NSString *)cookie {
    // TODO Auto-generated method stub
}

//队列状态变化通知
- (void)queueStatusChanged:(QueueStatus *)queStatus {
     // TODO Auto-generated method stub
}

 //排队信息更新
- (void)queuingInfoChanged:(QueuingInfo *)queuingInfo {
    // TODO Auto-generated method stub
}

相关API请参考:

相关结构定义请参考: