#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); } // 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); } /***************************************************************** **【函数名称】 SetExtState **【函数功能】 设置分机当前状态 **【参数】 **【返回值】 ****************************************************************/ void CExten::setState( CPduEntity* a_pCmd ) { 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); // 通知当前分机状态 __reportStatus(); } /***************************************************************** **【函数名称】 setAssoAgent **【函数功能】 设置关联的座席 **【参数】 **【返回值】 ****************************************************************/ void CExten::setAssoAgent( UINT a_AgentId ) { m_AssoAgent = a_AgentId; // 通知当前分机状态 __reportStatus(); }