华辉中间件项目(代码服务器上没有,用杨成电脑的源代码上传的)

LogicLineTrunk.cpp 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include "StdAfx.h"
  2. #include "LogicLineTrunk.h"
  3. #include "CallSession.h"
  4. #include "SessionHolder.h"
  5. #include "NetworkCti.h"
  6. #include "StatisticsMgr.h"
  7. CLogicLineTrunk::CLogicLineTrunk(UINT ResId) : CLogicLine(ResId)
  8. {
  9. }
  10. CLogicLineTrunk::~CLogicLineTrunk(void)
  11. {
  12. }
  13. /*****************************************************************
  14. **【函数名称】 onLineStatusUpdated
  15. **【函数功能】 处理线路状态变化
  16. **【参数】 EvtInfo: 线路资源状态
  17. **【返回值】
  18. ****************************************************************/
  19. void CLogicLineTrunk::onLineStatusUpdated( const EventResStatus &EvtInfo )
  20. {
  21. if(m_LineStatus == EvtInfo.nState)
  22. return;
  23. // 保存线路信息
  24. m_LineStatus = EvtInfo.nState;
  25. m_CallerNum = EvtInfo.szCallerNum;
  26. m_CalleeNum = EvtInfo.szCalleeNum;
  27. if(m_CallId != 0)
  28. ILogger::getInstance().log(LOG_CLASS_DEV, LOG_LEVEL_NORMAL, _T("{LogicLineTrunk}: 线路状态, LineId = %lu,State=%d,CallId=%lu,Caller=%s,Callee=%s"), m_LineId, m_LineStatus, m_CallId, m_CallerNum, m_CalleeNum);
  29. //白阳 2019-7-17
  30. //保持处理
  31. //if ( EvtInfo.nResType != 0 && (EvtInfo.nState && HELD_STATE_MASK) == INNER_STATE_HELD)
  32. //{
  33. // m_HoldCallId = m_CallId;
  34. // m_CallId = 0;
  35. //}
  36. ////接回处理
  37. //if (EvtInfo.nResType == 0 && (EvtInfo.nState && HELD_STATE_MASK) == INNER_STATE_HELD)
  38. //{
  39. // m_CallId = m_HoldCallId;
  40. // m_CallId = 0;
  41. //}
  42. ////获取中继呼入类型
  43. //m_FinaTrunk = CStatisticsMgr::GetInstance().getFinalExt(m_CallId);
  44. // 发送线路状态变化信息到ivr(需要显示的是外线的主被叫号码)
  45. //pushLineData2IVR();
  46. //统计线路状态变化
  47. _reportLineStatus();
  48. // 通知会话状态变化,保持会话(m_nHoldCallId)不再通知
  49. CSessionHolder::GetInstance().onLineStatusUpdated(this);
  50. }
  51. //白阳 7-18
  52. //中继向相关的ivr发送,不进行ivr流程的任何转接操作
  53. //void CLogicLineTrunk::pushLineData2IVR()
  54. //{
  55. //取到相关的随路数据,中继号
  56. //int m_eventID;
  57. //CString str_eventID;
  58. //UINT m_AssoLineType;
  59. //CCallSession* pTrunkSession;
  60. //pTrunkSession = CSessionHolder::GetInstance().findSession(m_CallId);
  61. ////str_eventID.Format("%d",m_eventID);
  62. //// 获取对端线路类型
  63. ////CLogicLine* pAssoLine = pTrunkSession->getAssoLine(this);
  64. ////if (pAssoLine != NULL)
  65. ////{
  66. //// m_AssoLineType = pAssoLine->type();
  67. //// //外线资源类型判定
  68. //// if (m_AssoLineType == DEV_RES_TYPE_TRUNK) {
  69. //// m_AssoLineType = pAssoLine->typeExtTrunk();
  70. //// }
  71. ////}
  72. //// 发送线路状态变化信息到IVR
  73. //CPduEntity Cmd(PDU_CMD_CTI_LINE_STATE);
  74. //Cmd.SetDataUInt(0, m_LineId);
  75. //Cmd.SetDataUInt(1, m_LineStatus);
  76. //Cmd.SetDataULong(2, (m_CallId == 0 ? m_HoldCallId : m_CallId));
  77. //Cmd.SetDataUInt(3, m_AgentId);
  78. //Cmd.SetDataString(4, m_CallerNum);
  79. //Cmd.SetDataString(5, m_CalleeNum);
  80. //Cmd.SetDataString(6, str_eventID);
  81. //Cmd.SetDataUInt(7, /*m_AssoLineType*/DEV_RES_TYPE_TRUNK);
  82. //
  83. ////IVR接收相关的消息,通过HP_Server发送给前端的页面显示
  84. //Cmd.SetDataUInt(9, m_FinaTrunk);
  85. //Cmd.SetDataUInt(10, m_CurrentOpType); // 传入当前线路操作类型
  86. //Cmd.SetDataInt(11, m_ActionID);
  87. //
  88. ////向IVR发送相关的消息
  89. //CNetworkCti::GetInstance().send2IVR(Cmd);
  90. //}