升龙物业 老版本 ocx IPO, 加密狗 转值班电话

AgentClient.h 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /*************************************************************************
  2. 【文件名】 AgentClient.h
  3. 【功能模块和目的】 对座席客户端的封装
  4. 【开发者及日期】 郑石诺 2015.05.22
  5. 【版本】 V1.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CAgentOp;
  11. class CAgentBusiness;
  12. class CAgentMsgProc;
  13. class CAgentEventManager;
  14. class CAgentLog;
  15. class CTFBCtrl;
  16. class CTFBTimer;
  17. /*************************************************************************
  18. 【类名】 CAgentClient
  19. 【功能】 客户端座席类
  20. 【接口说明】 对外获取和设置坐席属性,负责socket的连接
  21. 【开发者及日期】 郑石诺 2015.05.22
  22. 【版本】 V1.0
  23. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  24. 【更改记录】
  25. *************************************************************************/
  26. class CAgentClient : public IPduLinkProc
  27. {
  28. private:
  29. UINT m_nAgentExtension; // 座席的分机号
  30. UINT m_nAgentNumber; // 座席的工号
  31. AGENT_TYPE m_nAgentType; // 座席类型
  32. CString m_sAgentGroup; // 座席所在组
  33. UINT m_nAgentSkill; // 座席的技能
  34. UINT m_nWorkOverTime; // 话后处理时长
  35. stAcdServer m_firstAcdServer; // ACD服务器
  36. // 业务数据
  37. BOOL m_bAutoReconnect; // 是否自动重连
  38. BOOL m_bAutoAnswer; // 是否支持自动应答
  39. BOOL m_bIsConnInfoChange; // 连接后scoket是否发送连接信息变化
  40. long m_nAgentState; // 座席状态
  41. long m_nAgentLineState; // 座席的线路状态
  42. long m_nAgentLinkState; // 座席的连接状态
  43. long m_nCallID; // 呼叫ID
  44. long m_nFaxCallID; // 存储收发传真的CallID
  45. CString m_sOuterNumber; // 座席的外部号码
  46. CString m_sRecordFilePath; // 当前录音文件路径
  47. CString m_sLeaveWordFilePath; // 当前留言文件路径
  48. int m_nFaxAction; // 记录系统传真的行为
  49. CString m_sFaxFilePath; // 当前传真文件路径
  50. CString m_sLogFileDirectory; // 日志文件的目录
  51. char m_sAssoData[MAX_DATA_BUF_LEN]; // 随路数据
  52. long m_nAgentBusyCode; // 座席忙码
  53. int m_nErrorCode; // 错误码
  54. private:
  55. // 事件管理类、操作类、业务类、通讯类、日志类
  56. CAgentEventManager *m_pEventManager; // 事件管理类
  57. CAgentLog *m_pAgentLog; // 日志类
  58. CAgentOp *m_pAgentOp; // 坐席操作类
  59. CAgentMsgProc *m_pAgentMsgProc; // 坐席消息处理类
  60. CAgentBusiness *m_pAgentBusiness; // 坐席业务类指针
  61. CTFBTimer *m_pAgentOnTimer; // 坐席定时器类指针
  62. friend class CAgentOp; // CAgentOp为类的友元类
  63. friend class CAgentBusiness; // CAgentBusiness 为类的友元类
  64. friend class CAgentMsgProc; // CAgentMsgProc为类的友元类
  65. public:
  66. CAgentClient(); // 构造函数
  67. ~CAgentClient(); // 析构函数
  68. public:
  69. BOOL CreateEventManager(CTFBCtrl *a_pClientCtrl); // 创建事件管理器
  70. BOOL CreateAgentLog(); // 创建日志类
  71. BOOL CreateAgentOp(); // 创建坐席操作类
  72. BOOL CreateAgentBussiness(); // 创建坐席业务类
  73. BOOL CreateAgentMsgProc(); // 创建坐席消息处理类
  74. CAgentEventManager* GetEventManager(); // 返回事件管理器指针
  75. CAgentLog* GetAgentLog(); // 返回日志类对象指针
  76. CAgentOp* GetAgentOp(); // 返回坐席操作类
  77. CAgentBusiness* GetAgentBussiness(); // 返回坐席业务类
  78. CTFBTimer* GetAgentTimer(); // 获取坐席定时器
  79. PDU_DEV_TYPE GetClientType(); // (设备类型)客户端类型
  80. // 获取坐席端属性值
  81. int GetAgentNumber(void) const { return m_nAgentNumber; } // 获取坐席工号
  82. ULONG GetAgentCallID(void) const { return m_nCallID;} // 返回坐席CallID
  83. LONG GetAgentLineState(void) const { return m_nAgentLineState; } // 返回坐席线路状态
  84. BOOL GetIsAutoReConnect(void) const { return m_bAutoReconnect; } // 返回是否自动重连
  85. BOOL GetIsAutoAnswer(void) const { return m_bAutoAnswer; } // 获取是否自动应答
  86. LONG GetAgentLinkState(void) const { return m_nAgentLinkState; } // 获取当前线路状态
  87. LONG GetAgentState(void) const { return m_nAgentState; } // 获取坐席当前状态
  88. BOOL GetIsConnInfoChange(void) const { return m_bIsConnInfoChange;} // 返回是否发生连接信息改变
  89. const CString& GetOuterNum(void) const { return m_sOuterNumber; } // 获取外部号码
  90. const CString& GetLeaveWordFilePath(void) const { return m_sLeaveWordFilePath; } // 获取留言文件路径
  91. const CString& GetFaxFilepath(void) const { return m_sFaxFilePath; } // 获取传真文件路径
  92. const CString& GetRecordFilePath(void) const { return m_sRecordFilePath; } // 获取录音文件路径
  93. const CString& GetLogFilePath(void) const { return m_sLogFileDirectory;} // 获取日志文件目录
  94. CString GetAssociateData(LPCTSTR a_sCaption); // 获取随路数据;
  95. // 业务信息获取
  96. CString GetAgentInfo(); // 获取坐席信息
  97. // 设置坐席客户端属性值
  98. void SetErrorCode(int a_nErrorCode) { m_nErrorCode = a_nErrorCode; } // 设置错误码
  99. void SetIsAutoAnswer(BOOL IsAutoAnswer) { m_bAutoAnswer = IsAutoAnswer; } // 设置是否自动应答
  100. void SetAutoReconnect(BOOL IsAutoRconnect) { m_bAutoReconnect = IsAutoRconnect; } // 设置是否自动重联
  101. #pragma region 签入属性
  102. void SetAgentNo(UINT AgentNumber) { m_nAgentNumber = AgentNumber; }
  103. void SetAgentGroup(LPCTSTR AgentGroup) { m_sAgentGroup = AgentGroup; }
  104. void SetAgentType(AGENT_TYPE AgentType) { m_nAgentType = AgentType; }
  105. void SetAgentExten(UINT AgentExten) { m_nAgentExtension = AgentExten; }
  106. void SetAcdIp(LPCTSTR AcdAddr) { m_firstAcdServer.m_sAcdServerIpAddr = AcdAddr; }
  107. void SetAcdPort(int AcdPort) { m_firstAcdServer.m_nAcdServerPort = AcdPort; }
  108. #pragma endregion
  109. // 通讯模块处理
  110. BOOL LinkAcdServer(); // 连接ACD服务器
  111. BOOL CloseClient(); // 关闭客户端连接
  112. virtual void OnLinkStateChanged(const PduLinkContent& linkContent); // 连接状态变化事件处理
  113. };
  114. // 记录对象自己
  115. static CAgentClient *g_pAgentClient;