升龙物业 老版本 ocx IPO, 加密狗 转值班电话

ProxyShell.h 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*************************************************************************
  2. 【文件名】 ClientProxy.h
  3. 【功能模块和目的】 网络客户端代理类头文件
  4. 【开发者及日期】 郑石诺 2015/03/24
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. class CPduEntity;
  11. class CVirtualProxy;
  12. class CProxyExten;
  13. class CProxyDti;
  14. class CProxyVoip;
  15. class CReqBase;
  16. class CNetLinkClient;
  17. /*************************************************************************
  18. 【类名】 CClientProxy
  19. 【功能】 负责处理客户端的请求
  20. 【接口说明】 网络客户端代理类
  21. 【开发者及日期】 郑石诺 2015/03/24
  22. 【版本】 V1.0.0
  23. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  24. 【更改记录】
  25. *************************************************************************/
  26. class CProxyShell
  27. {
  28. SINGLETON_DECLARE(CProxyShell)
  29. public:
  30. ~CProxyShell(void);
  31. // 线路查找
  32. CProxyExten* getProxyExtenWrapped(UINT ExtnNum); // 根据分机号查找包装VOIP线路后的内线代理
  33. CVirtualProxy* getProxy(UINT ResId); // 根据线路ID查找线路
  34. CVirtualProxy* setEnv4Calling(CString& CallerNum, CString& CalleeNum, DEV_RES_TYPE& LineType, int& SipAccountId);
  35. CVirtualProxy* setEnv4PredictionCall(CString& CallerNum, CString& CalleeNum, int& SipAccountId);
  36. void onNetworkClientReg(PDU_DEV_TYPE DestType, int DestId);
  37. void onNetworkClientReq(CPduEntity* pReq);
  38. // 通知客户端相关接口
  39. void notifyResourceDetail(DEV_RES_TYPE ResType, UINT ResID);
  40. void notifyResourceDetail(PDU_DEV_TYPE DestType, int DestId, DEV_RES_TYPE ResType, UINT ResID);
  41. void notifyDevResourceState(DEV_RES_TYPE ResType, UINT ResID, UINT State, LPCTSTR CallerNum = NULL, LPCTSTR CalleeNum = NULL);
  42. void notifyDevResourceState(PDU_DEV_TYPE DestType, int DestId, DEV_RES_TYPE ResType, UINT ResID, UINT State, LPCTSTR CallerNum = NULL, LPCTSTR CalleeNum = NULL);
  43. void notifyLineOpEvent(UINT ResID, DEV_OP OpTp, const CString& CallerNum, const CString& CalleeNum); // 通知设备主动操作事件
  44. void notifyReqProcess(CReqBase& LineReq, UINT HostLine, UINT AssoLine, DEV_RES_TYPE AssoLineType, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); // 通知请求进展
  45. void notifyReqResult(CPduEntity& SrcReq, long Instance, bool IsSucceed, LPCTSTR lpData = NULL); // 通知请求执行结果
  46. void onLineReqEnd(CReqBase* pLineReq, bool IsSucceed, LPCTSTR lpData = NULL);
  47. // 会话控制回传接口
  48. CVirtualProxy* onLineNew(CRDRID LineDevId); // 线路创建
  49. void onLineDelete(CRDRID LineDevId); // 线路删除
  50. void onNewCall(CRDRID LineDevId, long Call, long SubCall); // 线路进入会话事件
  51. void onLineStateUpdated(CRDRID LineDevId, long Call, long SubCall,
  52. VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum = NULL, LPCTSTR lpCalleeNum = NULL); // 线路状态变化事件
  53. bool onDevChannelEvent(CRDRID LineDevId, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent, UINT ExtenId); // 线路向上层发送的设备主动事件
  54. private:
  55. CProxyShell(void);
  56. void __free(void);
  57. CProxyExten* __getProxyExten(UINT ExtnNum); // 根据分机号查找内线
  58. CVirtualProxy* __getProxyTrunk(UINT TrunkId); // 根据外线ID查找外线
  59. CProxyVoip* __getProxyVoip(UINT VoipId); // 根据VOIP号查找VOIP线路
  60. // 设备事件处理函数
  61. bool __procFunCodeDevEvent(CVirtualProxy* pLine, LPCTSTR lpContent, UINT ExtenId);
  62. bool __procHoldOnDevEvent(CVirtualProxy* pLine, UINT ExtenId);
  63. bool __procTakeBackDevEvent(CVirtualProxy* pLine, UINT ExtenId);
  64. // 线路请求中的子操作
  65. bool __beginLineReq(CReqBase* pLineReq); // 启动Req
  66. // Req处理子函数
  67. bool __procReqInfoTransfer(CPduEntity& a_Req); // 数据交互
  68. bool __procReqPlaySound(CPduEntity& a_Req); // 线路放音收号
  69. bool __procReqMakeCall(CPduEntity& a_Req); // 线路外呼处理
  70. bool __procReqHangUp(CPduEntity& a_Req); // 线路挂机处理
  71. bool __procReqTrunkTurn(CPduEntity& a_Req); // 外线呼叫转移
  72. bool __procReqTurnAgent(CPduEntity& a_Req); // 外线转坐席
  73. bool __procReqAnswerCall(CPduEntity& a_Req); // 应答呼叫
  74. bool __procReqPCall(CPduEntity& a_Req); // 预测外呼
  75. bool __procReqTransfer(CPduEntity& a_Req); // 座席呼叫转移
  76. bool __procReqMeeting(CPduEntity& a_Req); // 单步会议
  77. bool __procReqTurnIvr(CPduEntity& a_Req); // 转IVR
  78. bool __procReqInstead(CPduEntity& a_Req); // 代接
  79. bool __procReqIntercept(CPduEntity& a_Req); // 强截
  80. bool __procReqInsert(CPduEntity& a_Req); // 强插
  81. bool __procReqListen(CPduEntity& a_Req); // 监听
  82. bool __procReqReset(CPduEntity& a_Req); // 重置
  83. bool __procReqFax(CPduEntity& a_Req); // 传真
  84. bool __procReqRecord(CPduEntity& a_Req); // 录音
  85. bool __procReqLeaveWord(CPduEntity& a_Req); // 留言录音
  86. bool __procReqMuteOn(CPduEntity& a_Req); // 静音启动
  87. bool __procReqMuteOff(CPduEntity& a_Req); // 静音结束
  88. bool __procReqLineCheck(CPduEntity& a_Req); // 线路自检
  89. bool __procReqConsultCall(CPduEntity& a_Req); // 协商呼叫
  90. bool __procReqConsultCallConfirm(CPduEntity& a_Req); // 协商呼叫确认
  91. private:
  92. // 内/外线索引表
  93. CMap<UINT, UINT, CProxyExten*, CProxyExten*> m_ExtenMap;
  94. CMap<UINT, UINT, CProxyVoip*, CProxyVoip*> m_VoipMap;
  95. CMap<UINT, UINT, CProxyDti*, CProxyDti*> m_DtiMap;
  96. };