/************************************************************************* 【文件名】 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 m_ExtenMap; CMap m_VoipMap; CMap m_DtiMap; };