📄 setup.h
字号:
#if !defined _SETUP_H_
#define _SETUP_H_
#pragma pack( push, enter_download )
#pragma pack(1)
//提交服务请求和应答的数据通讯协议
struct Header_Comm
{
BYTE byteFlag; //包标记 1:BIN包 2:XML包 3:WML包...
DWORD dwVerify; //校验(保留)
UINT uiLength; //随后的数据长度
};
#define LEN_STRUCT_HEADER_ROUTE_VERSION 4
#define LEN_STRUCT_HEADER_ROUTE_SOURCE 8
#define LEN_STRUCT_HEADER_ROUTE_DESTIONATION 8
#define LEN_STRUCT_HEADER_ROUTE_FUNCNO 4
#define LEN_STRUCT_HEADER_ROUTE_PACKETID 50
#define LEN_STRUCT_HEADER_ROUTE_ERRMSG 20
struct Header_Route
{
BYTE abyteVersion[LEN_STRUCT_HEADER_ROUTE_VERSION]; //版本号
BYTE byteType; //包类型
char aszSource[LEN_STRUCT_HEADER_ROUTE_SOURCE]; //源地址
char aszDestination[LEN_STRUCT_HEADER_ROUTE_DESTIONATION]; //目的地址
char aszFuncNo[4]; //功能号
char aszPacketID[LEN_STRUCT_HEADER_ROUTE_PACKETID]; //包的ID号
char aszErrMsg[LEN_STRUCT_HEADER_ROUTE_ERRMSG]; //错误信息
UINT uiLength; //随后的数据长度
};
/*
struct Header_Route2
{
BYTE abyteVersion[4]; //版本号
BYTE byteType; //包类型(1:请求包,2:应答包,3:控制包)
char aszSource[8]; //源地址
char aszDestination[8]; //目的地址
int iResourceID; //请求的资源ID(在语音/传真请求中可以是通道号)
char aszFuncNo[4]; //功能号
char aszPacketID[50]; //包的ID号
char aszErrMsg[20]; //错误信息
UINT uiLength; //随后的数据长度
};
*/
#define PACKETTYPE_REQUEST 1
#define PACKETTYPE_REPLY 2
#define PACKETTYPE_CONTROL 3
struct Header_Table
{//将DATA看成是一个数据表
UINT uiRow; //数据表的行数
UINT uiCol; //数据表的列数
UINT uiLength; //随后的数据长度
};
struct Header_TableUnit
{
BYTE byteType; //数据类型
UINT uiLength_Name; //变量名长度
UINT uiLength_Data; //数据长度
};
#define DEFAULT_STRING "default string" //用于GetPrivateProfileString()等中的default参数
#define SECTION_INITIALIZE "initialize"
#define SECTION_PREDEFINE "predefine"
#define STOCKINDEX ".\\stockindex.ini"
#define CONFIGFILE ".\\setup.ini"
//在CONFIGFILE中每个部分的名称
#define SECTION_SCRIPT "Script"
#define SECTION_VRD "ServiceProxy"
#define SECTION_TSD "TSD"
#define KEY_MONITOREDCHANNEL "MonitoredChannel"
#define MAX_LEN 10*1024 //解释器和编译器能够一次读入一个节点的最大长度
#define MAX_LEN_2 50*1024 //(用于CALCULATESTATEMENT_STRING能够处理长的字符串)解释器和编译器能够一次读入一个节点的最大长度
#define MAX_LEN_3 50*1024 //(用于AbstractStatementUnit2能够处理长的字符串)解释器和编译器能够一次读入一个节点的最大长度
#define PARAMNAMELEN 20 //参数名的长度
#define LEN_PACKETID LEN_STRUCT_HEADER_ROUTE_PACKETID //TCP上传送的请求/应答包的PACKETID的长度
//各种名称
#define NAME_VSI_INITIALIZED "VSI Initialized"
//在SCRIPT中每个指令部分(SECTION)的项名称
#define KEY_ACTION "action"
#define KEY_INPARAM "inparam"
#define KEY_NEXT "next"
#define KEY_OUTPARAM "outparam"
#define KEY_ONERROR "onerror"
//在SCRIPT中ACTION的值
#define ACTION_WTRING "wtring"
#define ACTION_PLAY1 "play1"
#define ACTION_PLAY2 "play2"
#define ACTION_PLAY3 "play3"
#define ACTION_PLAY4 "play4"
#define ACTION_PLAY5 "play5"
#define ACTION_GETINFO "GetInfo"
#define ACTION_PLAYINFO "PlayInfo"
#define ACTION_GETKEY "getkey"
#define ACTION_LANG "LANG"
#define ACTION_SENDFAX "SendFax"
#define ACTION_SENDFAX2 "SendFax2"
#define ACTION_RCVFAX "RecvFax"
#define ACTION_RECORD "Record"
#define ACTION_ONHOOK "OnHook"
#define ACTION_OFFHOOK "OffHook"
#define ACTION_DIAL "Dial"
#define ACTION_CALLSERVICE "CallService"
#define ACTION_TIF "Tif"
#define ACTION_ASR "ASR"
#define ACTION_WTREQUEST "wtrequest"
#define ACTION_ANSWERREQUEST "answerrequest"
#define ACTION_SLEEP "Sleep"
#define ACTION_JUMP "Jump"
#define ACTION_RETURN "Return"
//----xyw add at 2001/6/16
#define ACTION_SENDFSK "SendFsk"
#define ACTION_RECVFSK "RecvFsk"
//----Xyw add end
//----xyw add at 2001/9/20
#define ACTION_TRANSFER "Transfer"
#define ACTION_CONFERENCE "Conference"
#define ACTION_SETTIMER "SetTimer"
//----Xyw add end
//----lj add at 2003/07/16
#define ACTION_ACCESSDB "Accessdb"
//----lj add end
//ServiceNo值(需要和ANSWER.H中的CMD_XXX对应)
#define SERVICE_WTRING 0
#define SERVICE_PLAY1 1
#define SERVICE_PLAY2 2
#define SERVICE_PLAY3 3
#define SERVICE_GETKEY 4
#define SERVICE_PLAYSIGNAL 5
#define SERVICE_PLAY4 6
#define SERVICE_PLAY5 7
#define SERVICE_PLAYINFO 8
#define SERVICE_GETINFO 9
#define SERVICE_SENDFAX 10
#define SERVICE_SENDFAX2 11
#define SERVICE_RCVFAX 20
#define SERVICE_RECORD 30
#define SERVICE_OFFHOOK 49
#define SERVICE_ONHOOK 50
#define SERVICE_DIAL 51
#define SERVICE_LOG 60
#define SERVICE_LANG 99
//----xyw add at 2001/6/16
#define SERVICE_SENDFSK 81
#define SERVICE_RECVFSK 82
//----Xyw add end
//----xyw add at 2001/9/20
#define SERVICE_TRANSFER 83
#define SERVICE_CONFERENCE 84
#define SERVICE_SETTIMER 85
//----Xyw add end
#define RUNTYPE_CLIENT 1
#define RUNTYPE_SERVER 2
//服务数据包中用到的SERVICETYPE和FUNCNO
#define SERVICETYPE_IVR 1
#define SERVICETYPE_FAX 2
#define SERVICETYPE_ASR_MD 3
#define SERVICETYPE_ASR_EN 4
#define SERVICETYPE_ASR_CT 5
#define SERVICETYPE_TIF 8
#define SERVICETYPE_TSD 9
#define SERVICETYPE_STOCK 11
#define SERVICETYPE_IPMAN 12
#define SERVICETYPE_BANK 13
#define FUNCNO_WTREQUEST 1
//应用服务的服务号
//VSCRIPT语言保留符号
#define RESERVED_SYMBOL "=<>!|()"
//内部变量名
#define RESULTSET_ROWCOUNT "ResultSet_RowCount"
#define RESULTSET_COLCOUNT "ResultSet_ColCount"
#define LASTIID "LastIID"
//数据类型(比如用在判断resultset[i][j]的类型)
#define DATATYPE_INTEGER 1
#define DATATYPE_STRING 2
#define DATATYPE_FLOAT 3
#define DATATYPE_BINARY 4
#define DATATYPE_TABLE 5
#define DATATYPE_UNKNOWN -1
//字符串所代表的数据类型(比如用在getstringtype()中)
//字符串是从脚本中取出来的
#define STRINGTYPE_UNKNOWN -1 //未知类型
#define STRINGTYPE_CONST_INT 1 //整型数字常量
#define STRINGTYPE_VAR_INT 2 //整型数字变量
#define STRINGTYPE_VAR_STRING 3 //字符串型变量
#define STRINGTYPE_CONST_STRING 4 //字符串型常量
#define STRINGTYPE_RESULTSET 5 //结果集类型
#define STRINGTYPE_CONST_FLOAT 6 //浮点型常量
#define STRINGTYPE_VAR_FLOAT 7 //浮点型变量
#define STRINGTYPE_VOICELIST 8 //声音列表VOICELIST
#define STRINGTYPE_FUNC 9 //内部函数名
//请求/应答参数的类型
#define PARAMTYPE_INT 1
#define PARAMTYPE_STRING 2
#define PARAMTYPE_VOICELIST 3
#define PARAMTYPE_FLOAT 4
#define PARAMTYPE_RESULTSET 5
#define PARAMTYPE_BINARY 6
//voicelist中用到,对voicelist的成员(字符串)的读音方法
#define READ_VOICEFILE 0 //字符串代表文件名
#define READ_VALUE 1 //读成数量
#define READ_DIGIT 2 //按位读出
#define READ_TIME 3 //读成时间
#define READ_DATE 4 //读成日期
#define READ_MONEY 1 //读成资金
#define READ_FLOAT 1 //读成浮点数
#define READ_PERCENT 6 //读成百分数
//内部函数名
#define FUNC_MOD "mod"
#define FUNC_LEN "len"
#define FUNC_ISVALIDDATE "IsValidDate"
#define FUNC_ISVALIDTIME "IsValidTime"
#define FUNC_INFODTMF "Info_DTMF"
#define FUNC_INFOHEADER "Info_Header"
#define FUNC_ISVALIDSTOCKID "IsValidStockID"
#define FUNC_GETDATE "GetDate"
#define FUNC_SAVEFILE "SaveFile"
#define FUNC_ABSTRACTDATA "AbstractData"
//ldy add 2000/12/4
#define FUNC_ISVALIDNUMBER "IsValidNumber"
#define FUNC_DIVIDE "Div"
//xyw add 2001/7/14
#define FUNC_GETEXCHANGETYPE "GetExchangeType"
#define FUNC_SUBSTR "SubStr"
//xyw add 2001/9/12
#define FUNC_GETTIME "GetTime"
//xyw add 2001/9/19
#define FUNC_ENCODEDTMF "EncodeDTMF"
#define FUNC_DECODEDTMF "DecodeDTMF"
//xyw add 2002/4/17
#define FUNC_GETANI "GetANI"
#define FUNC_GETDNIS "GetDNIS"
#define FUNC_GETCHN "GetCHN"
//xyw add 2002/6/27
#define FUNC_GETMSG "GetMSG"
#define FUNC_GETMID "GetMID"
//xyw add 2003/1/20
#define FUNC_READINI "ReadINI"
//lj add 2003/09/15
#define FUNC_ISSTOCK "IsStock"
#define FUNC_ISMARKET "IsMarket"
//SERVICEBROKER中的TCP SOCKET类要用到的
#define WM_SOCK_SENDREQUEST WM_USER + 1001
#define WM_SOCK_CLOSED WM_USER + 1002
//vsinterpreter和gdithread(sourcemonitor)通讯要用到的
#define WM_GDI_CREATEMONITOR WM_USER + 10001 //W:(int)通道号 L:(char *)脚本文件
struct VSInstruction
{
char IID[100];
char Last_IID[100];
char *szAction;
char *szInParam;
char *szNext;
char *szOutParam;
char *szOnError;
};
struct GlobalVariable
{
char *szName; //在脚本中的名字
int iType; //数据类型, 1: int; 2: char *
int nSize; //数据长度
void *pVariable; //指向数据的指针
};
struct GlobalVariableList
{
int nCount; //全局变量的个数
struct GlobalVariable *Global; //全局变量的链表
};
/*
struct Param
{
int iSize; //pParam指向的数据大小
int iType; //参数的类型(1:整形,2:字符串,3:浮点, 4:二进制)
void *param; //真正的参数值就放在这里
};
struct ParamList
{
int nCount; //参数表中参数的个数
struct Param *paramlist; //指向参数链表
};
*/
struct VoiceListMember
{
int iType; //这个成员的类型 0:表示声音文件名; 1:表示值; 2:表示DIGIT; 3:表示时间; 4:表示日期; 5:表示资金; 6:表示浮点数;
void *pVoice; //表示语音的字符串,"hello.vox", "123"(一百二十三), "123"(一二三), "021000"(二点十分), "19990102"(一九九九年一月二日), "12.3"(十二点三元)
};
struct VoiceList
{
int nCount; //成员个数
struct VoiceListMember *pmember;
};
struct Field
{
int iSize; //pdata指向数据的大小
int iType; //pdata指向的数据类型(1:整形,2:字符串,3:浮点, 4:二进制)
int iStatus; //表明这个字段是否已被设置,1:yes, 0:no
char aszFieldName[PARAMNAMELEN]; //字段名
void *pdata;
};
struct ResultSet
{
int iRowCount;
int iColCount;
struct Field **ppfield;
};
struct CurrentState
{
/**********************************************************
注意: 在此结构增加或减少时,要考虑对脚本跳转功能的影响
(参见CallJump, CallReturn, SourceMonitor_LoadFile, ProcessSpecialServiceReply等函数)
**********************************************************/
int ISN; //表示当前正在执行的指令序号,从0开始,每执行一条指令,递增1,并且把它作为请求的一部分;服务方应答时把它作为应答的一部分.解释器依靠它来判断服务方的应答是否和请求对应,不一样的话,就说明所问非所答(比如服务方可能回答两次),不予理会
//ISN在DOACTION()中递增
int ISN_Voice; //用于保存上一次Voice请求的ISN
BOOL ISN_Voice_Replied;
int ISN_App; //用于保存上一次App请求的ISN
BOOL ISN_App_Replied;
// BOOL bActionDone; //表示当前指令的ACTION是否已被调用。若是,解释器所要作的事就是保存ACTION的执行结果(由SCRIPT的outparam指定),并调用next中指向的指令的action
int iChannelNo; //表示本数据结构所对应的线路号(由1开始)
int iCheckType; //和INFOTONE间数据传送的校验方法 0:无校验; 1:校验和
int iBoundType; //0:未知 1:INBOUND 2:OUTBOUND
int iCountOfTurnOn; //本通道的接通数
struct VSInstruction vsi;
char aszFirstInstructionIID[100];
//其他数据结构
struct GlobalVariableList m_globalVariableList_Integer; //在当前脚本中有效的全局变量表
struct GlobalVariableList m_globalVariableList_String;
struct GlobalVariableList m_globalVariableList_Float;
struct GlobalVariableList m_universalVariableList_Integer; //在所有脚本中都有效的通用变量表,无论是否JUMP到其他脚本中执行(如果JUMP到的其他脚本中有此变量,则保留原有值)
struct GlobalVariableList m_universalVariableList_String;
struct GlobalVariableList m_universalVariableList_Float;
// struct VoiceList *m_pvoiceList1; //这个成员作为指针,(应用服务创建,放入应答队列,解释器取出它之后)会放到语音服务请求队列中去,语音服务模块使用完会释放
struct ResultSet *presultSet; //由应用服务返回的表格式结果,放在这个指针里
// int iResultSet_RowCount, iResultSet_ColCount; //(对SCRIPT中RecordSet=ReplyParam2)存放表格式结果的行数和列数
struct CurrentState *pPreviousCurrentState;
char aszReturnIID[100];
char aszInstructionFile[100];
char aszPacketID[LEN_STRUCT_HEADER_ROUTE_PACKETID]; //在WTREQUEST时保存应答包(就是传真请求)的ID,在ANSWERREQUEST时再填进去
};
extern int iServiceType_TSD;
extern int iFuncNo_AnswerRequest;
#pragma pack( pop, enter_download )
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -