中间件底层,websocket

AcdCore.h 4.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. /*************************************************************************
  2. 【文件名】 AcdCore.h
  3. 【功能模块和目的】 ACD系统核心控制类头文件
  4. 【开发者及日期】 郑石诺 2015/01/20
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "ExtenCtrl.h"
  11. #include "AgentOffice.h"
  12. #include "QueueMgr.h"
  13. #include "SubjectRepository.h"
  14. #include "SoftAuther.h"
  15. #include <set>
  16. typedef struct tagGroupTalking {
  17. CString groupId;
  18. std::set<UINT> exts;
  19. int count() { return exts.size(); }
  20. void add(UINT extID) {
  21. exts.emplace(extID);
  22. }
  23. void del(UINT extID) {
  24. auto it = exts.find(extID);
  25. if (it != exts.end())
  26. exts.erase(it);
  27. }
  28. }GroupTalking;
  29. class CAgent;
  30. class CExten;
  31. /*************************************************************************
  32. 【类名】 CAcdCore
  33. 【功能】
  34. 【接口说明】 ACD系统核心控制类
  35. 【开发者及日期】 郑石诺 2015/01/20
  36. 【版本】 V1.0.0
  37. 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司
  38. 【更改记录】
  39. *************************************************************************/
  40. class CAcdCore : public IMsgObserver
  41. {
  42. SINGLETON_DECLARE(CAcdCore)
  43. public:
  44. ~CAcdCore(void);
  45. bool stage1Start(void); // ACD一阶段启动
  46. bool stage2Start(void); // ACD二阶段启动
  47. void exit(void); // ACD系统退出
  48. void reloadAuther(); //授权刷新
  49. CExtenCtrl& getExtenCtrl(void) { return m_ExtenCtrl; }
  50. CAgentOffice& getAgentOffice(void) { return m_AgentOffice; }
  51. CQueueMgr& getQueueMgr(void) { return m_QueueMgr; }
  52. // 事件响应
  53. void onNetCtiLinkDown(); // cti断开后续处理 2022-11-03
  54. void onNetHpServerLinkDown(); // HpServer断开后续处理 2022-11-03
  55. void onNetLinkDown(PduLinkContent linkContent); // 连接断开后续处理
  56. void onRecvCommand(CPduEntity* a_pPduEntity); // PDU命令到达事件处理
  57. // 继承自IMsgObserver
  58. void onMessage(UINT MsgType, const PARAM lpContent);
  59. private:
  60. CAcdCore(void);
  61. void __onAgentStateUpdated(UINT AgentId); // 座席状态变化事件响应
  62. void __onPhoneStateUpdated(UINT ExtenId); // 分机状态变化事件响应
  63. void __onQueueStateUpdated(UINT QueueNo); // 排队状态变化事件响应
  64. void __removeAgent(UINT AgentId, UINT ExtId, UINT HostAgent); // 关闭指定座席
  65. // 网络命令相关
  66. void __onCmdAgentReg(CPduEntity* a_pCmd); // 座席注册
  67. void __onCmdAgentDial(CPduEntity* a_pCmd); // 与呼叫相关的命令
  68. void __onCmdAgentLogin(CPduEntity* a_pCmd); // 座席签入
  69. void __onCmdAgentLogout(CPduEntity* a_pCmd); // 座席签出
  70. void __onCmdAgentSetState(CPduEntity* a_pCmd); // 主动设置座席状态
  71. void __onCmdAgentSubscribe(CPduEntity* a_pCmd); // 订阅管理
  72. void __onCmdAgentForceLogout(CPduEntity* a_pCmd); // 强制签出
  73. void __onCmdAgentMonControl(CPduEntity* a_pCmd); // 班长电话控制
  74. void __onCmdAgentForceState(CPduEntity* a_pCmd); // 强制座席状态控制
  75. void __onCmdCtiExtenInfo(CPduEntity* a_pCmd); // 内线分机状态变化
  76. void __onCmdCtiRecord(CPduEntity* a_pCmd); // CTI通知座席录音信息
  77. void __onCmdCtiDevCall(CPduEntity* a_pCmd); // CTI通知座席物理外呼
  78. void __onCmdCtiTrunkUsage(CPduEntity* a_pCmd); // CTI通知呼叫任务中继利用率
  79. void __onCmdIvrQueue(CPduEntity* a_pCmd); // 排队管理
  80. void __onCmdNeed2Forward(CPduEntity* a_pCmd); // 只需转发的命令
  81. void __onCmdDataSendToAgent(CPduEntity* a_pCmd); //向Agent转发当前通话中继线路数量
  82. void __onCmdGetAgentList(CPduEntity* a_pCmd); // 获取坐席列表
  83. void __onCmdMonitor(CPduEntity* a_pCmd); // ych 2018.6.4 商丘监控添加命令
  84. void __onCmdAgentDetail(CPduEntity* a_pCmd); // 安阳 坐席详情
  85. void __onCmdUpdateAgentCount(); // 更新当前签入坐席数量,正在通话数量
  86. void __onCmdAgentTransferSkillGroup(CPduEntity* a_pCmd); // 按技能组转移
  87. void __onCmdAgentSkillGroupWaitCount(); // 每个技能组的排队数量情况
  88. //
  89. void __onCallInAgent(CPduEntity* a_pCmd);
  90. private:
  91. CExtenCtrl m_ExtenCtrl; // 内线分机管理类
  92. CAgentOffice m_AgentOffice; // 座席管理类
  93. CQueueMgr m_QueueMgr; // 来电排队管理类
  94. CSubjectRepository m_SubjectRepository; // 发布主题管理类
  95. SoftAuther m_Auther; //授权
  96. int m_ExtCallOutCount = 0; // 外呼数量
  97. int m_TrunkCount = 0; // 中继呼入数量
  98. int m_WaitCount =0; // 当前排队数量
  99. int m_LoginCount = 0; // 当前签入数量
  100. int m_TalkingCount = 0; // 当前通话数量
  101. int AgentSpeakCount = 0; // 当前通话数量
  102. int AgentOnlineCount = 0; // 坐席在线/签入数量
  103. int AgentReposeCount = 0; // 当前置忙坐席数量
  104. int AgentFreeCount = 0; // 当前空闲坐席数量
  105. int AgentProcessingCount = 0; // 当前话后处理坐席数量
  106. int AgentRingCount = 0; // 当前振铃坐席数量
  107. };