/************************************************************************* 【文件名】 AgentOffice.h 【功能模块和目的】 座席管理类头文件 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "IMsgObserver.h" class CAgent; class CStrategyAD; /************************************************************************* 【类名】 CAgentOffice 【功能】 【接口说明】 座席管理类 【开发者及日期】 郑石诺 2015/01/21 【版本】 V1.0.0 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class CAgentOffice { public: CAgentOffice(void); ~CAgentOffice(void); // 逻辑处理相关 void close(void); // 释放资源 void clearAgent(void); // 清理所有座席 BOOL insertAgent(UINT a_AgentID, UINT a_ExtID, LPCTSTR a_GroupID, UINT a_AgentType, UINT a_TimePostProcessing, INNER_STATE a_ExtStatus); // 添加一个座席 BOOL isAgentExisted(UINT a_AgentId); // 指定工号的座席是否存在 BOOL isAgentExisted(UINT a_AgentId, const CString& a_AgentIp); // 指定工号及IP的座席是否存在 BOOL removeAgent(UINT a_AgentID, UINT a_HostAgent); // 删除一个座席 UINT getAgentAssoExten(UINT a_AgentID); // 查找座席对应的分机号 UINT getAgentType(UINT a_AgentID ); // 查找座席对应类型 UINT getAgentState(UINT a_AgentID); // 查找指定座席的当前状态 BOOL isAgentRepose(UINT a_AgentID); // 坐席是否是置忙状态 BOOL lockAgent(UINT a_AgentId); // 临时对座席进行锁定 BOOL setAgentState4Calling(UINT a_AgentId); // 为外呼设置座席状态 // 状态变化事件响应 void onExtenStateUpdated(UINT a_AgentID, CPduEntity* a_pCmd); // 关联分机状态变化的对应处理 BOOL setAgentState(UINT a_AgentID, AGENT_STATE a_AgentStatus); // 设置座席的逻辑状态 // 分配座席 BOOL isNoAgent(void); // 是否无座席签入 CAgent* getAgentById(UINT AgentId); // 根据工号查找座席对象 CAgent* getAgentByIp(UINT AgentId, const CString& AgentIp); // 根据工号及IP查找座席对象 CAgent* getAgentByExt(UINT AgentId, UINT ExtenId); // 根据工号及分机号查找座席对象 BOOL getAgentInfo(Agent2Show& Info); UINT getAgentCount(void) const { return m_AgentMap.GetCount(); } // 获取指定状态的座席列表 void getStateSpecAgentList(AGENT_LIST_SPEC_STATE SpecState, CString& AgentList); private: CCriticalSection m_Cs4AgentMap; CMap m_AgentMap; // 座席索引表 };