| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /*************************************************************************
- 【文件名】 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;
|