| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #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();
- }
|