/************************************************************************* 【文件名】 Queue.h 【功能模块和目的】 外线来电队列基类头文件 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "AgentGroup.h" #include "IncomingCallGroup.h" class CIncomingCall; /************************************************************************* 【类名】 CQueue 【功能】 【接口说明】 外线来电队列基类 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CQueue { public: CQueue(UINT QueueNo); ~CQueue(void); UINT no(void) const { return m_QueueNo; } UINT callCount(void) const { return m_CallGroup.GetCount(); } bool getCallInfo(Call2Show& Info) { return m_CallGroup.getCallInfo(Info); } void clear(void); // 呼叫管理操作 void onQueueRequest(CPduEntity* pCmd); // 呼叫请求排队 bool onQueueCancel(CPduEntity* pCmd); // 呼叫取消排队 bool onQueuePause(CPduEntity* pCmd); // 呼叫暂停排队 bool onQueueContinue(CPduEntity* pCmd); // 呼叫继续排队 // 座席相关 void addAgent(CAgent* pAgent); void delAgent(CAgent* pAgent); void distributeAgent(void); private: void __initStrategy(void); void __freeStrategy(void); CStrategyAD* __getStrategy(AGENT_STRATEGY StrategyId); void __onAgentDispatched(QUEUE_AGENT_RESULT Result, UINT Agent, UINT Exten, CIncomingCall* pCall); // 处理请求座席结果 protected: UINT m_QueueNo; CIncomingCallGroup m_CallGroup; // 外线来电队列 CAgentGroup m_AgentGroup; // 座席队列 CMap m_StrategyMap; // 保存所有座席分配策略 };