CMPP3 消息定义1

(一)            基本数据类型

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发起连接请求,在通过身份验证之后SPISMG之间方可进行数据传输。

1.        SP请求连接到ISMGCMPP_CONNECT)操作

CMPP_CONNECT操作的目的是SPISMG注册作为一个合法SP身份,若注册成功后即建立了应用层的连接,此后SP可以通过此ISMG接收和发送短信。

ISMGCMPP_CONNECT_RESP消息响应SP的请求。

CMPP_CONNECT消息定义(SPàISMG

字段名

字节数

属性

描述

Source_Addr 

6

Octet String

源地址,此处为SP_Id,即SP的企业代码。

AuthenticatorSource

16

Octet String

用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下:

AuthenticatorSource =

MD5Source_Addr+9 字节的0 +shared secret+timestamp

Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。

Version

1

Unsigned Integer

双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit3,低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 =MD5Status+AuthenticatorSource+shared secret),Shared secret 由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。

 认证出错时,此项为空。

Version

1

Unsigned Integer

服务器支持的最高版本号,对于3.0的版本,高4bit3,低4位为0

 

2.        SPISMG请求拆除连接(CMPP_TERMINATE)操作

CMPP_TERMINATE操作的目的是SPISMG基于某些原因决定拆除当前的应用层连接而发起的操作。此操作完成后SPISMG之间的应用层连接被释放,此后SP若再要与ISMG通信时应发起CMPP_CONNECT操作。

ISMGSPCMPP_TERMINATE_RESP消息响应请求。

CMPP_TERMINATE消息定义(SPàISMGISMG à SP

无消息体。

CMPP_TERMINATE_RESP消息定义(SPàISMGISMG à SP

无消息体。

 

3.        SPISMG提交短信(CMPP_SUBMIT)操作

CMPP_SUBMIT操作的目的是SP在与ISMG建立应用层连接后向ISMG提交短信。

ISMGCMPP_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_UserType3时该值有效,当Fee_UserType012时该值无意义。

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

信息格式:

0ASCII串;

3:短信写卡操作;

4:二进制信息;

8UCS2编码;

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:本网关不负责服务此计费号码;

10Src_Id错误;

11Msg_src错误;

12Fee_terminal_Id错误;

13Dest_terminal_Id错误;

……

 

4.        SPISMG查询发送短信状态(CMPP_QUERY)操作

CMPP_QUERY操作的目的是SPISMG查询某时间的业务统计情况,可以按总数或按业务代码查询。ISMGCMPP_QUERY_RESP应答。

 

 

CMPP_QUERY消息的定义(SPàISMG

字段名

字节数

属性

描述

Time

8

Octet String

时间YYYYMMDD(精确至日)

Query_Type

1

Unsigned Integer

查询类别:

0:总数查询;

1:按业务类型查询。

Query_Code

10

Octet String

查询码。

Query_Type0时,此项无效;当Query_Type1时,此项填写业务类型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送达失败数量。

短信网关接口源代码:口标准:客户端通过Tcp连接到服务器(211.162.36.89:8021, IP可能会变动,变动时,以www.pohoo.com网站公布的为准)。连接成功后客户端应首先发送注册串为:Login Name=【注册名】&Pwd=【注册密码】&Type=【注册类型,0:接收和发送;1:接收;2:发送;默认为0】(回车换行) 注:强烈建议使用Type=0的模式。如果所有服务注册成功,服务器返回给客户端字符串:Pass(回车换行)否则将断开连接。指令集: 1:分发中心向服务方发送用户的短信请求,格式如下: 分发中心==>Deliver CommandId=【命令标识,4字节整型,循环使用】 &GateName=【源网关名】 &ItemId=【节目标识】 &UserNumber=【用户号码】 &SpNumber=【服务号码,必须以9160开头】 &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字; 24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】 &Msg:=【短信内容,经加码处理,需解码】 (回车换行) 回应:Received CommandId=【对应于发送时的命令标识】(回车换行) 2:服务方向分发中心提交发送内容,格式如下: 服务方==>Submit (空格) CommandId=【命令标识,4字节整型,循环使用】 &GateName=【目的网关名】,默认由分发中心根据手机号码决定目的网关名】 &ItemId=【节目标识】 &SpNumber=【服务号码,以9160开头】 &UserNumber=【目的用户号码,如果是群发将个号码之间用“,”隔开,注意最多只能有255个群发号码】 &FeeNumber=【计费号码,短信产生的费用由该号码承担,不填时默认向目的用户号码收费】 &FeeType=【计费类型,1:免费,需申请,2:按条计费,3:定制包月计费(同时要求ReportFlag=2)。默认:2】 &ScheduleTime=【定时发送时间,默认立即发送,格式举例:2002年09月10日20:08:00为:020910200800】 &ExpireTime=【短信寿命中止时间,格式举例:021201090508,默认为移动或联通(24小时后)中止时间】 &MtFlag=【*引起MT消息的原因,仅当向联通用户发短信时需要该参数,0-MO点播引起的第一条MT消息1-MO点播引起的非第一条MT消息; 2-非MO点播引起的MT消息3-系统反馈引起的MT消息。默认为0】 &ReportFlag=【状态报告标志,0:不需要 状态报告;1:无论成功与否都返回状态报告;2:该条消息仅携带包月计费信息,不下发给用户; 3:只有最后出错时要返回状态报告,默认:0】 注:在每次包月定制计费时都需发送一条内容为空串,ReportFlag=2,FeeType=3的记录,该短信不会下发给用户,仅用于告知网关向 该用户收取包月费用,在用户没有取消定制的情况下每月必须且只能发送一次。 &MsgCode=【短信编码,0:ASCII串;3:短信写卡操作;4:二进制信息;8:UCS2编码;15:含GB汉字; 24:UCS2编码闪电短信(Msg<=69个汉字),124:GBK编码闪电短信(Msg<=69个汉字)】 &MsgId=【用户自定义消息标识,推荐格式:年月日时分秒+6位自递增码,例如:9月2310:00:03发出的序号为1记录可定义为 923100003000001。自定义格式最大不超过20个字符且不能有需加码解码的特殊字符】 &ExtData:=【短信扩展数据,服务方短信发送的附加信息,在有报告反馈时会连带该扩展数据反馈给服务方,需加码处理,但加码后不能超过 120个字节长度。默认为空串】 &TP_pId=【GSM协议类型。详细解释请参考GSM0 3.40中的9.2.3.9】 &TP_udhi=【GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐】 &Msg:=【短信内容,需加码处理】 (回车换行) 回应:Received CommandId=【对应于发送时的命令标识】(回车换行) 3:分发中心向服务方发送报告,格式如下: 分发中心==>Report CommandId=【命令标识,4字节整型,循环使用】 &GateName=【源网关名】 &MsgId=【服务方在Submit时写在MsgId参数中的值】 &ExtData=【服务方在Submit时写在ExtData参数中的值】 &State=【发送状态,0:向网关提交成功,1:向网关提交失败,2:发送成功,3:等待发送,4:发送失败,5:Submit参数错误】 (回车换行) 回应:Received CommandId=【对应于发送时的命令标识】(回车换行) 4:分发中心为了测试服务方是否连接,会在等待1分钟未收到任何数据发送测试指令,该指令也可由服务方主动发起: 分发中心或服务方==>ActiveTest CommandId=【命令标识,4字节整型,循环使用】(回车换行) 回应:Received CommandId=【对应于发送时的命令标识】(回车换行) 5:无论分发中心还是服务方,只要3分钟之内未收到任何数据要主动断开连接,对于服务方在断开后重新连接。加码解码规则: 加码时将字符串中的所有字符转换成其对应的ASCII值的16进制值,例如:“A”的ASCII码值为65,以16进制值表示为41,故应发送两个字符 “41”以代表字符“A”。对于汉字则以其内码的16进制值来表示,如“测试”应为:B2E2CAD4。参数中只要参数标识与内容之间用 “:=”连接的都需要解码后方可使用,解码时将没两位当成其ASCII值的16进制值将其还原。 注: 1、命令和回应并非一个命令完了后紧接者就回应,服务方可一次发出许多条指令,可能在若干条后才陆续收到回应,根据“Received”的 “CommandId”可知道是对于哪一条发出指令的回应。 2、指令和参数标识不区分大小写,但各参数内容区分大小写。 3、不需要的参数可不参与发送,此时系统认为该参数值为系统默认值。同时所有参数的位置并不固定,请不要按照位置获取特定参数值。 4、信息发送方对于参数如果进行过加码处理的其参数标识和参数之间用“:=”连接,否则用“=”连接。同样对于接收方,只要发现参数标识和 参数之间用“:=”连接,接收方必须对参数内容进行解码方可使用。 5、当注册类型为发送,回应内容也是从该通道反馈,但报告的反馈是从同注册名的接收注册通道反馈的。 6、新网关测试需向鸿讯要求提供测试的注册名和密码。 6: 错误代码: 1100:用户名或密码不正确,登录失败 2、 110:记费号码与注册手机不符。 3111: 实际IP与登录IP不符
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值