/************************************************************************* 【文件名】 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_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 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 DataSet; typedef CArray 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;