中间件底层,websocket

FsLinkInc.h 10KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. /*************************************************************************
  2. 【文件名】 FsLinkInc.h
  3. 【功能模块和目的】 FsLink公共头文件
  4. 【开发者及日期】 郑石诺 2016/06/20
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2016 河南加一信息技术有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. // 程序需要的其他头文件
  11. #include "../Public/GlobalDef/CommonTypeDef.h"
  12. #include "../Public/GlobalDef/DevLinkInc.h"
  13. #include "../Public/GlobalDef/DevInfoInc.h"
  14. #include "Logger.h"
  15. #include "TtsInterface.h"
  16. #define OTL_ODBC //OTL连接方式为ODBC
  17. #define OTL_STREAM_READ_ITERATOR_ON //使用OTL迭代器
  18. #define OTL_STL //OTL使用标准库
  19. #include "../Public/OTL/otlv4.h"
  20. #include "../Public/OTL/OtlDB.h"
  21. #include "esl.h"
  22. #include "Config.h"
  23. #include "DevControl.h"
  24. #ifndef LOGGER
  25. #define LOGGER CDevControl::GetInstance().onEventLog
  26. #endif
  27. #define FS_LINK_DELETE(x) if(x != NULL) delete x; x = NULL
  28. #define FS_BUFFER_LEMN_MIN 32
  29. #define FS_BUFFER_LEN_NORMAL 64
  30. #define FS_BUFFER_LEN_MAX 128
  31. #define FS_LINK_INSTANCE_INVALID 0
  32. #define FS_LINK_JOBID_INVALID -1
  33. #define FS_CONNECT_PWD_DEFAULT _T("ClueCon")
  34. #define FS_PARK_EXTEN_IN_CONTEXT _T("park")
  35. // ESL事件解析相关
  36. #define ESL_EVT_SPLIT_FLAG _T("\n")
  37. #define ESL_EVT_NAME_BODY_HDR_AUTH_USER _T("Auth-User")
  38. #define ESL_EVT_LEN_BODY_HDR_AUTH_USER 10
  39. #define ESL_EVT_POS_BODY_HDR_AUTH_USER 13
  40. #define ESL_JOB_RESULT_LEN 3
  41. #define ESL_JOB_DONE_RES_OK _T("+OK")
  42. #define ESL_JOB_DONE_RES_FAILED _T("-ERR")
  43. #define ESL_PREFIX_BACKGROUND _T("bgapi")
  44. // FS命令相关
  45. #define ESL_CMD_HANGUPALL _T("api hupall\n\n")
  46. #define ESL_CMD_SCAN_INTERNAL _T("api sofia status profile internal reg\n\n")
  47. #define ESL_CMD_HANGUP _T("uuid_kill")
  48. #define ESL_CMD_CONSULT _T("uuid_broadcast")
  49. #define ESL_CMD_MAKE_CALL _T("originate")
  50. // FS应用相关
  51. #define ESL_APP_BREAK _T("break")
  52. #define ESL_APP_LEAVEWORD _T("record")
  53. #define ESL_APP_PLAY_DTMF _T("play_and_get_digits")
  54. #define ESL_APP_PLAY _T("playback")
  55. #define ESL_APP_HANGUP _T("hangup")
  56. #define ESL_APP_SET _T("set")
  57. #define ESL_APP_BRIDGE _T("bridge")
  58. // FS变量相关
  59. #define ESL_VAR_OP_INSTANCE _T("op_instance")
  60. #define ESL_VAR_DTMF_KEY _T("dtmf_key")
  61. #define ESL_VAR_OP_CALLER _T("op_caller")
  62. // ESL事件头域
  63. #define ESL_HEADER_CHAN_UNIQUE_ID _T("Caller-Unique-ID")
  64. #define ESL_HEADER_JOB_CMD _T("Job-Command")
  65. #define ESL_HEADER_JOB_UUID _T("Job-UUID")
  66. #define ESL_HEADER_JOB_CMD _T("Job-Command")
  67. #define ESL_HEADER_HANGUP_CAUSE _T("Hangup-Cause")
  68. #define ESL_HEADER_APPLICATION _T("Application")
  69. #define ESL_HEADER_CALLID _T("Channel-Call-UUID")
  70. #define ESL_HEADER_CHANID _T("Unique-ID")
  71. #define ESL_HEADER_CALLER _T("Caller-Caller-ID-Number")
  72. #define ESL_HEADER_CALLEE _T("Caller-Callee-ID-Number")
  73. #define ESL_HEADER_DEST_NUM _T("Caller-Destination-Number")
  74. #define ESL_HEADER_DIRECTION _T("Call-Direction")
  75. #define ESL_HEADER_SUBCLASS _T("Event-Subclass")
  76. #define ESL_HEADER_EXTEN_NO _T("username")
  77. #define ESL_HEADER_CALL_FAILED_CAUSE _T("variable_originate_disposition")
  78. #define ESL_HEADER_CHAN_OP_INSTANCE _T("variable_op_instance")
  79. #define ESL_HEADER_DTMF _T("DTMF-Digit")
  80. #define ESL_HEADER_CHAN_OP_CALLER _T("variable_op_caller") // 自定义主叫
  81. #define ESL_HEADER_DTMF_KEY _T("variable_dtmf_key")
  82. #define ESL_HEADER_CHAN_OP_CALLID _T("variable_Channel_Call_UUID") // 会话id,配合lua呼叫 2021-12-13
  83. // ESL事件头域常量值
  84. #define ESL_HDR_DIRECTION_INBOUND _T("inbound")
  85. #define ESL_HDR_DIRECTION_OUTBOUND _T("outbound")
  86. #define ESL_HDR_SUBCLASS_SIP_REG _T("sofia::register")
  87. #define ESL_HDR_SUBCLASS_SIP_UNREG _T("sofia::unregister")
  88. // 通道状态定义
  89. typedef enum tagCHAN_LOGIC_STATE
  90. {
  91. CHAN_LOGIC_STATE_DISABLED = 0x00, // 不可用
  92. CHAN_LOGIC_STATE_FREE = 0x01, // 空闲
  93. CHAN_LOGIC_STATE_INIT = 0x02, // 摘机等待拨号
  94. CHAN_LOGIC_STATE_DIALING = 0x03, // 拨号
  95. CHAN_LOGIC_STATE_RING_BACK = 0x04, // 呼出振铃
  96. CHAN_LOGIC_STATE_ALERTING = 0x05, // 来电振铃
  97. CHAN_LOGIC_STATE_TALKING = 0x06, // 通话中
  98. CHAN_LOGIC_STATE_STANDBY = 0x07, // 中继通道可响应APP(此状态仅用作DevLink侧,不可传至CTI)
  99. CHAN_LOGIC_STATE_HELD = 0x0100 // 通话保持中(保持状态的使用须与原通道状态按位或和与)
  100. } CHAN_LOGIC_STATE;
  101. // ESL通道事件定义
  102. typedef enum tagCHAN_EVENT_ID
  103. {
  104. CHANNEL_EVENT_CREATE = ESL_EVENT_CHANNEL_CREATE,
  105. CHANNEL_EVENT_PROGRESS = ESL_EVENT_CHANNEL_PROGRESS,
  106. CHANNEL_EVENT_PROGRESS_MEDIA = ESL_EVENT_CHANNEL_PROGRESS_MEDIA,
  107. CHANNEL_EVENT_ANSWER = ESL_EVENT_CHANNEL_ANSWER,
  108. CHANNEL_EVENT_BRIDGE = ESL_EVENT_CHANNEL_BRIDGE,
  109. CHANNEL_EVENT_HANGUP_COMPLETE = ESL_EVENT_CHANNEL_HANGUP_COMPLETE,
  110. CHANNEL_EVENT_HOLD = ESL_EVENT_CHANNEL_HOLD,
  111. CHANNEL_EVENT_UNHOLD = ESL_EVENT_CHANNEL_UNHOLD
  112. } CHAN_EVENT_ID;
  113. // 呼叫方向定义
  114. typedef enum tagCALL_DIRECTION
  115. {
  116. CALL_DIRECTION_INBOUND,
  117. CALL_DIRECTION_OUTBOUND
  118. } CALL_DIRECTION;
  119. // 保持事件定义
  120. typedef enum tagEVENT_HOLD_TYPE
  121. {
  122. EVENT_HOLD,
  123. EVENT_UNHOLD
  124. } EVENT_HOLD_TYPE;
  125. // 后台任务执行结束事件通知结构
  126. typedef struct tagBG_JOB_NOTIFY
  127. {
  128. LONG JobInstance;
  129. TCHAR JobCmd[FS_BUFFER_LEN_NORMAL];
  130. TCHAR JobBody[FS_BUFFER_LEN_MAX];
  131. } BG_JOB_NOTIFY, *PBG_JOB_NOTIFY;
  132. // APP执行结束事件通知结构
  133. typedef struct tagAPP_EXEC_NOTIFY
  134. {
  135. TCHAR App[FS_BUFFER_LEN_NORMAL];
  136. TCHAR Result[FS_BUFFER_LEN_NORMAL]; // 2022-03-11 放音收号保存按键
  137. } APP_EXEC_NOTIFY, *PAPP_EXEC_NOTIFY;
  138. // DTMF事件通知结构
  139. typedef struct tagDTMF_NOTIFY
  140. {
  141. TCHAR CallId[FS_BUFFER_LEN_NORMAL];
  142. TCHAR ChanId[FS_BUFFER_LEN_NORMAL];
  143. TCHAR DTMF[FS_BUFFER_LEMN_MIN];
  144. } DTMF_NOTIFY, *PDTMF_NOTIFY;
  145. // 保持事件通知结构
  146. typedef struct tagHOLD_NOTIFY
  147. {
  148. TCHAR CallId[FS_BUFFER_LEN_NORMAL];
  149. TCHAR ChanId[FS_BUFFER_LEN_NORMAL];
  150. EVENT_HOLD_TYPE EvtType;
  151. } HOLD_NOTIFY, *PHOLD_NOTIFY;
  152. // 通道状态事件通知结构
  153. typedef struct tagCHAN_EVENT_NOTIFY
  154. {
  155. CHAN_EVENT_ID EventId;
  156. CALL_DIRECTION Direction;
  157. TCHAR CallId[FS_BUFFER_LEN_NORMAL];
  158. TCHAR ChanId[FS_BUFFER_LEN_NORMAL];
  159. TCHAR Caller[FS_BUFFER_LEN_NORMAL];
  160. TCHAR Callee[FS_BUFFER_LEN_NORMAL];
  161. TCHAR HangupCause[FS_BUFFER_LEN_NORMAL];
  162. TCHAR HangupDisposition[FS_BUFFER_LEN_NORMAL];
  163. LONG ChanOpInstance;
  164. } CHAN_EVENT_NOTIFY, *PCHAN_EVENT_NOTIFY;
  165. // 放音收号内容
  166. typedef struct tagPlayVoiceContent
  167. {
  168. PlayVoiceMode nModel; // 放音模式(1:放音收号,2:只放音,3:只收号,4:停止放音)
  169. CHAR szFileName[MAX_PATH]; // 放音文件名/信号音类型
  170. UINT nDtmfCount; // 收号位数
  171. UINT nDtmfPeriod; // DTMF收号间隔
  172. CHAR cDtmfEnd; // DTMF结束按键
  173. UINT nTts; // TTS类型
  174. int nTtsDigitMode; // TTS数字播报模式
  175. int nTtsSpeed; // TTS语速
  176. int nTtsVolume; // TTS音量
  177. int nPlayCount; // 放音收号,询问按键次数,2023-03-15
  178. } PlayVoiceContent;