hd

IvrSysInc.h 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. /*************************************************************************
  2. 【文件名】 IvrSysInc.h
  3. 【功能模块和目的】 IVR系统定义文件
  4. 【开发者及日期】 郑石诺 2015/01/26
  5. 【版本】 V1.0.0
  6. 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
  7. 【更改记录】
  8. *************************************************************************/
  9. #pragma once
  10. #define MAX_LENGTH_HASH 1999 // 哈希表最大容量
  11. #define VAR_NAME_LEN 128 // 变量名长度
  12. #define VAR_LEN 512 // 变量名长度
  13. #define BUFF_LEN 512*8 // 缓冲区长度
  14. #define STR_ERR_CORE_INIT_DB _T("{Core}: 连接配置数据库失败")
  15. #define STR_ERR_CORE_INIT_CFG _T("{Core}: 加载配置信息失败")
  16. #define STR_ERR_CORE_INIT_NETWORK _T("{Core}: 初始化网络环境失败")
  17. #define STR_ERR_CORE_INIT_FLOW _T("{Core}: 初始化流程环境时出现异常")
  18. #define CELL_NAME_START _T("CELL_START") // 流程开始
  19. #define CELL_NAME_END _T("CELL_END") // 流程结束
  20. #define CELL_NAME_CALL _T("CELL_CALL") // 外呼
  21. #define CELL_NAME_TRANSFER_OUT _T("CELL_TRANSFEROUT") // 外线转外线
  22. #define CELL_NAME_HANGUP _T("CELL_HANGUP") // 挂机
  23. #define CELL_NAME_QUEUE _T("CELL_QUEUE") // 来电排队
  24. #define CELL_NAME_CONTINUE_QUEUE _T("CELL_CONTINUEQUEUE") // 继续排队
  25. #define CELL_NAME_CANCEL_QUEUE _T("CELL_CANCELQUEUE") // 取消排队
  26. #define CELL_NAME_CALCULATE _T("CELL_CALCULATE") // 算术运算
  27. #define CELL_NAME_COMPARE _T("CELL_COMPARE") // 数据比较
  28. #define CELL_NAME_STRING_OP _T("CELL_STRINGOP") // 字符串操作
  29. #define CELL_NAME_SQL _T("CELL_SQL") // SQL语句执行
  30. #define CELL_NAME_RECORDSET _T("CELL_RECORDSET") // 记录集操作
  31. #define CELL_NAME_DEFINE_VAR _T("CELL_DEFINEVAR") // 变量定义
  32. #define CELL_NAME_LEAVE_WORD _T("CELL_LEAVEWORD") // 留言
  33. #define CELL_NAME_BRANCH _T("CELL_BRANCH") // 分支
  34. #define CELL_NAME_AUDIO_AND_DTMF _T("CELL_AUDIODTMF") // 放音收按键
  35. #define CELL_NAME_TURN_AGENT _T("CELL_TURNAGENT") // 直接跳转坐席
  36. #define CELL_NAME_RECV_FAX _T("CELL_RECVFAX") // 接收传真
  37. #define CELL_NAME_SEND_FAX _T("CELL_SENDFAX") // 发送传真
  38. #define CELL_NAME_TIMER _T("CELL_TIMER") // 定时器
  39. #define CELL_NAME_SOCKET _T("CELL_SOCKET") // 套接字操作
  40. #define CELL_NAME_SUB_FLOW _T("CELL_SUBFLOW") // 子流程节点
  41. #define XPATH_IVR_NODE _T("/ivr/flow") // ivr节点在流程文件中的XPATH
  42. #define XPATH_CELL _T("cell")
  43. #define FLOW_ATTRIBUTE_NAME _T("Name")
  44. #define FLOW_ATTRIBUTE_TYPE _T("Type")
  45. #define FLOW_ATTRIBUTE_MATCHED_NUM _T("MatchedNum")
  46. #define FLOW_ATTRIBUTE_ASSO_LINE _T("MatchedLine")
  47. #define FLOW_ATTRIBUTE_CONCURRENCY _T("Concurrency")
  48. #define FLOW_SUB_NODE_SQL _T("Sql")
  49. #define FLOW_SUB_NODE_MAP _T("Map")
  50. #define FLOW_SUB_NODE_DEF_VAR _T("DefVar")
  51. #define FLOW_SUB_NODE_RFAX _T("RFax")
  52. #define FLOW_SUB_NODE_SFAX _T("SFax")
  53. #define FLOW_SUB_NODE_LEAVE_WORD _T("LeaveWord")
  54. #define FlOW_SUB_NODE_BRANCH _T("Branch")
  55. #define FLOW_SUB_NODE_AUDIO _T("Audio")
  56. #define FLOW_SUB_NODE_AGENT_ID _T("AgentId")
  57. #define FLOW_SUB_NODE_AGENT_GROUP _T("AgentGroup")
  58. #define FLOW_SUB_NODE_BAND_DATA _T("BandData")
  59. #define FLOW_SUB_NODE_SOCK_INPUT _T("InputVar")
  60. #define FLOW_SUB_NODE_SOCK_OUTPUT _T("OutputVar")
  61. #define CELL_ATTRIBUTE_NAME _T("Name")
  62. #define CELL_ATTRIBUTE_POS _T("Pos")
  63. #define CELL_ATTRIBUTE_NEXT _T("Next")
  64. #define CELL_ATTRIBUTE_NOTE _T("Note")
  65. #define CELL_ATTRIBUTE_CALLEE_NUM_TYPE _T("CalleeNumType")
  66. #define CELL_ATTRIBUTE_CALLEE_NUM _T("CalleeNum")
  67. #define CELL_ATTRIBUTE_CALLER_NUM_TYPE _T("CallerNumType")
  68. #define CELL_ATTRIBUTE_CALLER_NUM _T("CallerNum")
  69. #define CELL_ATTRIBUTE_TIMEOUT _T("Timeout")
  70. #define CELL_ATTRIBUTE_SUCCESS_POS _T("SuccessPos")
  71. #define CELL_ATTRIBUTE_FAIL_POS _T("FailPos")
  72. #define CELL_ATTRIBUTE_REASON _T("Reason")
  73. #define CELL_ATTRIBUTE_DATA1_TYPE _T("Data1Type")
  74. #define CELL_ATTRIBUTE_DATA2_TYPE _T("Data2Type")
  75. #define CELL_ATTRIBUTE_DATA3_TYPE _T("Data3Type")
  76. #define CELL_ATTRIBUTE_DATA1 _T("Data1")
  77. #define CELL_ATTRIBUTE_DATA2 _T("Data2")
  78. #define CELL_ATTRIBUTE_DATA3 _T("Data3")
  79. #define CELL_ATTRIBUTE_CALCU_TYPE _T("CalcuType")
  80. #define CELL_ATTRIBUTE_RESULT_TYPE _T("ResultType")
  81. #define CELL_ATTRIBUTE_RESULT_VAR _T("ResultVar")
  82. #define CELL_ATTRIBUTE_AGENT _T("Agent")
  83. #define CELL_ATTRIBUTE_EXTEN _T("Exten")
  84. #define CELL_ATTRIBUTE_AUDIO _T("Audio")
  85. #define CELL_ATTRIBUTE_HANGUP_POS _T("HangupPos")
  86. #define CELL_ATTRIBUTE_TIMEOUT_POS _T("TimeoutPos")
  87. #define CELL_ATTRIBUTE_TRUE_POS _T("TruePos")
  88. #define CELL_ATTRIBUTE_FALSE_POS _T("FalsePos")
  89. #define CELL_ATTRIBUTE_COMPARE_TYPE _T("CompareType")
  90. #define CELL_ATTRIBUTE_VAR_TYPE _T("VarType")
  91. #define CELL_ATTRIBUTE_CONN_STR _T("ConnStr")
  92. #define CELL_ATTRIBUTE_SQL_STR _T("SqlStr")
  93. #define CELL_ATTRIBUTE_SAVE_FLAG _T("IsSaved")
  94. #define CELL_ATTRIBUTE_VAR _T("Var")
  95. #define CELL_ATTRIBUTE_LPOS _T("LPos")
  96. #define CELL_ATTRIBUTE_EPOS _T("EPos")
  97. #define CELL_ATTRIBUTE_GPOS _T("GPos")
  98. #define CELL_ATTRIBUTE_VAR_NAME _T("VarName")
  99. #define CELL_ATTRIBUTE_VAR_VAL _T("VarVal")
  100. #define CELL_ATTRIBUTE_PATH _T("Path")
  101. #define CELL_ATTRIBUTE_FINISH_KEY _T("FinishKey")
  102. #define CELL_ATTRIBUTE_FINISH_POS _T("FinishPos")
  103. #define CELL_ATTRIBUTE_DEFAULT_POS _T("DefaultPos")
  104. #define CELL_ATTRIBUTE_VALUE _T("Value")
  105. #define CELL_ATTRIBUTE_PLAY_TYPE _T("PlayType")
  106. #define CELL_ATTRIBUTE_CONTENT_TYPE _T("ContentType")
  107. #define CELL_ATTRIBUTE_CONTENT _T("Content")
  108. #define CELL_ATTRIBUTE_TTS_NUM_MODE _T("TTSNumMode")
  109. #define CELL_ATTRIBUTE_TTS_SPEED _T("TTSSpeed")
  110. #define CELL_ATTRIBUTE_TTS_VOLUME _T("TTSVolume")
  111. #define CELL_ATTRIBUTE_TTS_ENGINE _T("TTSEngine")
  112. #define CELL_ATTRIBUTE_STOP_WHEN_DTMF _T("StopWhenDtmf")
  113. #define CELL_ATTRIBUTE_MAX_KEY_COUNT _T("MaxKeyCount")
  114. #define CELL_ATTRIBUTE_KEY_PRESS_INTERVAL _T("KeyPressInterval")
  115. #define CELL_ATTRIBUTE_KEY_VAR _T("KeyVar")
  116. #define CELL_ATTRIBUTE_STRATEGY _T("Strategy")
  117. #define CELL_ATTRIBUTE_VIP_LEVEL_TYPE _T("VipLevelType")
  118. #define CELL_ATTRIBUTE_VIP_LEVEL _T("VipLevel")
  119. #define CELL_ATTRIBUTE_GROUP_TYPE _T("GroupType")
  120. #define CELL_ATTRIBUTE_GROUP _T("Group")
  121. #define CELL_ATTRIBUTE_AGENT_VAR _T("AgentVar")
  122. #define CELL_ATTRIBUTE_EXTEN_VAR _T("ExtenVar")
  123. #define CELL_ATTRIBUTE_QUEUE_LEN_VAR _T("QueueLenVar")
  124. #define CELL_ATTRIBUTE_NO_AGENT_POS _T("NoAgentPos")
  125. #define CELL_ATTRIBUTE_NO_FREE_POS _T("NoFreePos")
  126. #define CELL_ATTRIBUTE_OPERATE_TYPE _T("OpType")
  127. #define CELL_ATTRIBUTE_INTERCEPT_INDEX _T("InterceptIdx")
  128. #define CELL_ATTRIBUTE_INTERCEPT_LEN _T("InterceptLen")
  129. #define CELL_ATTRIBUTE_OPERATE_VAR _T("OperateVar")
  130. #define CELL_ATTRIBUTE_RESULT_VAR _T("ResultVar")
  131. #define CELL_ATTRIBUTE_REPLACE_VAR _T("ReplaceVar")
  132. #define CELL_ATTRIBUTE_REP_AS_VAR _T("RepAsVar")
  133. #define CELL_ATTRIBUTE_MATCH_VAR _T("MatchVar")
  134. #define CELL_ATTRIBUTE_APPEND_VAR _T("AppendVar")
  135. #define CELL_ATTRIBUTE_TIMER_INTERVAL _T("TimerInterval")
  136. #define CELL_ATTRIBUTE_BEGIN_TIME _T("BeginTime")
  137. #define CELL_ATTRIBUTE_END_TIME _T("EndTime")
  138. #define CELL_ATTRIBUTE_FLOW_NAME _T("FlowName")
  139. #define CELL_ATTRIBUTE_BEGIN_POS _T("BeginPos")
  140. #define CELL_ATTRIBUTE_OP_TYPE _T("OpType")
  141. #define CELL_ATTRIBUTE_FAR_IP _T("FarIp")
  142. #define CELL_ATTRIBUTE_FAR_PORT _T("FarPort")
  143. #define CELL_ATTRIBUTE_RECV_TIME_OUT _T("RecvTimeOut")
  144. #define CELL_ATTRIBUTE_URL_STR _T("UrlStr")
  145. #define CELL_ATTRIBUTE_HTTP_RESP_VAR _T("RespStr")
  146. #define VAR_REF_START_FLAG _T("%[")
  147. #define VAR_REF_END_FLAG _T("]")
  148. #define FLOW_TYPE_STR_NORMAL _T("normal")
  149. #define FLOW_TYPE_STR_AUTO _T("auto")
  150. #define FLOW_TYPE_STR_SUB _T("sub")
  151. #define CELL_DATA_VAL 1
  152. #define CELL_DATA_VAR 2
  153. #define VAR_TYPE_INT 1
  154. #define VAR_TYPE_FLOAT 2
  155. #define VAR_TYPE_STRING 3
  156. #define CALCU_TYPE_ADD 1
  157. #define CALCU_TYPE_SUB 2
  158. #define CALCU_TYPE_MULT 3
  159. #define CALCU_TYPE_DIV 4
  160. #define DATA_COMPARE_E 1
  161. #define DATA_COMPARE_G 2
  162. #define DATA_COMPARE_GE 3
  163. #define DATA_COMPARE_L 4
  164. #define DATA_COMPARE_LE 5
  165. #define DATA_COMPARE_IN 6
  166. #define PLAY_TYPE_AUDIO_DTMF 1
  167. #define PLAY_TYPE_AUDIO 2
  168. #define PLAY_TYPE_DTMF 3
  169. #define PLAY_CONTENT_NULL 0
  170. #define PLAY_CONTENT_AUDIO 1
  171. #define PLAY_CONTENT_TTS_STR 2
  172. #define PLAY_CONTENT_TTS_FILE 3
  173. #define TTS_RN_AUTO_VALUE 0 /* Auto, read as value if not sure */
  174. #define TTS_RN_VALUE 1 /* Read as value */
  175. #define TTS_RN_DIGIT 2 /* Read as string */
  176. #define TTS_RN_AUTO_DIGIT 3 /* Auto, read as string if not sure */
  177. #define TTS_NUMBER_VALUE_MIN 0
  178. #define TTS_NUMBER_VALUE_MAX 100
  179. #define PLAY_STOP_WHEN_KEY_PRESS_TRUE 1
  180. #define PLAY_STOP_WHEN_KEY_PRESS_FALSE 2
  181. #define STRING_OP_TRIM 1
  182. #define STRING_OP_SUB 2
  183. #define STRING_OP_REPLACE 3
  184. #define STRING_OP_MATCH 4
  185. #define STRING_OP_APPEND 5
  186. #define DATA_BOOL_YES _T("yes")
  187. #define DATA_BOOL_NO _T("no")
  188. #define SOCKET_INPUT_PREFIX _T("Opr")
  189. #define SOCKET_OUTPUT_PREFIX _T("OprAck")
  190. #define SOCKET_INPUT_OP_TYPE _T("OprType")
  191. #define SOCKET_VAR_PREFIX _T("P")
  192. #define FLOW_DOC_PTR MSXML2::IXMLDOMDocumentPtr
  193. #define FLOW_LIST_PTR MSXML2::IXMLDOMNodeListPtr
  194. #define FLOW_ELEMENT_PTR MSXML2::IXMLDOMElementPtr
  195. #define SYSTEM_VAR_CALLID _T("CallID")
  196. #define SYSTEM_VAR_OUTLINEID _T("OutLineID")
  197. #define SYSTEM_VAR_CALLER _T("CallerID")
  198. #define SYSTEM_VAR_CALLEE _T("CalleeID")
  199. #define SYSTEM_VAR_TIME_BEGIN _T("BeginTime")
  200. #define SYSTEM_VAR_TIME_START _T("StartTime")
  201. #define SYSTEM_VAR_TIME_HM _T("HourMinute")
  202. #define SYSTEM_VAR_TIME_WEEK _T("Week")
  203. #define SYSTEM_VAR_HUNT_GROUP _T("CalledHuntGroup")
  204. #define SYSTEM_VAR_PRE_CALL_ID _T("PreCallID")
  205. #define SYSTEM_VAR_PRE_CALL_TYPE _T("PreCallType")
  206. // IVR系统定义消息类型
  207. typedef enum tagIvrMsgType
  208. {
  209. IVR_MSG_FLOW_STATE_UPDAET = 0, // 流程状态更新
  210. IVR_MSG_FLOW_CELL_UPDATE = 1 // 流程节点更新
  211. } IvrMsgType;
  212. typedef CList<CString, CString> DataSet;
  213. typedef CArray<CString, CString> DataArray;
  214. typedef enum tag_FlowType
  215. {
  216. FLOW_NORMAL = 0,
  217. FLOW_AUTO = 1,
  218. FLOW_SUB = 2,
  219. FLOW_UNKNOWN = 3
  220. } FlowType;
  221. typedef enum tagCELL_OP_STATE /* 节点执行状态 */
  222. {
  223. CELL_OP_WAIT_FOR = 0, // 等待Pdu命令返回
  224. CELL_OP_END = -1, // 正常运行结束
  225. CELL_OP_ERROR = -2 , // 运行异常结束
  226. CELL_OP_SEND_ERROR = -3, // IVR发送时失败
  227. } CELL_OP_STATE;
  228. typedef enum tagIVR_FLOW_STATE /* 流程状态 */
  229. {
  230. IVR_FLOW_STATE_FREE =1, // 空闲
  231. IVR_FLOW_STATE_RUN = 2 // 正在运行
  232. } IVR_FLOW_STATE;
  233. typedef struct tagSystemVar /* 系统变量 */
  234. {
  235. char szVarName[VAR_LEN]; //变量名
  236. char szVarValue[BUFF_LEN]; //变量值
  237. } SystemVar;
  238. // IVR流程UI显示信息
  239. typedef struct tagFlow2Show
  240. {
  241. int Id;
  242. IVR_FLOW_STATE State;
  243. CString NodeNote;
  244. } Flow2Show;