/************************************************************************* 【文件名】 QueueMgr.h 【功能模块和目的】 来电队列管理类头文件 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司 【更改记录】 *************************************************************************/ #pragma once class CQueue; class CAgentOffice; class CAgent; /************************************************************************* 【类名】 CQueueMgr 【功能】 【接口说明】 来电队列管理类 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司 【更改记录】 *************************************************************************/ class CQueueMgr { public: CQueueMgr(void); ~CQueueMgr(void); UINT callCount(void); // 读取等待排队的来电数量 UINT callCount(UINT QueueNo); // 读取等待排队的来电数量 CString waitCount(); // 获取每个技能组的排队数量 UINT talkIngCount(UINT QueueNo); // 读取每个坐席组通话数量 2022-01-27 void clear(void); bool getCallInfo(Call2Show& Info); // 座席相关 void addAgent(CAgent* pAgent); void delAgent(CAgent* pAgent, bool isClear = false); // 2022-09-13 添加参数isclear,区分是否是cti断开造成清空坐席 void onAgentFree(CAgent* pAgent); // 排队管理操作 void onQueueAsking(CPduEntity* pCmd); // IVR请求座席命令响应 void onQueueCancel(CPduEntity* pCmd); // IVR取消排队命令响应 void onQueueContinue(CPduEntity* pCmd); // IVR继续请求排队命令响应 void onQueuePause(CPduEntity* pCmd); // IVR暂停排队命令响应 // 更新呼入电话的当前排队位置 void onUpdateCallIndex(); // 根据坐席组号获取一个空闲坐席 bool GetFreeAgent(int GroupNo, UINT& AgentId, UINT& ExtenId); private: CQueue* __getQueue(UINT QueueNo, bool NewWhenNull = false); void __freeQueues(void); private: CArray m_QueueArray; std::map m_QueryCount; // 2022-09-02 解决获取每个坐席组数量重复的情况 };