AnyChat技术支持论坛

标题: AnyChatQueue示例工程如何自动进入营业厅以及队列? [打印本页]

作者: admin    时间: 2015-7-23 10:22
标题: AnyChatQueue示例工程如何自动进入营业厅以及队列?
AnyChat新版本增加了业务排队功能(参考:AnyChat提供业务排队整体解决方案),目前是登录系统后,系统首先显示营业厅列表,由用户选择后进入营业厅,队列也是一样,进入营业厅之后显示所有队列列表,然后由用户选择后进入队列排队。那如何让系统自动进入指定的营业厅,以及如何让用户自动进入指定的队列呢?

可以通过响应相关的异步事件来实现上面的需求,我们可以先分析AnyChatQueue的相关工作流程:
1、客户端登录服务器成功之后,会触发客户端的登录成功回调(OnAnyChatLoginSystem)事件,通常会在该事件中向服务器发送营业厅数据同步请求:
  1. //向服务器发送数据同步请求指令
  2. BRAC_ObjectControl(ANYCHAT_OBJECT_TYPE_AREA, ANYCHAT_INVALID_OBJECT_ID, ANYCHAT_OBJECT_CTRL_SYNCDATA, mSelfUserId, 0, 0, 0, "");
复制代码
2、服务器收到客户端的数据同步请求之后,便向客户端同步营业厅数据,同步的过程中会触发客户端的异步事件(ANYCHAT_OBJECT_EVENT_UPDATE)同步完成之后,会触发客户端的异步事件(ANYCHAT_OBJECT_EVENT_SYNCDATAFINISH),此时可以通过API:BRAC_ObjectGetIdList来枚举所有营业厅的ID列表,可以根据营业厅ID通过API:BRAC_ObjectGetValue(ANYCHAT_OBJECT_INFO_NAME)来查询营业厅的名称,所以如果需要自动进入指定营业厅,则可以在数据同步完成的异步事件(ANYCHAT_OBJECT_EVENT_SYNCDATAFINISH)中调用进入营业厅的代码,如:
  1. // 进入营业厅
  2. BRAC_ObjectControl(ANYCHAT_OBJECT_TYPE_AREA, dwAreaId, ANYCHAT_AREA_CTRL_USERENTER, 0, 0, 0, 0, "");
复制代码
3、服务器收到客户端进入营业厅的请求后,会向客户端同步营业厅的队列数据,同步的过程中会触发客户端的异步事件(ANYCHAT_OBJECT_EVENT_UPDATE)同步完成之后,会触发客户端的异步事件(ANYCHAT_AREA_EVENT_ENTERRESULT),此时可以通过API:BRAC_ObjectGetIdList来枚举当前营业厅中所有业务队列的ID列表,可以根据队列ID通过API:BRAC_ObjectGetValue(ANYCHAT_OBJECT_INFO_NAME)来查询业务队列的名称,所以如果需要自动进入指定的队列,则可以在进入营业厅结果的异步事件(ANYCHAT_AREA_EVENT_ENTERRESULT)中调用进入队列的代码,如:
  1. // 进入队列
  2. BRAC_ObjectControl(ANYCHAT_OBJECT_TYPE_QUEUE, dwQueueId, ANYCHAT_QUEUE_CTRL_USERENTER, 0, 0, 0, 0, "");
复制代码
4、服务器收到客户端进入队列的请求之后,会向客户端同步队列状态信息,同步完成后会触发客户端的异步事件(ANYCHAT_QUEUE_EVENT_ENTERRESULT),当队列状态变化时会触发客户端的异步事件(ANYCHAT_QUEUE_EVENT_STATUSCHANGE),客户端通过处理上述两个事件便可以动态刷新队列的状态。

作者: sagittar_zhang    时间: 2015-7-24 15:31
这些都在哪一个接口里的事件啊。
作者: sagittar_zhang    时间: 2015-7-24 15:32
事件中各参数又是什么意思??
作者: 佰锐科技—赖彬    时间: 2015-7-24 15:58
sagittar_zhang 发表于 2015-7-24 15:32
事件中各参数又是什么意思??

您好,可以参考开发手册,在sdk的doc目录下。
作者: sagittar_zhang    时间: 2015-7-24 16:01
AnyChatCoreSDK.ObjectGetIdList(); 请求服务器列表的时候,需要什么参数,AnyChatDefine哪一个?文档和帖子说的太模糊了哦。。。。
作者: admin    时间: 2015-7-24 16:13
您好,您是在什么平台下开发呢?

请重新下载SDK包,在doc目录下,有一个《开发流程指南》的文档,有一个章节是专门介绍“业务排队”的。

另外还可以参考AnyChatQueue的示例代码,位于SDK包的src目录下。

作者: 佰锐科技—赖彬    时间: 2015-7-24 16:17
sagittar_zhang 发表于 2015-7-24 16:01
AnyChatCoreSDK.ObjectGetIdList(); 请求服务器列表的时候,需要什么参数,AnyChatDefine哪一个?文档和帖 ...

您好,BRAC_ObjectGetIdList(dwObjectType),参数:dwObjectType 业务对象常量;返回值是ObjectId数组。
作者: ehomeud    时间: 2015-9-20 13:33
请问  队列能否在服务端主动控制排序   场景: 客户登录进入队列后,在排队,因为某些原因断网或者退出客户端(core server 要将他从队列数组中踢出么?),一段时间后,客户端又登录进来 能否保持该客户端处于原来队列位置上?
作者: 佰锐科技-李永星    时间: 2015-9-20 21:02
ehomeud 发表于 2015-9-20 13:33
请问  队列能否在服务端主动控制排序   场景: 客户登录进入队列后,在排队,因为某些原因断网或者退出客户 ...

你好,这种排队模式时暂时还不支持;这个建议非常好,我们将回反馈研发部进行评估和升级,其新功能和升级信息请关注团队日志模块。
作者: xuan121    时间: 2016-12-1 16:46
你好,现在有一种这样的需求   一个客户能否在多个营业厅队列排队,  或者一个坐席能否同时服务多个营业厅的队列




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3