中间件底层,websocket

AgentOffice.h 3.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*************************************************************************
  2. 【文件名】 AgentOffice.h
  3. 【功能模块和目的】 座席管理类头文件
  4. 【开发者及日期】 郑石诺 2015/01/21
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #include "IMsgObserver.h"
  11. #include<vector>
  12. #include <map>
  13. class CAgent;
  14. class CStrategyAD;
  15. class CAgentProperty;
  16. /*************************************************************************
  17. 【类名】 CAgentOffice
  18. 【功能】
  19. 【接口说明】 座席管理类
  20. 【开发者及日期】 郑石诺 2015/01/21
  21. 【版本】 V1.0.0
  22. 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司
  23. 【更改记录】
  24. *************************************************************************/
  25. class CAgentOffice
  26. {
  27. public:
  28. CAgentOffice(void);
  29. ~CAgentOffice(void);
  30. // 逻辑处理相关
  31. void close(void); // 释放资源
  32. void clearAgent(void); // 清理所有座席
  33. BOOL insertAgent(UINT a_AgentID, UINT a_ExtID, LPCTSTR a_GroupID, UINT a_AgentType, UINT a_TimePostProcessing, INNER_STATE a_ExtStatus); // 添加一个座席
  34. BOOL isAgentExisted(UINT a_AgentId); // 指定工号的座席是否存在
  35. BOOL isAgentExisted(UINT a_AgentId, const CString& a_AgentIp); // 指定工号及IP的座席是否存在
  36. BOOL removeAgent(UINT a_AgentID, UINT a_HostAgent); // 删除一个座席
  37. UINT getAgentAssoExten(UINT a_AgentID); // 查找座席对应的分机号
  38. UINT getAgentType(UINT a_AgentID ); // 查找座席对应类型
  39. CString getAgentGroup(UINT a_AgentID); // 查找坐席对应组号 2023-03-24
  40. UINT getAgentState(UINT a_AgentID); // 查找指定座席的当前状态
  41. BOOL isAgentRepose(UINT a_AgentID); // 坐席是否是置忙状态
  42. BOOL lockAgent(UINT a_AgentId); // 临时对座席进行锁定
  43. BOOL setAgentState4Calling(UINT a_AgentId); // 为外呼设置座席状态
  44. // 状态变化事件响应
  45. void onExtenStateUpdated(UINT a_AgentID, CPduEntity* a_pCmd); // 关联分机状态变化的对应处理
  46. BOOL setAgentState(UINT a_AgentID, AGENT_STATE a_AgentStatus); // 设置座席的逻辑状态
  47. BOOL setAgentState(UINT a_AgentID, AGENT_STATE a_AgentStatus, bool forceLogout); // 设置座席的逻辑状态 // 掉线强制签出
  48. // 分配座席
  49. BOOL isNoAgent(void); // 是否无座席签入
  50. CAgent* getAgentById(UINT AgentId); // 根据工号查找座席对象
  51. CAgent* getAgentByIp(UINT AgentId, const CString& AgentIp); // 根据工号及IP查找座席对象
  52. CAgent* getAgentByExt(UINT AgentId, UINT ExtenId); // 根据工号及分机号查找座席对象
  53. BOOL getAgentInfo(Agent2Show& Info);
  54. UINT getAgentCount(void) const { return m_AgentMap.GetCount(); }
  55. // 获取指定状态的座席列表
  56. void getStateSpecAgentList(AGENT_LIST_SPEC_STATE SpecState, CString& AgentList);
  57. void GetCurAgentCount(int& AgentSpeakCount, int& AgentOnlineCount, int& AgentReposeCount);
  58. void GetCurAgentCount(int& AgentSpeakCount, int& AgentOnlineCount, int& AgentReposeCount, int&AgentFreeCount,int &AgentProcessingCount,int &AgentRingCount);
  59. // 获取所有坐席状态列表
  60. void getAllAgentStateList(CString& AgentList);
  61. std::vector<int> getAgentIDAll(); //获取所有座席AgentID
  62. std::map<UINT, CAgentProperty>& GetAgentPropertyMap(); // 2020-03-05 屏蔽 该方法未找到使用的地方(没有被调用)
  63. private:
  64. CCriticalSection m_Cs4AgentMap;
  65. CMap<UINT, UINT, CAgent*, CAgent*> m_AgentMap; // 座席索引表
  66. std::map<UINT, CAgentProperty> m_AgentPropertyMap; // 坐席号,业务属性
  67. };