MiddleWares_YiHe 郑州颐和医院随访系统中间件

TaskAgentHold.cpp 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "stdafx.h"
  2. #include "TaskAgentHold.h"
  3. #include "LineHolder.h"
  4. #include "LogicLine.h"
  5. #include "SessionHolder.h"
  6. #include "CallSession.h"
  7. #include "CtiCore.h"
  8. #include "NetworkCti.h"
  9. CTaskAgentHold::CTaskAgentHold(CPduEntity &PduEntity) : CTask(PduEntity)
  10. {
  11. }
  12. CTaskAgentHold::~CTaskAgentHold(void)
  13. {
  14. }
  15. /*****************************************************************
  16. **【函数名称】 DoTask
  17. **【函数功能】 Task处理
  18. **【参数】
  19. **【返回值】 void
  20. ****************************************************************/
  21. BOOL CTaskAgentHold::DoTask()
  22. {
  23. // 显示日志
  24. ShowLog();
  25. // 校验
  26. if (!Verify()) return FALSE;
  27. // 设置当前操作类型
  28. m_pCurrLine->opType() = PDU_CMD_AGENT_HOLD;
  29. // 保存随路数据
  30. CCallSession* pSession = CSessionHolder::GetInstance().findSession(m_pCurrLine->callId());
  31. if (pSession != NULL)
  32. pSession->data() = m_CurrCmd.GetDataString(5);
  33. // 向底层设备发送转人工命令
  34. LineOpParam pLineOpParam;
  35. memset(&pLineOpParam, 0, sizeof(pLineOpParam));
  36. lstrcpy(pLineOpParam.szParam1, m_pCurrLine->callerNum());
  37. sprintf_s(pLineOpParam.szParam2, PHONE_NUM_LEN, "%u", m_CurrCmd.GetDataUInt(4));
  38. //pLineOpParam.nParam2 = DEV_RES_TYPE_EXT;
  39. pLineOpParam.nParam2 = DEV_RES_TYPE_TRUNK;
  40. //呼叫之前执行会话处理 将CallID赋值给LogiclineExt //tj
  41. _PrcoCallNode(m_pCurrLine->lineId(), m_CurrCmd.GetDataUInt(4));
  42. return CCtiCore::GetInstance().getDevLink().exec((long)this, LINE_OP_HOLD, m_pCurrLine->lineId(), NULL);
  43. }
  44. /*****************************************************************
  45. **【函数名称】 Verify
  46. **【函数功能】 校验
  47. **【参数】
  48. **【返回值】 BOOL
  49. ****************************************************************/
  50. BOOL CTaskAgentHold::Verify()
  51. {
  52. // 线路绑定校验
  53. /*if(!_bindLogicLine(m_CurrCmd.GetDataUInt(1)))
  54. return FALSE;*/
  55. if (!_bindLogicLine(1))
  56. return FALSE;
  57. // 本端状态校验
  58. /*if(m_pCurrLine->status() != INNER_STATE_TALKING)
  59. {
  60. ILogger::getInstance().log(LOG_CLASS_BUSI, LOG_LEVEL_WARNING, _T("{Task}: 线路[%d]执行座席呼叫任务校验时失败:当前线路未在通话中"), m_pCurrLine->lineId());
  61. return FALSE;
  62. }*/
  63. return TRUE;
  64. }
  65. /*****************************************************************
  66. **【函数名称】 ShowLog
  67. **【函数功能】 显示日志
  68. **【参数】
  69. **【返回值】 void
  70. ****************************************************************/
  71. void CTaskAgentHold::ShowLog()
  72. {
  73. // 显示日志
  74. ILogger::getInstance().log(LOG_CLASS_SOCKET, LOG_LEVEL_NORMAL, _T("AGENT->CTI, CMD = [座席保持], Exten = %d"), m_CurrCmd.GetDataUInt(1));
  75. }