| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280 |
- /*************************************************************************
- 【文件名】 IvrSysInc.h
- 【功能模块和目的】 IVR系统定义文件
- 【开发者及日期】 郑石诺 2015/01/26
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2015 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- #define MAX_LENGTH_HASH 1999 // 哈希表最大容量
- #define VAR_NAME_LEN 128 // 变量名长度
- #define VAR_LEN 512 // 变量名长度
- #define BUFF_LEN 512*8 // 缓冲区长度
- #define STR_ERR_CORE_INIT_DB _T("{Core}: 连接配置数据库失败")
- #define STR_ERR_CORE_INIT_CFG _T("{Core}: 加载配置信息失败")
- #define STR_ERR_CORE_INIT_NETWORK _T("{Core}: 初始化网络环境失败")
- #define STR_ERR_CORE_INIT_FLOW _T("{Core}: 初始化流程环境时出现异常")
- #define CELL_NAME_START _T("CELL_START") // 流程开始
- #define CELL_NAME_END _T("CELL_END") // 流程结束
- #define CELL_NAME_CALL _T("CELL_CALL") // 外呼
- #define CELL_NAME_TRANSFER_OUT _T("CELL_TRANSFEROUT") // 外线转外线
- #define CELL_NAME_HANGUP _T("CELL_HANGUP") // 挂机
- #define CELL_NAME_QUEUE _T("CELL_QUEUE") // 来电排队
- #define CELL_NAME_CONTINUE_QUEUE _T("CELL_CONTINUEQUEUE") // 继续排队
- #define CELL_NAME_CANCEL_QUEUE _T("CELL_CANCELQUEUE") // 取消排队
- #define CELL_NAME_CALCULATE _T("CELL_CALCULATE") // 算术运算
- #define CELL_NAME_COMPARE _T("CELL_COMPARE") // 数据比较
- #define CELL_NAME_STRING_OP _T("CELL_STRINGOP") // 字符串操作
- #define CELL_NAME_SQL _T("CELL_SQL") // SQL语句执行
- #define CELL_NAME_RECORDSET _T("CELL_RECORDSET") // 记录集操作
- #define CELL_NAME_DEFINE_VAR _T("CELL_DEFINEVAR") // 变量定义
- #define CELL_NAME_LEAVE_WORD _T("CELL_LEAVEWORD") // 留言
- #define CELL_NAME_BRANCH _T("CELL_BRANCH") // 分支
- #define CELL_NAME_AUDIO_AND_DTMF _T("CELL_AUDIODTMF") // 放音收按键
- #define CELL_NAME_TURN_AGENT _T("CELL_TURNAGENT") // 直接跳转坐席
- #define CELL_NAME_RECV_FAX _T("CELL_RECVFAX") // 接收传真
- #define CELL_NAME_SEND_FAX _T("CELL_SENDFAX") // 发送传真
- #define CELL_NAME_TIMER _T("CELL_TIMER") // 定时器
- #define CELL_NAME_SOCKET _T("CELL_SOCKET") // 套接字操作
- #define CELL_NAME_SUB_FLOW _T("CELL_SUBFLOW") // 子流程节点
- #define XPATH_IVR_NODE _T("/ivr/flow") // ivr节点在流程文件中的XPATH
- #define XPATH_CELL _T("cell")
- #define FLOW_ATTRIBUTE_NAME _T("Name")
- #define FLOW_ATTRIBUTE_TYPE _T("Type")
- #define FLOW_ATTRIBUTE_MATCHED_NUM _T("MatchedNum")
- #define FLOW_ATTRIBUTE_ASSO_LINE _T("MatchedLine")
- #define FLOW_ATTRIBUTE_CONCURRENCY _T("Concurrency")
- #define FLOW_SUB_NODE_SQL _T("Sql")
- #define FLOW_SUB_NODE_MAP _T("Map")
- #define FLOW_SUB_NODE_DEF_VAR _T("DefVar")
- #define FLOW_SUB_NODE_RFAX _T("RFax")
- #define FLOW_SUB_NODE_SFAX _T("SFax")
- #define FLOW_SUB_NODE_LEAVE_WORD _T("LeaveWord")
- #define FlOW_SUB_NODE_BRANCH _T("Branch")
- #define FLOW_SUB_NODE_AUDIO _T("Audio")
- #define FLOW_SUB_NODE_AGENT_ID _T("AgentId")
- #define FLOW_SUB_NODE_AGENT_GROUP _T("AgentGroup")
- #define FLOW_SUB_NODE_BAND_DATA _T("BandData")
- #define FLOW_SUB_NODE_SOCK_INPUT _T("InputVar")
- #define FLOW_SUB_NODE_SOCK_OUTPUT _T("OutputVar")
- #define CELL_ATTRIBUTE_NAME _T("Name")
- #define CELL_ATTRIBUTE_POS _T("Pos")
- #define CELL_ATTRIBUTE_NEXT _T("Next")
- #define CELL_ATTRIBUTE_NOTE _T("Note")
- #define CELL_ATTRIBUTE_CALLEE_NUM_TYPE _T("CalleeNumType")
- #define CELL_ATTRIBUTE_CALLEE_NUM _T("CalleeNum")
- #define CELL_ATTRIBUTE_CALLER_NUM_TYPE _T("CallerNumType")
- #define CELL_ATTRIBUTE_CALLER_NUM _T("CallerNum")
- #define CELL_ATTRIBUTE_TIMEOUT _T("Timeout")
- #define CELL_ATTRIBUTE_SUCCESS_POS _T("SuccessPos")
- #define CELL_ATTRIBUTE_FAIL_POS _T("FailPos")
- #define CELL_ATTRIBUTE_REASON _T("Reason")
- #define CELL_ATTRIBUTE_DATA1_TYPE _T("Data1Type")
- #define CELL_ATTRIBUTE_DATA2_TYPE _T("Data2Type")
- #define CELL_ATTRIBUTE_DATA3_TYPE _T("Data3Type")
- #define CELL_ATTRIBUTE_DATA1 _T("Data1")
- #define CELL_ATTRIBUTE_DATA2 _T("Data2")
- #define CELL_ATTRIBUTE_DATA3 _T("Data3")
- #define CELL_ATTRIBUTE_CALCU_TYPE _T("CalcuType")
- #define CELL_ATTRIBUTE_RESULT_TYPE _T("ResultType")
- #define CELL_ATTRIBUTE_RESULT_VAR _T("ResultVar")
- #define CELL_ATTRIBUTE_AGENT _T("Agent")
- #define CELL_ATTRIBUTE_EXTEN _T("Exten")
- #define CELL_ATTRIBUTE_AUDIO _T("Audio")
- #define CELL_ATTRIBUTE_HANGUP_POS _T("HangupPos")
- #define CELL_ATTRIBUTE_TIMEOUT_POS _T("TimeoutPos")
- #define CELL_ATTRIBUTE_TRUE_POS _T("TruePos")
- #define CELL_ATTRIBUTE_FALSE_POS _T("FalsePos")
- #define CELL_ATTRIBUTE_COMPARE_TYPE _T("CompareType")
- #define CELL_ATTRIBUTE_VAR_TYPE _T("VarType")
- #define CELL_ATTRIBUTE_CONN_STR _T("ConnStr")
- #define CELL_ATTRIBUTE_SQL_STR _T("SqlStr")
- #define CELL_ATTRIBUTE_SAVE_FLAG _T("IsSaved")
- #define CELL_ATTRIBUTE_VAR _T("Var")
- #define CELL_ATTRIBUTE_LPOS _T("LPos")
- #define CELL_ATTRIBUTE_EPOS _T("EPos")
- #define CELL_ATTRIBUTE_GPOS _T("GPos")
- #define CELL_ATTRIBUTE_VAR_NAME _T("VarName")
- #define CELL_ATTRIBUTE_VAR_VAL _T("VarVal")
- #define CELL_ATTRIBUTE_PATH _T("Path")
- #define CELL_ATTRIBUTE_FINISH_KEY _T("FinishKey")
- #define CELL_ATTRIBUTE_FINISH_POS _T("FinishPos")
- #define CELL_ATTRIBUTE_DEFAULT_POS _T("DefaultPos")
- #define CELL_ATTRIBUTE_VALUE _T("Value")
- #define CELL_ATTRIBUTE_PLAY_TYPE _T("PlayType")
- #define CELL_ATTRIBUTE_CONTENT_TYPE _T("ContentType")
- #define CELL_ATTRIBUTE_CONTENT _T("Content")
- #define CELL_ATTRIBUTE_TTS_NUM_MODE _T("TTSNumMode")
- #define CELL_ATTRIBUTE_TTS_SPEED _T("TTSSpeed")
- #define CELL_ATTRIBUTE_TTS_VOLUME _T("TTSVolume")
- #define CELL_ATTRIBUTE_TTS_ENGINE _T("TTSEngine")
- #define CELL_ATTRIBUTE_STOP_WHEN_DTMF _T("StopWhenDtmf")
- #define CELL_ATTRIBUTE_MAX_KEY_COUNT _T("MaxKeyCount")
- #define CELL_ATTRIBUTE_KEY_PRESS_INTERVAL _T("KeyPressInterval")
- #define CELL_ATTRIBUTE_KEY_VAR _T("KeyVar")
- #define CELL_ATTRIBUTE_STRATEGY _T("Strategy")
- #define CELL_ATTRIBUTE_VIP_LEVEL_TYPE _T("VipLevelType")
- #define CELL_ATTRIBUTE_VIP_LEVEL _T("VipLevel")
- #define CELL_ATTRIBUTE_GROUP_TYPE _T("GroupType")
- #define CELL_ATTRIBUTE_GROUP _T("Group")
- #define CELL_ATTRIBUTE_AGENT_VAR _T("AgentVar")
- #define CELL_ATTRIBUTE_EXTEN_VAR _T("ExtenVar")
- #define CELL_ATTRIBUTE_QUEUE_LEN_VAR _T("QueueLenVar")
- #define CELL_ATTRIBUTE_NO_AGENT_POS _T("NoAgentPos")
- #define CELL_ATTRIBUTE_NO_FREE_POS _T("NoFreePos")
- #define CELL_ATTRIBUTE_OPERATE_TYPE _T("OpType")
- #define CELL_ATTRIBUTE_INTERCEPT_INDEX _T("InterceptIdx")
- #define CELL_ATTRIBUTE_INTERCEPT_LEN _T("InterceptLen")
- #define CELL_ATTRIBUTE_OPERATE_VAR _T("OperateVar")
- #define CELL_ATTRIBUTE_RESULT_VAR _T("ResultVar")
- #define CELL_ATTRIBUTE_REPLACE_VAR _T("ReplaceVar")
- #define CELL_ATTRIBUTE_REP_AS_VAR _T("RepAsVar")
- #define CELL_ATTRIBUTE_MATCH_VAR _T("MatchVar")
- #define CELL_ATTRIBUTE_APPEND_VAR _T("AppendVar")
- #define CELL_ATTRIBUTE_TIMER_INTERVAL _T("TimerInterval")
- #define CELL_ATTRIBUTE_BEGIN_TIME _T("BeginTime")
- #define CELL_ATTRIBUTE_END_TIME _T("EndTime")
- #define CELL_ATTRIBUTE_FLOW_NAME _T("FlowName")
- #define CELL_ATTRIBUTE_BEGIN_POS _T("BeginPos")
- #define CELL_ATTRIBUTE_OP_TYPE _T("OpType")
- #define CELL_ATTRIBUTE_FAR_IP _T("FarIp")
- #define CELL_ATTRIBUTE_FAR_PORT _T("FarPort")
- #define CELL_ATTRIBUTE_RECV_TIME_OUT _T("RecvTimeOut")
- #define CELL_ATTRIBUTE_URL_STR _T("UrlStr")
- #define CELL_ATTRIBUTE_HTTP_RESP_VAR _T("RespStr")
- #define VAR_REF_START_FLAG _T("%[")
- #define VAR_REF_END_FLAG _T("]")
- #define FLOW_TYPE_STR_NORMAL _T("normal")
- #define FLOW_TYPE_STR_AUTO _T("auto")
- #define FLOW_TYPE_STR_SUB _T("sub")
- #define CELL_DATA_VAL 1
- #define CELL_DATA_VAR 2
- #define VAR_TYPE_INT 1
- #define VAR_TYPE_FLOAT 2
- #define VAR_TYPE_STRING 3
- #define CALCU_TYPE_ADD 1
- #define CALCU_TYPE_SUB 2
- #define CALCU_TYPE_MULT 3
- #define CALCU_TYPE_DIV 4
- #define DATA_COMPARE_E 1
- #define DATA_COMPARE_G 2
- #define DATA_COMPARE_GE 3
- #define DATA_COMPARE_L 4
- #define DATA_COMPARE_LE 5
- #define DATA_COMPARE_IN 6
- #define PLAY_TYPE_AUDIO_DTMF 1
- #define PLAY_TYPE_AUDIO 2
- #define PLAY_TYPE_DTMF 3
- #define PLAY_CONTENT_NULL 0
- #define PLAY_CONTENT_AUDIO 1
- #define PLAY_CONTENT_TTS_STR 2
- #define PLAY_CONTENT_TTS_FILE 3
- #define TTS_RN_AUTO_VALUE 0 /* Auto, read as value if not sure */
- #define TTS_RN_VALUE 1 /* Read as value */
- #define TTS_RN_DIGIT 2 /* Read as string */
- #define TTS_RN_AUTO_DIGIT 3 /* Auto, read as string if not sure */
- #define TTS_NUMBER_VALUE_MIN 0
- #define TTS_NUMBER_VALUE_MAX 100
- #define PLAY_STOP_WHEN_KEY_PRESS_TRUE 1
- #define PLAY_STOP_WHEN_KEY_PRESS_FALSE 2
- #define STRING_OP_TRIM 1
- #define STRING_OP_SUB 2
- #define STRING_OP_REPLACE 3
- #define STRING_OP_MATCH 4
- #define STRING_OP_APPEND 5
- #define DATA_BOOL_YES _T("yes")
- #define DATA_BOOL_NO _T("no")
- #define SOCKET_INPUT_PREFIX _T("Opr")
- #define SOCKET_OUTPUT_PREFIX _T("OprAck")
- #define SOCKET_INPUT_OP_TYPE _T("OprType")
- #define SOCKET_VAR_PREFIX _T("P")
- #define FLOW_DOC_PTR MSXML2::IXMLDOMDocumentPtr
- #define FLOW_LIST_PTR MSXML2::IXMLDOMNodeListPtr
- #define FLOW_ELEMENT_PTR MSXML2::IXMLDOMElementPtr
- #define SYSTEM_VAR_CALLID _T("CallID")
- #define SYSTEM_VAR_OUTLINEID _T("OutLineID")
- #define SYSTEM_VAR_CALLER _T("CallerID")
- #define SYSTEM_VAR_CALLEE _T("CalleeID")
- #define SYSTEM_VAR_TIME_BEGIN _T("BeginTime")
- #define SYSTEM_VAR_TIME_START _T("StartTime")
- #define SYSTEM_VAR_TIME_HM _T("HourMinute")
- #define SYSTEM_VAR_TIME_WEEK _T("Week")
- #define SYSTEM_VAR_HUNT_GROUP _T("CalledHuntGroup")
- #define SYSTEM_VAR_PRE_CALL_ID _T("PreCallID")
- #define SYSTEM_VAR_PRE_CALL_TYPE _T("PreCallType")
- // IVR系统定义消息类型
- typedef enum tagIvrMsgType
- {
- IVR_MSG_FLOW_STATE_UPDAET = 0, // 流程状态更新
- IVR_MSG_FLOW_CELL_UPDATE = 1 // 流程节点更新
- } IvrMsgType;
- typedef CList<CString, CString> DataSet;
- typedef CArray<CString, CString> DataArray;
- typedef enum tag_FlowType
- {
- FLOW_NORMAL = 0,
- FLOW_AUTO = 1,
- FLOW_SUB = 2,
- FLOW_UNKNOWN = 3
- } FlowType;
- typedef enum tagCELL_OP_STATE /* 节点执行状态 */
- {
- CELL_OP_WAIT_FOR = 0, // 等待Pdu命令返回
- CELL_OP_END = -1, // 正常运行结束
- CELL_OP_ERROR = -2 , // 运行异常结束
- CELL_OP_SEND_ERROR = -3, // IVR发送时失败
- } CELL_OP_STATE;
- typedef enum tagIVR_FLOW_STATE /* 流程状态 */
- {
- IVR_FLOW_STATE_FREE =1, // 空闲
- IVR_FLOW_STATE_RUN = 2 // 正在运行
- } IVR_FLOW_STATE;
- typedef struct tagSystemVar /* 系统变量 */
- {
- char szVarName[VAR_LEN]; //变量名
- char szVarValue[BUFF_LEN]; //变量值
- } SystemVar;
- // IVR流程UI显示信息
- typedef struct tagFlow2Show
- {
- int Id;
- IVR_FLOW_STATE State;
- CString NodeNote;
- } Flow2Show;
|