📄 smgp_message.h
字号:
*/
unsigned char uchMsgfmt;
/**
SP接入点接收到短消息的时间。格式为YYYYMMDDHHMMSS(年年年年月月日日时时分分秒秒)。
*/
char sRecvTime[14+1];
char sSrcterminalid[21+1];
char sDestid[21+1];
unsigned char uchMsglength;
union {
char sMsgcontent[252];
SMGP_STATUS_REPORT csr;
} MO_Msg_Content;
char sReserve[8+1];
/*
主要
可选参数 字段 数据类型 说明
LinkID(2,2,20) TLV 交易标识。SP发送的下行消息(包括点播和定制)必须带有该字段
SubmitMsgType(2,2,1) TLV SP发送的消息类型。(5=包月扣费通知消息; 13=订购(包括点播和定制)关系同步;15=订购关系同步回复。 )
smgp3.0以前的版本不包含可选参数.
*/
SMGP_TLV_LINKID tlvLinkID;
SMGP_TLV_SubmitMsgType tlvSubmitMsgType;
SMGP_TLV_SPDealResult tlvSPDealResult;
} SMGP_DELIVER;
/**
SUBMIT消息包体定义
字段 长度
(字节) 数据类型 说明 参考
必选参数
MsgType 1 Integer 短消息类型 6.4.2.9
NeedReport 1 Integer SP是否要求返回状态报告 6.4.2.10
Priority 1 Integer 短消息发送优先级 6.4.2.11
ServiceID 10 Octet String 业务代码 6.4.2.12
FeeType 2 Octet String 收费类型 6.4.2.13
FeeCode 6 Octet String 资费代码 6.4.2.14
FixedFee 6 Octet String 包月费/封顶费 6.4.2.15
MsgFormat 1 Integer 短消息格式 6.4.2.16
ValidTime 17 Octet String 短消息有效时间 6.4.2.17
AtTime 17 Octet String 短消息定时发送时间 6.4.2.18
SrcTermID 21 Octet String 短信息发送方号码 6.4.2.19
ChargeTermID 21 Octet String 计费用户号码 6.4.2.20
DestTermIDCount 1 Integer 短消息接收号码总数 6.4.2.21
DestTermID 21*DestTermCount Octet String* 短消息接收号码 6.4.2.22
MsgLength 1 Integer 短消息长度 6.4.2.23
MsgContent MsgLength Octet String 短消息内容 6.4.2.24
Reserve 8 Octet String 保留 6.4.2.28
可选参数 字段 数据类型 说明 参考
TP_pid TLV GSM协议类型 6.4.3.2
TP_udhi TLV GSM协议类型 6.4.3.3
LinkID TLV 交易标识 6.4.3.4
MsgSrc TLV 信息内容的来源 6.4.3.16
ChargeUserType TLV 计费用户类型 6.4.3.5
ChargeTermType TLV 计费用户的号码类型 6.4.3.6
ChargeTermPseudo TLV 计费用户的伪码 6.4.3.7
DestTermType TLV 短消息接收方号码的类型 6.4.3.8
DestTermPseudo TLV 短消息接收方的伪码 6.4.3.9
PkTotal TLV 相同MsgID的消息总条数 6.4.3.10
PkNumber TLV 相同MsgID的消息序号 6.4.3.11
SubmitMsgType TLV SP发送的消息类型 6.4.3.12
SPDealResult TLV SP对消息的处理结果 6.4.3.13
MServiceID TLV 业务代码(用于移动网业务) 6.4.3.17
示例包:
DATA_MSG
Head
Len--/longint : 199
Cmd_ID--/Hex4 : 0x00000002
Sequence--/DWORD : 34
SMGP3.0_Submit
MsgType--BYTE : 6
uNeedReport--BYTE : 1
uPriority--BYTE : 1
ServiceID--char : mh
FeeType--char : 01
FeeCode--char : 000090
FixedFee--char : 000090
uMsgFormat--BYTE : 0
ValidTime--char :
AtTime--char :
SrcTermID--char : 1189791
ChargeTermID--char : 02023333333
uDestTermIDCount--BYTE : 1
DestTermID--spchar(21): 02023333333
uMsgLength--BYTE : 18
MsgContent--/code : DG dz 02023333333
Reserve--char :
LinkID
Parameter Tag--/WORD: 0x0003
Length--/WORD:20
Value--char(20):08041018000100012315
Submit_MsgType
Parameter Tag--/WORD: 0x000B
Length--/WORD:1
Value--BYTE: 0x0F
SPDealResult
Parameter Tag--/WORD: 0x000C
Length--/WORD:1
Value--BYTE: 0x00
*/
//##ModelId=46B5D43C028D
typedef struct smgp_submit {
/**
3.0
短消息类型,用来表示短消息的消息流向。
0=MO消息(终端发给SP);
6=MT消息(SP发给终端);
其它保留。
对于SP接入点发送给SP的消息,如果是普通短消息,则MsgType=0,如果是回执,则MsgType无效。对于SP发送给SP接入点的消息,MsgType=6。
2.0
短消息类型
(1=取消订阅,2=订阅请求,3=点播,4=订阅,5=交互式操作,6=查询,其他保留)
(下行消息用“6”表示)
*/
unsigned char uchMsgType;
/**
SP是否要求SP接入点返回状态报告。
0=SP不要求返回状态报告;
1=SP要求返回状态报告;
其它保留。
SP接入点根据NeedReport字段记录SP是否要求状态报告,并在收到状态报告后决定是否转发SP。
*/
unsigned char uchRegisteredDelivery;
/**
短消息发送优先级。
0=低优先级;
1=普通优先级;
2=较高优先级;
3=高优先级;
其他保留。
*/
unsigned char uchMsgLevel;
/**
业务代码,表示该条短消息所属的业务类别,是数字、字母和符号的组合。
对于从WEB上发送的点对点短消息,固定业务代码为 “PC2P”,其它业务代码由SP自定义。
*/
char sServiceId[10+1];
/**
对计费用户采取的收费类型。
00=免费,此时FixedFee和FeeCode无效;
01=按条计信息费,此时FeeCode表示每条费用,FixedFee无效;
02=按包月收取信息费,此时FeeCode无效,FixedFee表示包月费用;
03=按封顶收取信息费,若按条收费的费用总和达到或超过封顶费后,则按照封顶费用收取费用;若按条收费的费用总和没有达到封顶费用,则按照每条费用总和收取费用。FeeCode表示每条费用,FixedFee表示封顶费用。
其它保留。
(0免费,1按条,2包月,3封顶,到了封顶费以后的就不收费了)
*/
char sFeeType[2+1];
/**
每条短消息费率,单位为“分”。
具体使用方法参见6.4.2.13节。
*/
char sFeeCode[6+1];
/**
短消息的包月费/封顶费,单位为“分”。
具体使用方法参见6.4.2.13节。
*/
char sFixedFee[6+1];
/**
表示短消息内容体的编码格式。
0=ASCII编码;
3=短消息写卡操作;
4=二进制短消息;
8=UCS2编码;
15=GB18030编码;
其它保留。
对于SP与SP接入点之间的普通短消息,要求MsgFormat=15。对于SP接入点发送给SP的回执消息,要求MsgFormat=0。
(此处应为15)
*/
unsigned char uchMsgFmt;
/**
短消息有效时间,格式遵循SMPP3.3及以上版本协议。
(此处填为空,因此短信平台不支持有效时间)
*/
char sValidTime[17+1];
/**
短消息定时发送时间,格式遵循SMPP 3.3及以上版本协议。
(此处填为空,因此短信平台不支持定时发送)
*/
char sAtTime[17+1];
/**
短消息发送方号码。
对于SP发起的消息,SrcTermID格式为“118+SP服务代码+其它(可选)”,例如SP服务代码为1234时,SrcTermID可以为1181234或118123456等。
对于终端发起的消息,固定网中SrcTermID格式为“区号+号码(区号前添零)”,例如02087310323,07558780808,移动网中SrcTermID格式为MSISDN号码格式。
(对于MT消息,SrcTermID格式为“118+SP服务代码+其它(可选)”)
*/
char sSrcId[21+1];
/**
计费用户号码。
ChargeTermID为空时,如果是MT消息,则默认为对被叫用户号码计费;如果是MO或点对点消息,则默认为对主叫用户号码计费。
ChargeTermID为非空时,表示对计费用户号码计费。
(定阅信息的用户手机号码)
*/
char sFeeTerminalId[21+1];
/**
短消息接收号码总数(≤100),用于SP实现群发短消息。
(SP发送的Submit消息中,DestTermIDCount必须为“1”,DestTermID只能填写一个用户号码,ChargeTermID必须填写,不得为空。)
*/
unsigned char uchDstUsrTl;
/**
短消息接收号码。
对于接收方为终端的消息,DestTermID连续存储DestTermIDCount个号码,每一个接收方号码为21位,固定网中DestTermID格式为“区号+号码(区号前添零)”,移动网中DestTermID格式为MSISDN号码格式,不足21位时应左对齐,右补0x00。
对于接收方为SP的消息,DestTermID格式为“118+SP服务代码+其它(可选)”。
(只能是1个号码)
*/
char sDstTerminalId[21+1];
/**
短消息长度。指MsgContent域的长度,取值大于或等于0。
对于SP发起的消息,MsgFormat=0时,MsgLength取值应小于或等于160;其它情况下,MsgLength取值应小于或等于140。
(取值应小于或等于140)
*/
unsigned char uchMsgLength;
/**
短消息内容。
当IsReport=1时,MsgContent中内容为状态报告,其格式遵循6.4.2.29节描述。
(对应于用户的订阅/取消订阅请求,SP在此填写“订阅/取消订阅关系同步”)
*/
char sMsgContent[140];
/**
保留
*/
char sReserve[8+1];
/*
主要
可选参数 字段 数据类型 说明
LinkID(2,2,20) TLV 交易标识。SP发送的下行消息(包括点播和定制)必须带有该字段
SubmitMsgType(2,2,1) TLV SP发送的消息类型。0=普通短消息; 5=包月扣费通知消息; 13=订购(包括点播和定制)关系同步;15=订购关系同步回复。 (以终端方式发起的点播,13是发给SP的,SP回复15;如果以WEB方式发起的,13是SP发给,15是回复SP的;
SPDealResult(2,2,1) TLV SP对消息的处理结果(0=成功;1=失败;
其它保留。该字段在SubmitMsgType为0、5、6、7、8、9、10、11、14时无效。 )
注意:smgp3.0以前的版本不包含可选参数.
*/
char tlvLinkID[20+1];
unsigned char tlvSubmitMsgType;
unsigned char tlvSPDealResult;
/**自定义的非标准消息
*/
NonStandardInfo nonStdMessage;
} SMGP_SUBMIT;
//##ModelId=46B5D43C02A0
//typedef struct smgp_submit_v2 {
// /**
// 3.0
// 短消息类型,用来表示短消息的消息流向。
// 0=MO消息(终端发给SP);
// 6=MT消息(SP发给终端);
// 其它保留。
// 对于SP接入点发送给SP的消息,如果是普通短消息,则MsgType=0,如果是回执,则MsgType无效。对于SP发送给SP接入点的消息,MsgType=6。
//
// 2.0
// 短消息类型
// (1=取消订阅,2=订阅请求,3=点播,4=订阅,5=交互式操作,6=查询,其他保留)
// */
// unsigned char uchMsgType;
//
// /**
// SP是否要求SP接入点返回状态报告。
// 0=SP不要求返回状态报告;
// 1=SP要求返回状态报告;
// 其它保留。
// SP接入点根据NeedReport字段记录SP是否要求状态报告,并在收到状态报告后决定是否转发SP。
// */
// unsigned char uchRegisteredDelivery;
//
// /**
// 短消息发送优先级。
// 0=低优先级;
// 1=普通优先级;
// 2=较高优先级;
// 3=高优先级;
// 其他保留。
// */
// unsigned char uchMsgLevel;
//
// /**
// 业务代码,表示该条短消息所属的业务类别,是数字、字母和符号的组合。
// 对于从WEB上发送的点对点短消息,固定业务代码为 “PC2P”,其它业务代码由SP自定义。
// */
// char sServiceId[10];
//
// /**
// 对计费用户采取的收费类型。
// 00=免费,此时FixedFee和FeeCode无效;
// 01=按条计信息费,此时FeeCode表示每条费用,FixedFee无效;
// 02=按包月收取信息费,此时FeeCode无效,FixedFee表示包月费用;
// 03=按封顶收取信息费,若按条收费的费用总和达到或超过封顶费后,则按照封顶费用收取费用;若按条收费的费用总和没有达到封顶费用,则按照每条费用总和收取费用。FeeCode表示每条费用,FixedFee表示封顶费用。
// 其它保留。
// */
// char sFeeType[2];
//
// /**包月费/封顶费(单位为分)
// */
// char sFixedFee[6];
//
// /**资费代码(单位为分)
// */
// char sFeeCode[6];
//
// /**短消息格式(参见6.1节短消息格式代码表)
// */
// unsigned char uchMsgFmt;
//
// /**有效时间
// */
// char sValidTime[17];
//
// /**定时发送时间
// */
// char sAtTime[17];
//
// /**短消息发送用户号码
// (118+cp代码)
// */
// char sSrcId[21];
//
// /**计费用户代码
// */
// char sFeeTerminalId[21];
//
// /**短消息接收号码总数(<=100)
// */
// unsigned char uchDstUsrTl;
//
// /**短消息接收号码
// */
// char sDstTerminalId[21*100];
//
// /**短消息长度
// */
// unsigned char uchMsgLength;
//
// /**短消息内容
// */
// char sMsgContent[252];
//
// /**保留
// */
// char sReserve[8];
//
// /**自定义的非标准消息
// */
// NonStandardInfo nonStdMessage;
//} SMGP_SUBMIT_V2;
/**
SP端收到的消息结构定义
*/
//##ModelId=46B5D43C02AA
typedef struct smgp_smgtosp {
SMGP_HEAD pk_head;
union {
SMGP_CONNECT_RESP pk_connectresp;
SMGP_SUBMIT_RESP pk_submitresp;
SMGP_DELIVER pk_deliver;
} pk_body;
} SMGP_SMGTOSP;
/**
SMG端收到的消息结构定义
*/
//##ModelId=46B5D43C02BE
typedef struct smgp_sptosmg {
SMGP_HEAD pk_head;
union {
SMGP_CONNECT pk_connect;
SMGP_SUBMIT pk_submi;
SMGP_DELIVER_RESP pk_deliverresp;
} pk_body;
} SMGP_SPTOSMG;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -