/************************************************************************* 【文件名】 AgentClient.h 【功能模块和目的】 对座席客户端的封装 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once class CAgentOp; class CAgentBusiness; class CAgentMsgProc; class CAgentEventManager; class CAgentLog; class CTFBCtrl; class CTFBTimer; /************************************************************************* 【类名】 CAgentClient 【功能】 客户端座席类 【接口说明】 对外获取和设置坐席属性,负责socket的连接 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CAgentClient : public IPduLinkProc { private: UINT m_nAgentExtension; // 座席的分机号 UINT m_nAgentNumber; // 座席的工号 AGENT_TYPE m_nAgentType; // 座席类型 CString m_sAgentGroup; // 座席所在组 UINT m_nAgentSkill; // 座席的技能 UINT m_nWorkOverTime; // 话后处理时长 stAcdServer m_firstAcdServer; // ACD服务器 // 业务数据 BOOL m_bAutoReconnect; // 是否自动重连 BOOL m_bAutoAnswer; // 是否支持自动应答 BOOL m_bIsConnInfoChange; // 连接后scoket是否发送连接信息变化 long m_nAgentState; // 座席状态 long m_nAgentLineState; // 座席的线路状态 long m_nAgentLinkState; // 座席的连接状态 long m_nCallID; // 呼叫ID long m_nFaxCallID; // 存储收发传真的CallID CString m_sOuterNumber; // 座席的外部号码 CString m_sRecordFilePath; // 当前录音文件路径 CString m_sLeaveWordFilePath; // 当前留言文件路径 int m_nFaxAction; // 记录系统传真的行为 CString m_sFaxFilePath; // 当前传真文件路径 CString m_sLogFileDirectory; // 日志文件的目录 char m_sAssoData[MAX_DATA_BUF_LEN]; // 随路数据 long m_nAgentBusyCode; // 座席忙码 int m_nErrorCode; // 错误码 private: // 事件管理类、操作类、业务类、通讯类、日志类 CAgentEventManager *m_pEventManager; // 事件管理类 CAgentLog *m_pAgentLog; // 日志类 CAgentOp *m_pAgentOp; // 坐席操作类 CAgentMsgProc *m_pAgentMsgProc; // 坐席消息处理类 CAgentBusiness *m_pAgentBusiness; // 坐席业务类指针 CTFBTimer *m_pAgentOnTimer; // 坐席定时器类指针 friend class CAgentOp; // CAgentOp为类的友元类 friend class CAgentBusiness; // CAgentBusiness 为类的友元类 friend class CAgentMsgProc; // CAgentMsgProc为类的友元类 public: CAgentClient(); // 构造函数 ~CAgentClient(); // 析构函数 public: BOOL CreateEventManager(CTFBCtrl *a_pClientCtrl); // 创建事件管理器 BOOL CreateAgentLog(); // 创建日志类 BOOL CreateAgentOp(); // 创建坐席操作类 BOOL CreateAgentBussiness(); // 创建坐席业务类 BOOL CreateAgentMsgProc(); // 创建坐席消息处理类 CAgentEventManager* GetEventManager(); // 返回事件管理器指针 CAgentLog* GetAgentLog(); // 返回日志类对象指针 CAgentOp* GetAgentOp(); // 返回坐席操作类 CAgentBusiness* GetAgentBussiness(); // 返回坐席业务类 CTFBTimer* GetAgentTimer(); // 获取坐席定时器 PDU_DEV_TYPE GetClientType(); // (设备类型)客户端类型 // 获取坐席端属性值 int GetAgentNumber(void) const { return m_nAgentNumber; } // 获取坐席工号 ULONG GetAgentCallID(void) const { return m_nCallID;} // 返回坐席CallID LONG GetAgentLineState(void) const { return m_nAgentLineState; } // 返回坐席线路状态 BOOL GetIsAutoReConnect(void) const { return m_bAutoReconnect; } // 返回是否自动重连 BOOL GetIsAutoAnswer(void) const { return m_bAutoAnswer; } // 获取是否自动应答 LONG GetAgentLinkState(void) const { return m_nAgentLinkState; } // 获取当前线路状态 LONG GetAgentState(void) const { return m_nAgentState; } // 获取坐席当前状态 BOOL GetIsConnInfoChange(void) const { return m_bIsConnInfoChange;} // 返回是否发生连接信息改变 const CString& GetOuterNum(void) const { return m_sOuterNumber; } // 获取外部号码 const CString& GetLeaveWordFilePath(void) const { return m_sLeaveWordFilePath; } // 获取留言文件路径 const CString& GetFaxFilepath(void) const { return m_sFaxFilePath; } // 获取传真文件路径 const CString& GetRecordFilePath(void) const { return m_sRecordFilePath; } // 获取录音文件路径 const CString& GetLogFilePath(void) const { return m_sLogFileDirectory;} // 获取日志文件目录 CString GetAssociateData(LPCTSTR a_sCaption); // 获取随路数据; // 业务信息获取 CString GetAgentInfo(); // 获取坐席信息 // 设置坐席客户端属性值 void SetErrorCode(int a_nErrorCode) { m_nErrorCode = a_nErrorCode; } // 设置错误码 void SetIsAutoAnswer(BOOL IsAutoAnswer) { m_bAutoAnswer = IsAutoAnswer; } // 设置是否自动应答 void SetAutoReconnect(BOOL IsAutoRconnect) { m_bAutoReconnect = IsAutoRconnect; } // 设置是否自动重联 #pragma region 签入属性 void SetAgentNo(UINT AgentNumber) { m_nAgentNumber = AgentNumber; } void SetAgentGroup(LPCTSTR AgentGroup) { m_sAgentGroup = AgentGroup; } void SetAgentType(AGENT_TYPE AgentType) { m_nAgentType = AgentType; } void SetAgentExten(UINT AgentExten) { m_nAgentExtension = AgentExten; } void SetAcdIp(LPCTSTR AcdAddr) { m_firstAcdServer.m_sAcdServerIpAddr = AcdAddr; } void SetAcdPort(int AcdPort) { m_firstAcdServer.m_nAcdServerPort = AcdPort; } #pragma endregion // 通讯模块处理 BOOL LinkAcdServer(); // 连接ACD服务器 BOOL CloseClient(); // 关闭客户端连接 virtual void OnLinkStateChanged(const PduLinkContent& linkContent); // 连接状态变化事件处理 }; // 记录对象自己 static CAgentClient *g_pAgentClient;