| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #include "FsLinkInc.h"
- #include "DevInfoInc.h"
- #include <map>
- #include <mutex>
- class VirtualChan;
- class COperation;
- class COperationReactor
- {
- public:
- static COperationReactor* GetInstance() { return &instance; };
- bool procOperation(long Instance, uint32_t OpType, uint32_t ResID, LineOpParam* pParam);
- // 操作相关事件处理
- void onOpProcess(long Instance, uint32_t HostChanNo, uint32_t AssoChanNo, DEV_RES_TYPE AssoChanType, std::string CallerNum, std::string CalleeNum); // 操作执行进展
- void onOpResult(long Instance, bool IsSucceed);
- void onOpResult(long Instance, COperation* pOp, bool IsSucceed, std::string DestNum, std::string CurOpType="");
- void onOpFromDev(VirtualChan* pChan, DEV_OP OpType, std::string CallerNum, std::string CalleeNum); // 手动外呼
-
- void releaseOpResult(COperation* pOp);
- bool onExtenCallFromDev(VirtualChan* pHostChan, PCHAN_EVENT_NOTIFY pNotify); // 设备直接操作的处理
- void onEslEvtBgJobDone(PBG_JOB_NOTIFY pNotify);
- virtual void onEslEvtChanState(long OpInstance, VirtualChan* pChan);
- private:
- COperationReactor();
- ~COperationReactor();
- COperationReactor(const COperationReactor&)=default;
- COperationReactor& operator = (const COperationReactor&) = default;
- void __addOperation(COperation* pOperation);
- bool __delOperation(COperation* pOperation);
- COperation* __getOperation(long OpId);
- bool __execOp(COperation* pOp, LineOpParam* pParam); // 执行OP
- // 线路操作分类处理
- bool __procOpMakeCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 外呼
- bool __procOpHangUp(long Instance, uint32_t ResID, LineOpParam* pParam); // 挂机
- bool __procOpTransfer(long Instance, uint32_t ResID, LineOpParam* pParam); // 呼叫转移
- bool __procOpMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 单步会议
- bool __procOpMultiMeeting(long Instance, uint32_t ResID, LineOpParam* pParam); // 多步会议
- bool __procOpMultiMeetingTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 多步会议接回
- bool __procOpHold(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话保持
- bool __procOpTakeBack(long Instance, uint32_t ResID, LineOpParam* pParam); // 通话接回
- bool __procOpMuteOn(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音启动
- bool __procOpMuteOff(long Instance, uint32_t ResID, LineOpParam* pParam); // 静音结束
- bool __procOpListen(long Instance, uint32_t ResID, LineOpParam* pParam); // 监听
- bool __procOpInsert(long Instance, uint32_t ResID, LineOpParam* pParam); // 强插
- bool __procOpInstead(long Instance, uint32_t ResID, LineOpParam* pParam); // 代接
- bool __procOpIntercept(long Instance, uint32_t ResID, LineOpParam* pParam); // 强截
- bool __procOpRecord(long Instance, uint32_t ResID, LineOpParam* pParam); // 录音
- bool __procOpMyd(long Instance, uint32_t ResID, LineOpParam* pParam); // 满意度
- bool __procOpAutoCall(long Instance, uint32_t ResID, LineOpParam* pParam); // 自动外呼
- bool __procOpForceAgentState(long Instance, uint32_t ResID, LineOpParam* pParam); // 强制状态控制
- bool __procOpSendDtmf(long Instance, uint32_t ResID, LineOpParam* pParam); // 发送按键
- private:
- static COperationReactor instance;
- std::mutex m_TaskLock;
- std::map<long,COperation*> m_TableOperation;
- };
|