admin 发表于 2015-7-23 10:22:28

AnyChatQueue示例工程如何自动进入营业厅以及队列?

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

可以通过响应相关的异步事件来实现上面的需求,我们可以先分析AnyChatQueue的相关工作流程:
1、客户端登录服务器成功之后,会触发客户端的登录成功回调(OnAnyChatLoginSystem)事件,通常会在该事件中向服务器发送营业厅数据同步请求://向服务器发送数据同步请求指令
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)中调用进入营业厅的代码,如:// 进入营业厅
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)中调用进入队列的代码,如:// 进入队列
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:24

这些都在哪一个接口里的事件啊。

sagittar_zhang 发表于 2015-7-24 15:32:36

事件中各参数又是什么意思??

佰锐科技—赖彬 发表于 2015-7-24 15:58:56

sagittar_zhang 发表于 2015-7-24 15:32
事件中各参数又是什么意思??

您好,可以参考开发手册,在sdk的doc目录下。

sagittar_zhang 发表于 2015-7-24 16:01:06

AnyChatCoreSDK.ObjectGetIdList(); 请求服务器列表的时候,需要什么参数,AnyChatDefine哪一个?文档和帖子说的太模糊了哦。。。。

admin 发表于 2015-7-24 16:13:04

您好,您是在什么平台下开发呢?

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

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

佰锐科技—赖彬 发表于 2015-7-24 16:17:30

sagittar_zhang 发表于 2015-7-24 16:01
AnyChatCoreSDK.ObjectGetIdList(); 请求服务器列表的时候,需要什么参数,AnyChatDefine哪一个?文档和帖 ...

您好,BRAC_ObjectGetIdList(dwObjectType),参数:dwObjectType 业务对象常量;返回值是ObjectId数组。

ehomeud 发表于 2015-9-20 13:33:25

请问队列能否在服务端主动控制排序   场景: 客户登录进入队列后,在排队,因为某些原因断网或者退出客户端(core server 要将他从队列数组中踢出么?),一段时间后,客户端又登录进来 能否保持该客户端处于原来队列位置上?

佰锐科技-李永星 发表于 2015-9-20 21:02:23

ehomeud 发表于 2015-9-20 13:33
请问队列能否在服务端主动控制排序   场景: 客户登录进入队列后,在排队,因为某些原因断网或者退出客户 ...

你好,这种排队模式时暂时还不支持;这个建议非常好,我们将回反馈研发部进行评估和升级,其新功能和升级信息请关注团队日志模块。

xuan121 发表于 2016-12-1 16:46:56

你好,现在有一种这样的需求   一个客户能否在多个营业厅队列排队,或者一个坐席能否同时服务多个营业厅的队列
页: [1]
查看完整版本: AnyChatQueue示例工程如何自动进入营业厅以及队列?