/************************************************************************* 【文件名】 OperationReactor.h 【功能模块和目的】 设备操作生成器类头文件 【开发者及日期】 郑石诺 2016/08/02 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once #include "IEslEventHandler.h" class COperation; class CVirtualChan; /************************************************************************* 【类名】 COperationReactor 【功能】 【接口说明】 设备操作生成器类 【开发者及日期】 郑石诺 2016/08/02 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ class COperationReactor : public IEslEventHandler { SINGLETON_DECLARE(COperationReactor) public: ~COperationReactor(void); bool procOperation(LONG Instance, UINT OpType, ULONG ResID, LineOpParam* pParam); // 操作相关事件处理 void onOpProcess(LONG Instance, UINT HostChanNo, UINT AssoChanNo, DEV_RES_TYPE AssoChanType, LPCTSTR CallerNum, LPCTSTR CalleeNum); // 操作执行进展 void onOpResult(LONG Instance, bool IsSucceed); // 操作执行结果 void onOpResult(LONG Instance, COperation* pOp, bool IsSucceed, CString Data = _T("")); void onOpFromDev(CVirtualChan* pChan, DEV_OP OpType, LPCTSTR CallerNum, LPCTSTR CalleeNum); void releaseOpResult(COperation* pOp); // 设备直接操作的处理 bool onExtenCallFromDev(CVirtualChan* pHostChan, PCHAN_EVENT_NOTIFY pNotify); //////////////////////////////////////////////////////////////////////////////// ////继承自IEslEventHandler////////////////////////////////////////////////////// virtual void onEslEvtBgJobDone(PBG_JOB_NOTIFY pNotify); virtual void onEslEvtChanState(LONG OpInstance, CVirtualChan* pChan); private: COperationReactor(void); void __addOperation(COperation* pOperation); bool __delOperation(COperation* pOperation); COperation* __getOperation(LONG OpId); bool __execOp(COperation* pOp, LineOpParam* pParam); // 执行OP // 线路操作分类处理 bool __procOpMakeCall(LONG Instance, ULONG ResID, LineOpParam* pParam); // 外呼 bool __procOpPCall(LONG Instance, ULONG ResID, LineOpParam* pParam); // 预测外呼 bool __procOpAnswerCall(LONG Instance, ULONG ResID, LineOpParam* pParam); // 应答 bool __procOpHangUp(LONG Instance, ULONG ResID, LineOpParam* pParam); // 挂机 bool __procOpTransfer(LONG Instance, ULONG ResID, LineOpParam* pParam); // 呼叫转移 bool __procOpTurnAgent(LONG Instance, ULONG ResID, LineOpParam* pParam); // 外线来电转座席 bool __procOpTurnOut(LONG Instance, ULONG ResID, LineOpParam* pParam); // 外线来电转外线 bool __procOpTurnIvr(LONG Instance, ULONG ResID, LineOpParam* pParam); // 呼叫转IVR bool __procOpMeeting(LONG Instance, ULONG ResID, LineOpParam* pParam); // 单步会议 bool __procOpHold(LONG Instance, ULONG ResID, LineOpParam* pParam); // 通话保持 bool __procOpTakeBack(LONG Instance, ULONG ResID, LineOpParam* pParam); // 通话接回 bool __procOpMuteOn(LONG Instance, ULONG ResID, LineOpParam* pParam); // 静音启动 bool __procOpMuteOff(LONG Instance, ULONG ResID, LineOpParam* pParam); // 静音结束 bool __procOpReset(LONG Instance, ULONG ResID, LineOpParam* pParam); // 重置 bool __procOpListen(LONG Instance, ULONG ResID, LineOpParam* pParam); // 监听 bool __procOpInsert(LONG Instance, ULONG ResID, LineOpParam* pParam); // 强插 bool __procOpInstead(LONG Instance, ULONG ResID, LineOpParam* pParam); // 代接 bool __procOpIntercept(LONG Instance, ULONG ResID, LineOpParam* pParam); // 强截 bool __procOpInfoTransaction(LONG Instance, ULONG ResID, LineOpParam* pParam); // 数据交互 bool __procOpConsultBegin(LONG Instance, ULONG ResID, LineOpParam* pParam); // 协商呼叫启动 bool __procOpConsultConfirm(LONG Instance, ULONG ResID, LineOpParam* pParam); // 协商呼叫确认 bool __procOpPlayAndDtmf(LONG Instance, ULONG ResID, LineOpParam* pParam); // 放音收号 bool __procOpRecord(LONG Instance, ULONG ResID, LineOpParam* pParam); // 录音 bool __procOpLeaveWord(LONG Instance, ULONG ResID, LineOpParam* pParam); // 留言录音 bool __procOpFax(LONG Instance, ULONG ResID, LineOpParam* pParam); // 传真 private: CCriticalSection m_TaskLock; CMap m_TableOperation; };