/************************************************************************* 【文件名】 AcdCore.h 【功能模块和目的】 ACD系统核心控制类头文件 【开发者及日期】 郑石诺 2015/01/20 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "ExtenCtrl.h" #include "AgentOffice.h" #include "QueueMgr.h" #include "SubjectRepository.h" #include "SoftAuther.h" class CAgent; class CExten; /************************************************************************* 【类名】 CAcdCore 【功能】 【接口说明】 ACD系统核心控制类 【开发者及日期】 郑石诺 2015/01/20 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CAcdCore : public IMsgObserver { SINGLETON_DECLARE(CAcdCore) public: ~CAcdCore(void); bool stage1Start(void); // ACD一阶段启动 bool stage2Start(void); // ACD二阶段启动 void exit(void); // ACD系统退出 void reloadAuther(); //授权刷新 CExtenCtrl& getExtenCtrl(void) { return m_ExtenCtrl; } CAgentOffice& getAgentOffice(void) { return m_AgentOffice; } CQueueMgr& getQueueMgr(void) { return m_QueueMgr; } // 事件响应 void onNetLinkDown(PduLinkContent linkContent); // 连接断开后续处理 void onRecvCommand(CPduEntity* a_pPduEntity); // PDU命令到达事件处理 // 继承自IMsgObserver void onMessage(UINT MsgType, const PARAM lpContent); private: CAcdCore(void); void __onAgentStateUpdated(UINT AgentId); // 座席状态变化事件响应 void __onPhoneStateUpdated(UINT ExtenId); // 分机状态变化事件响应 void __onQueueStateUpdated(UINT QueueNo); // 排队状态变化事件响应 void __removeAgent(UINT AgentId, UINT ExtId, UINT HostAgent); // 关闭指定座席 // 网络命令相关 void __onCmdAgentReg(CPduEntity* a_pCmd); // 座席注册 void __onCmdAgentDial(CPduEntity* a_pCmd); // 与呼叫相关的命令 void __onCmdAgentLogin(CPduEntity* a_pCmd); // 座席签入 void __onCmdAgentLogout(CPduEntity* a_pCmd); // 座席签出 void __onCmdAgentSetState(CPduEntity* a_pCmd); // 主动设置座席状态 void __onCmdAgentSubscribe(CPduEntity* a_pCmd); // 订阅管理 void __onCmdAgentForceLogout(CPduEntity* a_pCmd); // 强制签出 void __onCmdAgentMonControl(CPduEntity* a_pCmd); // 班长电话控制 void __onCmdAgentForceState(CPduEntity* a_pCmd); // 强制座席状态控制 void __onCmdCtiExtenInfo(CPduEntity* a_pCmd); // 内线分机状态变化 void __onCmdCtiRecord(CPduEntity* a_pCmd); // CTI通知座席录音信息 void __onCmdCtiDevCall(CPduEntity* a_pCmd); // CTI通知座席物理外呼 void __onCmdCtiTrunkUsage(CPduEntity* a_pCmd); // CTI通知呼叫任务中继利用率 void __onCmdIvrQueue(CPduEntity* a_pCmd); // 排队管理 void __onCmdNeed2Forward(CPduEntity* a_pCmd); // 只需转发的命令 void __onCmdDataSendToAgent(CPduEntity* a_pCmd); //向Agent转发当前通话中线路数量 void __onCmdGetAgentList(CPduEntity* a_pCmd); // 获取坐席列表 private: CExtenCtrl m_ExtenCtrl; // 内线分机管理类 CAgentOffice m_AgentOffice; // 座席管理类 CQueueMgr m_QueueMgr; // 来电排队管理类 CSubjectRepository m_SubjectRepository; // 发布主题管理类 SoftAuther m_Auther; //授权 };