#include "StdAfx.h" #include "Exten.h" #include "AcdCore.h" #include "MsgCenter.h" #include "NetworkAcd.h" CExten::CExten(UINT a_ExtId) { // 基础信息 m_ID = a_ExtId; m_State = INNER_STATE_DISABLED; m_AssoAgent = 0; // 附加信息 m_CallId = 0; ZeroMemory(m_CallerNum, PHONE_NUM_LEN); ZeroMemory(m_CalleeNum, PHONE_NUM_LEN); ZeroMemory(m_DataBind, MAX_DATA_BUF_LEN); m_PeerLineType = LINE_NULL; } CExten::~CExten(void) { } /***************************************************************** **【函数名称】 __reportStatus **【函数功能】 通知分机状态 **【参数】 **【返回值】 ****************************************************************/ void CExten::__reportStatus( void ) { // 通知分机关联的座席状态信息 if(m_AssoAgent != 0) { CPduEntity Cmd(PDU_CMD_CTI_LINE_STATE); Cmd.SetDataUInt(0, m_ID); Cmd.SetDataUInt(1, m_State); Cmd.SetDataULong(2, m_CallId); Cmd.SetDataUInt(3, m_AssoAgent); Cmd.SetDataString(4, m_CallerNum); Cmd.SetDataString(5, m_CalleeNum); Cmd.SetDataString(6, m_DataBind); Cmd.SetDataUInt(7, m_PeerLineType); Cmd.SetDataUInt(8, m_InfoEx); Cmd.SetDataUInt(9, m_FinalExt); Cmd.SetDataUInt(10, m_OpType); //CNetworkAcd::GetInstance().send2Agent(m_AssoAgent, &Cmd); CNetworkAcd::GetInstance().send2Server(&Cmd); } // end if // 添加消息可供视图刷新 CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_STATE_UPDATE, (PARAM)m_ID); } /***************************************************************** **【函数名称】 release **【函数功能】 释放资源 **【参数】 **【返回值】 ****************************************************************/ void CExten::release( void ) { // 添加消息可供视图刷新 CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_REMOVE, (const PARAM)m_ID); } //2018.5.18 void CExten::onReportExtenState(UINT AgentState) { // 通知分机关联的座席状态信息 if (m_AssoAgent != 0) { CPduEntity Cmd(PDU_CMD_CTI_LINE_STATE); Cmd.SetDataUInt(0, m_ID); Cmd.SetDataUInt(1, m_State); Cmd.SetDataULong(2, m_CallId); Cmd.SetDataUInt(3, m_AssoAgent); Cmd.SetDataString(4, m_CallerNum); Cmd.SetDataString(5, m_CalleeNum); Cmd.SetDataString(6, m_DataBind); Cmd.SetDataUInt(7, m_PeerLineType); Cmd.SetDataUInt(8, m_InfoEx); Cmd.SetDataUInt(9, m_FinalExt); Cmd.SetDataUInt(10, m_OpType); Cmd.SetDataUInt(11, 0); Cmd.SetDataUInt(12, AgentState); //CNetworkAcd::GetInstance().send2Agent(m_AssoAgent, &Cmd); CNetworkAcd::GetInstance().send2Server(&Cmd); } // end if // 添加消息可供视图刷新 CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_STATE_UPDATE, (PARAM)m_ID); } /***************************************************************** **【函数名称】 SetExtState **【函数功能】 设置分机当前状态 **【参数】 **【返回值】 ****************************************************************/ void CExten::setState( CPduEntity* a_pCmd ,BOOL bReportState) { ASSERT(a_pCmd != NULL); // 保存状态 UINT State = a_pCmd->GetDataUInt(1); if(m_State == State) return; // 保存相关信息 m_State = (INNER_STATE)State; m_CallId = a_pCmd->GetDataULong(2); lstrcpy(m_CallerNum, a_pCmd->GetDataString(4)); lstrcpy(m_CalleeNum, a_pCmd->GetDataString(5)); lstrcpy(m_DataBind, a_pCmd->GetDataString(6)); m_PeerLineType = a_pCmd->GetDataUInt(7); m_InfoEx = a_pCmd->GetDataUInt(8); m_FinalExt = a_pCmd->GetDataUInt(9); m_OpType = a_pCmd->GetDataUInt(10); // 通知当前分机状态 if (bReportState == TRUE) { __reportStatus(); } else { // 添加消息可供视图刷新 CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_STATE_UPDATE, (PARAM)m_ID); } } /***************************************************************** **【函数名称】 setAssoAgent **【函数功能】 设置关联的座席 **【参数】 **【返回值】 ****************************************************************/ void CExten::setAssoAgent( UINT a_AgentId ) { m_AssoAgent = a_AgentId; // 通知当前分机状态 __reportStatus(); } UINT& CExten::GetID() { return m_ID; } INNER_STATE& CExten::GetState() { return m_State; } UINT& CExten::GetAssoAgent() { return m_AssoAgent; } ULONG& CExten::GetCallId() { return m_CallId; } CHAR* CExten::GetCallerNum() { return m_CallerNum; } CHAR* CExten::GetCalleeNum() { return m_CalleeNum; } CHAR* CExten::GetDataBind() { return m_DataBind; } UINT& CExten::GetPeerLineType() { return m_PeerLineType; } UINT& CExten::GetFinalExt() { return m_FinalExt; } UINT& CExten::GetOpType() { return m_OpType; } UINT& CExten::GetInfoEx() { return m_InfoEx; }