| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #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;
- }
|