|
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),客户端通过处理上述两个事件便可以动态刷新队列的状态。
|
|