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

Exten.cpp 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "StdAfx.h"
  2. #include "Exten.h"
  3. #include "AcdCore.h"
  4. #include "MsgCenter.h"
  5. #include "NetworkAcd.h"
  6. CExten::CExten(UINT a_ExtId)
  7. {
  8. // 基础信息
  9. m_ID = a_ExtId;
  10. m_State = INNER_STATE_DISABLED;
  11. m_AssoAgent = 0;
  12. // 附加信息
  13. m_CallId = 0;
  14. ZeroMemory(m_CallerNum, PHONE_NUM_LEN);
  15. ZeroMemory(m_CalleeNum, PHONE_NUM_LEN);
  16. ZeroMemory(m_DataBind, MAX_DATA_BUF_LEN);
  17. m_PeerLineType = LINE_NULL;
  18. }
  19. CExten::~CExten(void)
  20. {
  21. }
  22. /*****************************************************************
  23. **【函数名称】 __reportStatus
  24. **【函数功能】 通知分机状态
  25. **【参数】
  26. **【返回值】
  27. ****************************************************************/
  28. void CExten::__reportStatus( void )
  29. {
  30. // 通知分机关联的座席状态信息
  31. if(m_AssoAgent != 0)
  32. {
  33. CPduEntity Cmd(PDU_CMD_CTI_LINE_STATE);
  34. Cmd.SetDataUInt(0, m_ID);
  35. Cmd.SetDataUInt(1, m_State);
  36. Cmd.SetDataULong(2, m_CallId);
  37. Cmd.SetDataUInt(3, m_AssoAgent);
  38. Cmd.SetDataString(4, m_CallerNum);
  39. Cmd.SetDataString(5, m_CalleeNum);
  40. Cmd.SetDataString(6, m_DataBind);
  41. Cmd.SetDataUInt(7, m_PeerLineType);
  42. Cmd.SetDataUInt(8, m_InfoEx);
  43. Cmd.SetDataUInt(9, m_FinalExt);
  44. Cmd.SetDataUInt(10, m_OpType);
  45. CNetworkAcd::GetInstance().send2Agent(m_AssoAgent, &Cmd);
  46. } // end if
  47. // 添加消息可供视图刷新
  48. CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_STATE_UPDATE, (PARAM)m_ID);
  49. }
  50. /*****************************************************************
  51. **【函数名称】 release
  52. **【函数功能】 释放资源
  53. **【参数】
  54. **【返回值】
  55. ****************************************************************/
  56. void CExten::release( void )
  57. {
  58. // 添加消息可供视图刷新
  59. CMsgCenter::GetInstance().pushMsg(ACD_MSG_EXTEN_REMOVE, (const PARAM)m_ID);
  60. }
  61. /*****************************************************************
  62. **【函数名称】 SetExtState
  63. **【函数功能】 设置分机当前状态
  64. **【参数】
  65. **【返回值】
  66. ****************************************************************/
  67. void CExten::setState( CPduEntity* a_pCmd )
  68. {
  69. ASSERT(a_pCmd != NULL);
  70. // 保存状态
  71. UINT State = a_pCmd->GetDataUInt(1);
  72. if(m_State == State)
  73. return;
  74. // 保存相关信息
  75. m_State = (INNER_STATE)State;
  76. m_CallId = a_pCmd->GetDataULong(2);
  77. lstrcpy(m_CallerNum, a_pCmd->GetDataString(4));
  78. lstrcpy(m_CalleeNum, a_pCmd->GetDataString(5));
  79. lstrcpy(m_DataBind, a_pCmd->GetDataString(6));
  80. m_PeerLineType = a_pCmd->GetDataUInt(7);
  81. m_InfoEx = a_pCmd->GetDataUInt(8);
  82. m_FinalExt = a_pCmd->GetDataUInt(9);
  83. m_OpType = a_pCmd->GetDataUInt(10);
  84. // 通知当前分机状态
  85. __reportStatus();
  86. }
  87. /*****************************************************************
  88. **【函数名称】 setAssoAgent
  89. **【函数功能】 设置关联的座席
  90. **【参数】
  91. **【返回值】
  92. ****************************************************************/
  93. void CExten::setAssoAgent( UINT a_AgentId )
  94. {
  95. m_AssoAgent = a_AgentId;
  96. // 通知当前分机状态
  97. __reportStatus();
  98. }