linux版本中间件

FsLinkInc.h 6.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. #pragma once
  2. #include <string>
  3. #include <esl.h>
  4. #include "DevInfoInc.h"
  5. using namespace std;
  6. #define FS_LINK_DELETE(x) if(x != nullptr) delete x; x = nullptr
  7. #define FS_BUFFER_LEMN_MIN 32
  8. #define FS_BUFFER_LEN_NORMAL 64
  9. #define FS_BUFFER_LEN_MAX 128
  10. #define FS_LINK_INSTANCE_INVALID 0
  11. #define FS_LINK_JOBID_INVALID -1
  12. // ESL事件解析相关
  13. #define ESL_EVT_SPLIT_FLAG "\n"
  14. #define ESL_EVT_NAME_BODY_HDR_AUTH_USER "Auth-User"
  15. #define ESL_EVT_LEN_BODY_HDR_AUTH_USER 10
  16. #define ESL_EVT_POS_BODY_HDR_AUTH_USER 13
  17. #define ESL_JOB_RESULT_LEN 3
  18. #define ESL_JOB_DONE_RES_OK "+OK"
  19. #define ESL_JOB_DONE_RES_FAILED "-ERR"
  20. #define ESL_PREFIX_BACKGROUND "bgapi"
  21. // FS命令相关
  22. #define ESL_CMD_HANGUPALL "api hupall\n\n"
  23. #define ESL_CMD_SCAN_INTERNAL "api sofia status profile internal reg\n\n"
  24. #define ESL_CMD_HANGUP "uuid_kill"
  25. #define ESL_CMD_CONSULT "uuid_broadcast"
  26. #define ESL_CMD_MAKE_CALL "originate"
  27. // FS应用相关
  28. #define ESL_APP_BREAK "break"
  29. #define ESL_APP_LEAVEWORD "record"
  30. #define ESL_APP_PLAY_DTMF "play_and_get_digits"
  31. #define ESL_APP_PLAY "playback"
  32. #define ESL_APP_HANGUP "hangup"
  33. #define ESL_APP_SET "set"
  34. #define ESL_APP_BRIDGE "bridge"
  35. // FS变量相关
  36. #define ESL_VAR_OP_INSTANCE "op_instance"
  37. #define ESL_VAR_DTMF_KEY "dtmf_key"
  38. #define ESL_VAR_OP_TYPE "op_type" // 主要用于区分是否是自动外呼 操作类型
  39. #define ESL_VAR_TASK_ID "task_id" // 任务id 自动外呼
  40. #define ESL_VAR_MALL_CALL_CALLEE "call_called" // 代码呼叫时,create事件得到正确的被叫号码
  41. // ESL事件头域
  42. #define ESL_HEADER_CHAN_UNIQUE_ID "Caller-Unique-ID"
  43. #define ESL_HEADER_JOB_CMD "Job-Command"
  44. #define ESL_HEADER_JOB_UUID "Job-UUID"
  45. #define ESL_HEADER_JOB_CMD "Job-Command"
  46. #define ESL_HEADER_HANGUP_CAUSE "Hangup-Cause"
  47. #define ESL_HEADER_APPLICATION "Application"
  48. #define ESL_HEADER_CALLID "Channel-Call-UUID"
  49. #define ESL_HEADER_CCID "variable_cc_member_session_uuid" // freeswitchs自带的callcenter模块转接坐席后,callid产生变化,可通过该通道变量进行关联
  50. #define ESL_HEADER_CHANID "Unique-ID"
  51. #define ESL_HEADER_CALLER "Caller-Caller-ID-Number"
  52. #define ESL_HEADER_CALLEE "Caller-Callee-ID-Number"
  53. #define ESL_HEADER_DEST_NUM "Caller-Destination-Number"
  54. #define ESL_HEADER_DIRECTION "Call-Direction"
  55. #define ESL_HEADER_SUBCLASS "Event-Subclass"
  56. #define ESL_HEADER_EXTEN_NO "username"
  57. #define ESL_HEADER_CALL_FAILED_CAUSE "variable_originate_disposition"
  58. #define ESL_HEADER_CHAN_OP_INSTANCE "variable_op_instance"
  59. #define ESL_HEADER_CHAN_OP_TYPE "variable_op_type" // 操作类型 自动外呼
  60. #define ESL_HEADER_CHAN_TASK_ID "variable_task_id" // 任务id 自动外呼
  61. #define ESL_HEADER_CHAN_MALL_CALL_CALLEE "variable_call_called" // 代码呼叫时,create事件得到正确的被叫号码
  62. #define ESL_HEADER_DTMF "DTMF-Digit"
  63. // ESL事件头域常量值
  64. #define ESL_HDR_DIRECTION_INBOUND "inbound"
  65. #define ESL_HDR_DIRECTION_OUTBOUND "outbound"
  66. #define ESL_HDR_SUBCLASS_SIP_REG "sofia::register"
  67. #define ESL_HDR_SUBCLASS_SIP_UNREG "sofia::unregister"
  68. // 通道状态定义
  69. typedef enum tagCHAN_LOGIC_STATE
  70. {
  71. CHAN_LOGIC_STATE_DISABLED = 0x00, // 不可用
  72. CHAN_LOGIC_STATE_FREE = 0x01, // 空闲
  73. CHAN_LOGIC_STATE_INIT = 0x02, // 摘机等待拨号
  74. CHAN_LOGIC_STATE_DIALING = 0x03, // 拨号
  75. CHAN_LOGIC_STATE_RING_BACK = 0x04, // 呼出振铃
  76. CHAN_LOGIC_STATE_ALERTING = 0x05, // 来电振铃
  77. CHAN_LOGIC_STATE_TALKING = 0x06, // 通话中
  78. CHAN_LOGIC_STATE_STANDBY = 0x07, // 中继通道可响应APP(此状态仅用作DevLink侧,不可传至CTI)
  79. CHAN_LOGIC_STATE_HELD = 0x0100 // 通话保持中(保持状态的使用须与原通道状态按位或和与)
  80. } CHAN_LOGIC_STATE;
  81. // ESL通道事件定义
  82. typedef enum tagCHAN_EVENT_ID
  83. {
  84. CHANNEL_EVENT_CREATE = ESL_EVENT_CHANNEL_CREATE,
  85. CHANNEL_EVENT_PROGRESS = ESL_EVENT_CHANNEL_PROGRESS,
  86. CHANNEL_EVENT_PROGRESS_MEDIA = ESL_EVENT_CHANNEL_PROGRESS_MEDIA,
  87. CHANNEL_EVENT_ANSWER = ESL_EVENT_CHANNEL_ANSWER,
  88. CHANNEL_EVENT_BRIDGE = ESL_EVENT_CHANNEL_BRIDGE,
  89. CHANNEL_EVENT_HANGUP_COMPLETE = ESL_EVENT_CHANNEL_HANGUP_COMPLETE,
  90. CHANNEL_EVENT_HOLD = ESL_EVENT_CHANNEL_HOLD,
  91. CHANNEL_EVENT_UNHOLD = ESL_EVENT_CHANNEL_UNHOLD
  92. } CHAN_EVENT_ID;
  93. // 呼叫方向定义
  94. typedef enum tagCALL_DIRECTION
  95. {
  96. CALL_DIRECTION_INBOUND,
  97. CALL_DIRECTION_OUTBOUND
  98. } CALL_DIRECTION;
  99. // 保持事件定义
  100. typedef enum tagEVENT_HOLD_TYPE
  101. {
  102. EVENT_HOLD,
  103. EVENT_UNHOLD
  104. } EVENT_HOLD_TYPE;
  105. // 后台任务执行结束事件通知结构
  106. typedef struct tagBG_JOB_NOTIFY
  107. {
  108. long JobInstance = 0l;
  109. string JobCmd;
  110. string JobBody;
  111. } BG_JOB_NOTIFY, *PBG_JOB_NOTIFY;
  112. // APP执行结束事件通知结构
  113. typedef struct tagAPP_EXEC_NOTIFY
  114. {
  115. string App;
  116. } APP_EXEC_NOTIFY, *PAPP_EXEC_NOTIFY;
  117. // DTMF事件通知结构
  118. typedef struct tagDTMF_NOTIFY
  119. {
  120. string CallId;
  121. string ChanId;
  122. string DTMF;
  123. } DTMF_NOTIFY, *PDTMF_NOTIFY;
  124. // 保持事件通知结构
  125. typedef struct tagHOLD_NOTIFY
  126. {
  127. string CallId;
  128. string ChanId;
  129. EVENT_HOLD_TYPE EvtType;
  130. } HOLD_NOTIFY, *PHOLD_NOTIFY;
  131. // 通道状态事件通知结构
  132. typedef struct tagCHAN_EVENT_NOTIFY
  133. {
  134. CHAN_EVENT_ID EventId;
  135. CALL_DIRECTION Direction;
  136. string CallId;
  137. string CcId; // 当该变量存在时用该变量代替callid
  138. string ChanId;
  139. string Caller;
  140. string Callee;
  141. string HangupCause;
  142. long ChanOpInstance = 0l;
  143. int CallType =0; // 自动外呼时赋值
  144. long TaskId = 0l; // 自动外呼任务id
  145. string Called; // 保存代码外呼时,被叫,用于来电显示
  146. } CHAN_EVENT_NOTIFY, *PCHAN_EVENT_NOTIFY;
  147. // 放音收号内容
  148. typedef struct tagPlayVoiceContent
  149. {
  150. PlayVoiceMode nModel; // 放音模式(1:放音收号,2:只放音,3:只收号,4:停止放音)
  151. string szFileName; // 放音文件名/信号音类型
  152. uint32_t nDtmfCount; // 收号位数
  153. uint32_t nDtmfPeriod; // DTMF收号间隔
  154. string cDtmfEnd; // DTMF结束按键
  155. uint32_t nTts; // TTS类型
  156. int nTtsDigitMode; // TTS数字播报模式
  157. int nTtsSpeed; // TTS语速
  158. int nTtsVolume; // TTS音量
  159. } PlayVoiceContent;