欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Message difinenation 中国移动应用服务器企业应用互联网数据结构 

程序员文章站 2022-07-15 13:01:21
...
基本数据类型
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之间方可进行数据传输。

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

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)
无消息体。

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字节)的整数:

时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
bit64~bit61:月份的二进制表示;

bit60~bit56:日的二进制表示;

bit55~bit51:小时的二进制表示;

bit50~bit45:分的二进制表示;

bit44~bit39:秒的二进制表示;

短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
序列号: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错误;

……