| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- #include "StdAfx.h"
- #include "LogicLine.h"
- #include "StatisticsMgr.h"
- #include "SessionHolder.h"
- #include "CallSession.h"
- CLogicLine::CLogicLine(UINT ResId) : m_LineId(ResId), m_LineStatus(INNER_STATE_DISABLED), m_CallId(0), m_HoldCallId(0),
- m_CurrentOpType(PDU_CMD_UNKNOWN), m_CurrentOpResult(TRUE), m_TaskIdBinded(TASK_ID_INVALID), m_CallerNum(_T("")), m_CalleeNum(_T("")), m_RecordFile(_T("")),m_ActionID(2), m_IsMeeting(false), m_IsFirstTrunk(false)
- {
- }
- /*****************************************************************
- **【函数名称】 __reportLineStatus
- **【函数功能】 统计线路状态变化
- **【参数】
- **【返回值】
- ****************************************************************/
- void CLogicLine::_reportLineStatus( void )
- {
- if(m_CallId == 0 || m_HoldCallId != 0) return;
- // 状态变化统计
- T_EvtStateChanged repInfo;
- memset(&repInfo, 0, sizeof(repInfo));
- repInfo.nLineState = m_LineStatus; // 状态
- repInfo.nAgentId = getAgentNum(); // 工号
- lstrcpy(repInfo.szCallerNum, m_CallerNum); // 被叫
- lstrcpy(repInfo.szFileName, m_RecordFile); // 录音文件
- CStatisticsMgr::GetInstance().onCallDetail(m_CallId, REP_EVENT_STATE_CHANGED, m_LineId, &repInfo);
- }
- /*****************************************************************
- **【函数名称】 setRecordFile
- **【函数功能】 设置坐席录音文件名,录音文件名在挂机前不能被修改
- **【参数】 strFileName: 录音文件名
- **【返回值】
- ****************************************************************/
- void CLogicLine::setRecordFile( const CString& strFileName )
- {
- if(m_RecordFile == "" && strFileName != "")
- {
- // 设置录音文件名,并向坐席发送
- m_RecordFile = strFileName;
- pushRecord2ACD();
- }
- // 统计 REP_EVENT_REC_BEGIN
- T_EvtRecBegin repInfo;
- memset(&repInfo, 0, sizeof(repInfo));
- lstrcpy(repInfo.szFileName, m_RecordFile);
- CStatisticsMgr::GetInstance().onCallDetail(m_CallId, REP_EVENT_REC_BEGIN, m_LineId, &repInfo);
- }
- /*****************************************************************
- **【函数名称】 resetLine
- **【函数功能】 线路重置
- **【参数】
- **【返回值】
- ****************************************************************/
- void CLogicLine::resetLine()
- {
- ILogger::getInstance().log(LOG_CLASS_DEV, LOG_LEVEL_NORMAL, _T("{CLogicLine}: 执行线路[%lu]重置"), m_LineId);
- // 清除线路信息
- m_CallId = 0;
- m_RecordFile = _T("");
- m_CallerNum = _T("");
- m_CalleeNum = _T("");
- m_CurrentOpType = PDU_CMD_UNKNOWN;
- m_TaskIdBinded = TASK_ID_INVALID;
- m_ActionID = 2;
- m_IsMeeting = false;
- m_IsFirstTrunk = false;
- }
- /*****************************************************************
- **【函数名称】 assoLine
- **【函数功能】 获取对端线路指针
- **【参数】
- **【返回值】 对端线路指针
- ****************************************************************/
- CLogicLine* CLogicLine::assoLine()
- {
- CCallSession* pSession = CSessionHolder::GetInstance().findSession(m_CallId);
- if(pSession == NULL)
- return NULL;
- return pSession->getAssoLine(this);
- }
- void CLogicLine::SetActionID()
- {
- m_ActionID+=2;
-
- }
|