(一) 基本数据类型
|
Unsigned Integer |
无符号整数 |
|
Integer |
整数,可为正整数、负整数或零 |
|
Octet String |
定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符 |
(二) 消息结构
|
项目 |
说明 |
|
Message Header |
消息头(所有消息公共包头) |
|
Message Body |
消息体 |
(三) 消息头格式(Message Header)
|
字段名 |
字节数 |
类型 |
描述 |
|
Total_Length |
4 |
Unsigned Integer |
消息总长度(含消息头及消息体) |
|
Command_Id |
4 |
Unsigned Integer |
命令或响应类型 |
|
Sequence_Id |
4 |
Unsigned Integer |
消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同) |
(四) 业务提供商(SP)与互联网短信网关(ISMG)间的消息定义
SP为客户端,向作为服务器端的ISMG发起连接请求,在通过身份验证之后SP与ISMG之间方可进行数据传输。
1. SP请求连接到ISMG(CMPP_CONNECT)操作
CMPP_CONNECT操作的目的是SP向ISMG注册作为一个合法SP身份,若注册成功后即建立了应用层的连接,此后SP可以通过此ISMG接收和发送短信。
ISMG以CMPP_CONNECT_RESP消息响应SP的请求。
CMPP_CONNECT消息定义(SPàISMG)
|
字段名 |
字节数 |
属性 |
描述 |
|
Source_Addr |
6 |
Octet String |
源地址,此处为SP_Id,即SP的企业代码。 |
|
AuthenticatorSource |
16 |
Octet String |
用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下: AuthenticatorSource = MD5(Source_Addr+9 字节的0 +shared secret+timestamp) Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。 |
|
Version |
1 |
Unsigned Integer |
双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0 |
|
Timestamp |
4 |
Unsigned Integer |
时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。 |
CMPP_CONNECT_RESP消息定义(ISMG à SP)
|
字段名 |
字节数 |
属性 |
描述 |
|
Status |
4 |
Unsigned Integer |
状态 0:正确 1:消息结构错 2:非法源地址 3:认证错 4:版本太高 5~ :其他错误 |
|
AuthenticatorISMG |
16 |
Octet String |
ISMG认证码,用于鉴别ISMG。 其值通过单向MD5 hash计算得出,表示如下: AuthenticatorISMG =MD5(Status+AuthenticatorSource+shared secret),Shared secret 由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。 认证出错时,此项为空。 |
|
Version |
1 |
Unsigned Integer |
服务器支持的最高版本号,对于3.0的版本,高4bit为3,低4位为0 |
2. SP或ISMG请求拆除连接(CMPP_TERMINATE)操作
CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因决定拆除当前的应用层连接而发起的操作。此操作完成后SP与ISMG之间的应用层连接被释放,此后SP若再要与ISMG通信时应发起CMPP_CONNECT操作。
ISMG或SP以CMPP_TERMINATE_RESP消息响应请求。
CMPP_TERMINATE消息定义(SPàISMG或ISMG à SP)
无消息体。
CMPP_TERMINATE_RESP消息定义(SPàISMG或ISMG à SP)
无消息体。
3. SP向ISMG提交短信(CMPP_SUBMIT)操作
CMPP_SUBMIT操作的目的是SP在与ISMG建立应用层连接后向ISMG提交短信。
ISMG以CMPP_SUBMIT_RESP消息响应。
CMPP_SUBMIT消息定义(SPàISMG)
|
字段名 |
字节数 |
属性 |
描述 |
|
Msg_Id |
8 |
Unsigned Integer |
信息标识。 |
|
Pk_total |
1 |
Unsigned Integer |
相同Msg_Id的信息总条数,从1开始。 |
|
Pk_number |
1 |
Unsigned Integer |
相同Msg_Id的信息序号,从1开始。 |
|
Registered_Delivery |
1 |
Unsigned Integer |
是否要求返回状态确认报告: 0:不需要; 1:需要。 |
|
Msg_level |
1 |
Unsigned Integer |
信息级别。 |
|
Service_Id |
10 |
Octet String |
业务标识,是数字、字母和符号的组合。 |
|
Fee_UserType |
1 |
Unsigned Integer |
计费用户类型字段: 0:对目的终端MSISDN计费; 1:对源终端MSISDN计费; 2:对SP计费; 3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。 |
|
Fee_terminal_Id |
32 |
Octet String |
被计费用户的号码,当Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义。 |
|
Fee_terminal_type |
1 |
Unsigned Integer |
被计费用户的号码类型,0:真实号码;1:伪码。 |
|
TP_pId |
1 |
Unsigned Integer |
GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9。 |
|
TP_udhi |
1 |
Unsigned Integer |
GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。 |
|
Msg_Fmt |
1 |
Unsigned Integer |
信息格式: 0:ASCII串; 3:短信写卡操作; 4:二进制信息; 8:UCS2编码; 15:含GB汉字。。。。。。 |
|
Msg_src |
6 |
Octet String |
信息内容来源(SP_Id)。 |
|
FeeType |
2 |
Octet String |
资费类别: 01:对“计费用户号码”免费; 02:对“计费用户号码”按条计信息费; 03:对“计费用户号码”按包月收取信息费。 |
|
FeeCode |
6 |
Octet String |
资费代码(以分为单位)。 |
|
ValId_Time |
17 |
Octet String |
存活有效期,格式遵循SMPP3.3协议。 |
|
At_Time |
17 |
Octet String |
定时发送时间,格式遵循SMPP3.3协议。 |
|
Src_Id |
21 |
Octet String |
源号码。SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码。 |
|
DestUsr_tl |
1 |
Unsigned Integer |
接收信息的用户数量(小于100个用户)。 |
|
Dest_terminal_Id |
32*DestUsr_tl |
Octet String |
接收短信的MSISDN号码。 |
|
Dest_terminal_type |
1 |
Unsigned Integer |
接收短信的用户的号码类型,0:真实号码;1:伪码。 |
|
Msg_Length |
1 |
Unsigned Integer |
信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节),取值大于或等于0。 |
|
Msg_Content |
Msg_length |
Octet String |
信息内容。 |
|
LinkID |
20 |
Octet String |
点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。 |
系统应该支持短信的群发功能,关于短信群发功能的实现请参阅“附录1 短信群发功能的实现”。
CMPP_SUBMIT_RESP消息定义(ISMG à SP)
|
字段名 |
字节数 |
属性 |
描述 |
|
Msg_Id |
8 |
Unsigned Integer |
信息标识,生成算法如下: 采用64位(8字节)的整数: (1)时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中 bit64~bit61:月份的二进制表示; bit60~bit56:日的二进制表示; bit55~bit51:小时的二进制表示; bit50~bit45:分的二进制表示; bit44~bit39:秒的二进制表示; (2)短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中; (3)序列号:bit16~bit1,顺序增加,步长为1,循环使用。 各部分如不能填满,左补零,右对齐。 (SP根据请求和应答消息的Sequence_Id一致性就可得到CMPP_Submit消息的Msg_Id) |
|
Result |
4 |
Unsigned Integer |
结果: 0:正确; 1:消息结构错; 2:命令字错; 3:消息序号重复; 4:消息长度错; 5:资费代码错; 6:超过最大信息长; 7:业务代码错; 8:流量控制错; 9:本网关不负责服务此计费号码; 10:Src_Id错误; 11:Msg_src错误; 12:Fee_terminal_Id错误; 13:Dest_terminal_Id错误; …… |
4. SP向ISMG查询发送短信状态(CMPP_QUERY)操作
CMPP_QUERY操作的目的是SP向ISMG查询某时间的业务统计情况,可以按总数或按业务代码查询。ISMG以CMPP_QUERY_RESP应答。
CMPP_QUERY消息的定义(SPàISMG)
|
字段名 |
字节数 |
属性 |
描述 |
|
Time |
8 |
Octet String |
时间YYYYMMDD(精确至日)。 |
|
Query_Type |
1 |
Unsigned Integer |
查询类别: 0:总数查询; 1:按业务类型查询。 |
|
Query_Code |
10 |
Octet String |
查询码。 当Query_Type为0时,此项无效;当Query_Type为1时,此项填写业务类型Service_Id.。 |
|
Reserve |
8 |
Octet String |
保留。 |
CMPP_QUERY_RESP消息的定义(ISMG àSP)
|
字段名 |
字节数 |
属性 |
描述 |
|
Time |
8 |
Octet String |
时间(精确至日)。 |
|
Query_Type |
1 |
Unsigned Integer |
查询类别: 0:总数查询; 1:按业务类型查询。 |
|
Query_Code |
10 |
Octet String |
查询码。 |
|
MT_TLMsg |
4 |
Unsigned Integer |
从SP接收信息总数。 |
|
MT_Tlusr |
4 |
Unsigned Integer |
从SP接收用户总数。 |
|
MT_Scs |
4 |
Unsigned Integer |
成功转发数量。 |
|
MT_WT |
4 |
Unsigned Integer |
待转发数量。 |
|
MT_FL |
4 |
Unsigned Integer |
转发失败数量。 |
|
MO_Scs |
4 |
Unsigned Integer |
向SP成功送达数量。 |
|
MO_WT |
4 |
Unsigned Integer |
向SP待送达数量。 |
|
MO_FL |
4 |
Unsigned Integer |
向SP送达失败数量。 |
1124

被折叠的 条评论
为什么被折叠?



