| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*************************************************************************
- 【文件名】 ClientProxy.h
- 【功能模块和目的】 网络客户端代理类头文件
- 【开发者及日期】 郑石诺 2015/03/24
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- class CPduEntity;
- class CVirtualProxy;
- class CProxyExten;
- class CProxyDti;
- class CProxyVoip;
- class CReqBase;
- class CNetLinkClient;
- /*************************************************************************
- 【类名】 CClientProxy
- 【功能】 负责处理客户端的请求
- 【接口说明】 网络客户端代理类
- 【开发者及日期】 郑石诺 2015/03/24
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- class CProxyShell
- {
- SINGLETON_DECLARE(CProxyShell)
- public:
- ~CProxyShell(void);
- // 线路查找
- CProxyExten* getProxyExtenWrapped(UINT ExtnNum); // 根据分机号查找包装VOIP线路后的内线代理
- CVirtualProxy* getProxy(UINT ResId); // 根据线路ID查找线路
- CVirtualProxy* setEnv4Calling(CString& CallerNum, CString& CalleeNum, DEV_RES_TYPE& LineType, int& SipAccountId);
- CVirtualProxy* setEnv4PredictionCall(CString& CallerNum, CString& CalleeNum, int& SipAccountId);
- void onNetworkClientReg(PDU_DEV_TYPE DestType, int DestId);
- void onNetworkClientReq(CPduEntity* pReq);
- // 通知客户端相关接口
- void notifyResourceDetail(DEV_RES_TYPE ResType, UINT ResID);
- void notifyResourceDetail(PDU_DEV_TYPE DestType, int DestId, DEV_RES_TYPE ResType, UINT ResID);
- void notifyDevResourceState(DEV_RES_TYPE ResType, UINT ResID, UINT State, LPCTSTR CallerNum = NULL, LPCTSTR CalleeNum = NULL);
- void notifyDevResourceState(PDU_DEV_TYPE DestType, int DestId, DEV_RES_TYPE ResType, UINT ResID, UINT State, LPCTSTR CallerNum = NULL, LPCTSTR CalleeNum = NULL);
- void notifyLineOpEvent(UINT ResID, DEV_OP OpTp, const CString& CallerNum, const CString& CalleeNum); // 通知设备主动操作事件
- void notifyReqProcess(CReqBase& LineReq, UINT HostLine, UINT AssoLine, DEV_RES_TYPE AssoLineType, LPCTSTR lpCallerNum, LPCTSTR lpCalleeNum); // 通知请求进展
- void notifyReqResult(CPduEntity& SrcReq, long Instance, bool IsSucceed, LPCTSTR lpData = NULL); // 通知请求执行结果
- void onLineReqEnd(CReqBase* pLineReq, bool IsSucceed, LPCTSTR lpData = NULL);
- // 会话控制回传接口
- CVirtualProxy* onLineNew(CRDRID LineDevId); // 线路创建
- void onLineDelete(CRDRID LineDevId); // 线路删除
- void onNewCall(CRDRID LineDevId, long Call, long SubCall); // 线路进入会话事件
- void onLineStateUpdated(CRDRID LineDevId, long Call, long SubCall,
- VIRTUAL_LINE_STATE State, LPCTSTR lpCallerNum = NULL, LPCTSTR lpCalleeNum = NULL); // 线路状态变化事件
- bool onDevChannelEvent(CRDRID LineDevId, DEV_CH_EVT_TYPE EvtType, LPCTSTR lpContent, UINT ExtenId); // 线路向上层发送的设备主动事件
- private:
- CProxyShell(void);
- void __free(void);
- CProxyExten* __getProxyExten(UINT ExtnNum); // 根据分机号查找内线
- CVirtualProxy* __getProxyTrunk(UINT TrunkId); // 根据外线ID查找外线
- CProxyVoip* __getProxyVoip(UINT VoipId); // 根据VOIP号查找VOIP线路
- // 设备事件处理函数
- bool __procFunCodeDevEvent(CVirtualProxy* pLine, LPCTSTR lpContent, UINT ExtenId);
- bool __procHoldOnDevEvent(CVirtualProxy* pLine, UINT ExtenId);
- bool __procTakeBackDevEvent(CVirtualProxy* pLine, UINT ExtenId);
- // 线路请求中的子操作
- bool __beginLineReq(CReqBase* pLineReq); // 启动Req
- // Req处理子函数
- bool __procReqInfoTransfer(CPduEntity& a_Req); // 数据交互
- bool __procReqPlaySound(CPduEntity& a_Req); // 线路放音收号
- bool __procReqMakeCall(CPduEntity& a_Req); // 线路外呼处理
- bool __procReqHangUp(CPduEntity& a_Req); // 线路挂机处理
- bool __procReqTrunkTurn(CPduEntity& a_Req); // 外线呼叫转移
- bool __procReqTurnAgent(CPduEntity& a_Req); // 外线转坐席
- bool __procReqAnswerCall(CPduEntity& a_Req); // 应答呼叫
- bool __procReqPCall(CPduEntity& a_Req); // 预测外呼
- bool __procReqTransfer(CPduEntity& a_Req); // 座席呼叫转移
- bool __procReqMeeting(CPduEntity& a_Req); // 单步会议
- bool __procReqTurnIvr(CPduEntity& a_Req); // 转IVR
- bool __procReqInstead(CPduEntity& a_Req); // 代接
- bool __procReqIntercept(CPduEntity& a_Req); // 强截
- bool __procReqInsert(CPduEntity& a_Req); // 强插
- bool __procReqListen(CPduEntity& a_Req); // 监听
- bool __procReqReset(CPduEntity& a_Req); // 重置
- bool __procReqFax(CPduEntity& a_Req); // 传真
- bool __procReqRecord(CPduEntity& a_Req); // 录音
- bool __procReqLeaveWord(CPduEntity& a_Req); // 留言录音
- bool __procReqMuteOn(CPduEntity& a_Req); // 静音启动
- bool __procReqMuteOff(CPduEntity& a_Req); // 静音结束
- bool __procReqLineCheck(CPduEntity& a_Req); // 线路自检
- bool __procReqConsultCall(CPduEntity& a_Req); // 协商呼叫
- bool __procReqConsultCallConfirm(CPduEntity& a_Req); // 协商呼叫确认
- private:
- // 内/外线索引表
- CMap<UINT, UINT, CProxyExten*, CProxyExten*> m_ExtenMap;
- CMap<UINT, UINT, CProxyVoip*, CProxyVoip*> m_VoipMap;
- CMap<UINT, UINT, CProxyDti*, CProxyDti*> m_DtiMap;
- };
|