(通信企业管理)中国移
动通信互联网短信网关接
口协议版(CMPP)
QB-╳╳-╳╳╳-╳╳╳╳
中国移动通信集团公司 发布
目录
1范围 1
2引用标准 1
3术语和定义 1
4网络结构 3
5CMPP功能概述 3
6协议栈 4
7通信方式 4
长连接 4
短连接 6
本协议涉及的端口号 6
交互过程中的应答方式 7
8消息定义 7
基本数据类型 7
消息结构 7
消息头格式(Message Header)8
业务提供商(SP)与互联网短信网关(ISMG)间的消息定义 8
请求连接到 ISMG(CMPP_CONNECT)操作 8
_CONNECT消息定义(SPISMG)8
_CONNECT_RESP消息定义(ISMG SP)9
或 ISMG请求拆除连接(CMPP_TERMINATE)操作 9
_TERMINATE消息定义(SPISMG或 ISMG SP)9
_TERMINATE_RESP消息定义(SPISMG或 ISMG SP)10
向 ISMG提交短信(CMPP_SUBMIT)操作 10
_SUBMIT消息定义(SPISMG)10
_SUBMIT_RESP消息定义(ISMG SP)11
向 ISMG查询发送短信状态(CMPP_QUERY)操作 12
_QUERY消息的定义(SPISMG)12
_QUERY_RESP消息的定义(ISMG SP)13
向 SP送交短信(CMPP_DELIVER)操作 13
_DELIVER消息定义(ISMGSP)13
_DELIVER_RESP消息定义(SP ISMG)16
向 ISMG发起删除短信(CMPP_CANCEL)操作 16
_CANCEL消息定义(SP ISMG)16
_CANCEL_RESP消息定义(ISMG SP)17
链路检测(CMPP_ACTIVE_TEST)操作 17
_ACTIVE_TEST定义(SP ISMG或 ISMGSP)17
_ACTIVE_TEST_RESP定义(SP ISMG或 ISMGSP)17
互联网短信网关(ISMG)之间的消息定义 17
源 ISMG请求连接到目的 ISMG(CMPP_CONNECT)操作 17
源 ISMG请求拆除到目的 ISMG的连接(CMPP_TERMINATE)操作 17
链路检测(CMPP_ACTIVE_TEST)操作 17
源 ISMG向目的 ISMG转发短信(CMPP_FWD)操作 17
_FWD定义(ISMG ISMG)18
_FWD_RESP定义(ISMG ISMG)21
互联网短信网关(ISMG)与汇接网关(GNS)之间的消息定义 21
请求连接到 GNS或 GNS请求连接到 ISMG(CMPP_CONNECT)操作 21
请求拆除到 GNS的连接或 GNS请求拆除到 ISMG的连接
(CMPP_TERMINATE)操作 21
向汇接网关查询 MT路由(CMPP_MT_ROUTE)操作 21
_MT_ROUTE消息定义(ISMGGNS)22
_MT_ROUTE_RESP消息定义(GNS ISMG)22
向汇接网关查询 MO路由(CMPP_MO_ROUTE)操作 22
_MO_ROUTE消息定义(ISMGGNS)22
_MO_ROUTE_RESP消息定义(GNS ISMG)23
向汇接网关获取 MT路由(CMPP_GET_MT_ROUTE)操作 23
_GET_MT_ROUTE消息定义(ISMGGNS)24
_GET_ ROUTE_RESP消息定义(GNS ISMG)24
向汇接网关获取 MO路由(CMPP_GET_MO_ROUTE)操作 25
_GET_MO_ROUTE消息定义(ISMGGNS)25
_GET_MO_ROUTE_RESP消息定义(GNS ISMG)25
向汇接网关更新 MT路由(CMPP_MT_ROUTE_UPDATE)操作 26
_MT_ROUTE_UPDATE消息定义(ISMGGNS)26
_MT_ROUTE_UPDATE_RESP消息定义(GNS ISMG)27
向汇接网关更新 MO路由(CMPP_MO_ROUTE_UPDATE)操作 27
_MO_ROUTE_UPDATE消息定义(ISMGGNS)27
_MO_ROUTE_UPDATE_RESP消息定义(GNS ISMG)28
汇接网关向 ISMG更新 MT路由(CMPP_PUSH_MT_ROUTE_UPDATE)操作 29
_PUSH_MT_ROUTE_UPDATE消息定义(GNSISMG)29
_PUSH_MT_ROUTE_UPDATE_RESP消息定义(ISMG GNS)29
汇接网关向 ISMG更新 MO路由(CMPP_PUSH_MO_ROUTE_UPDATE)操作 29
_PUSH_MO_ROUTE_UPDATE消息定义(GNSISMG)30
_PUSH_MO_ROUTE_UPDATE_RESP消息定义(ISMG GNS)30
系统定义 31
_Id定义 31
错误码使用说明 31
与 GNS之间消息使用的错误码定义 32
上路由信息的 Route_Id的编号规则 33
9附录 1 短信群发功能的实现 34
10附录 2 GNS协议目前实现说明 34
11修订历史 36
前言
本规范规定了移动梦网短信业务开展过程中各网元(包括 ISMG、GNS和 SP)之间的消息类
型和定义,目前为 版本,是在原来 版本的基础上进行修订而成。根据业务的
发展,规范中的信令操作和参数将会做进一步的调整和增加。
本标准由中国移动通信集团公司技术部提出并归口。
本标准起草单位:中国移动通信集团公司研发中心。
本标准主要起草人:党京、孙若雯、于蓉蓉、袁向阳。
本标准解释单位:同提出单位。
1 范围
本规范规定了以下三方面的内容:
1)业务提供商与互联网短信网关之间的接口协议;
2)互联网短信网关之间的接口协议;
3)互联网短信网关与汇接网关之间的接口协议。
本规范适用于各 SP和 ISMG、GNS的开发厂商。
2 引用标准
下列标准所包含的条文,通过在本标准中引用而成为本标准的条文。本标准出版时,
所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版
本的可能性。
《SMPP》
《移动梦网短信业务技术方案》
3 术语和定义
英文缩写,英文全称,说明
ISMG,IntenetShortMessageGateway,互联网短信网关
DSMP,DataServiceManagePlatform,数据业务管理平台
SMPP,ShortMessagePeertoPeer,短消息点对点协议
CMPP,ChinaMobilePeertoPeer,中国移动点对点协议
SMSC,ShortMessageServiceCenter,短消息中心
GNS,GatewayNameServer,网关名称服务器(汇接网关)
SP,ServiceProvider,业务提供者
ISMG_Id,,网关代码:0XYZ01~0XYZ99,其中 XYZ为省会区号,位数不足时左补零,如北京
编号为 1的网关代码为 001001,江西编号为 1的网关代码为 079101,依此类推
SP_Id,,SP的企业代码:网络中 SP地址和身份的标识、地址翻译、计费、结算等均以企业
代码为依据。企业代码以数字表示,共 6位,从“9XY000”至“9XY999”,其中“XY”为各
移动公司代码
SP_Code,,SP的服务代码:服务代码是在使用短信方式的上行类业务中,提供给用户使用的
服务提供商代码。服务代码以数字表示,全国业务服务代码长度为 4位,即“1000”-
“9999”;本地业务服务代码长度统一为 5位,即“01000”-“09999”;信产部对新的 SP
的服务代码分配提出了新的要求,要求以“1061”-“1069”作为前缀,目前中国移动进
行了如下分配:
1062:用于省内 SP服务代码
1066:用于全国 SP服务代码
其它号段保留。
Service_Id,,SP的业务类型,数字、字母和符号的组合,由 SP自定,如图片传情可定为
TPCQ,股票查询可定义为 11
4 网络结构
图 1 互联网短信网关组网结构
如图 1所示,互联网短信网关(ISMG)是业务提供商(SP)与移动网内短信中心之间
的中介实体,互联网短信网关一方面负责接收 SP发送给移动用户的信息和提交给短信中
心。另一方面,移动用户点播 SP业务的信息将由短信中心通过互联网短信网关发给 SP。另
外,为了减轻短信中心的信令负荷,互联网短信网关还应根据路由原则将 SP提交的信息转
发到相应的互联网短信网关。互联网短信网关通过向汇接网关(GNS)查询的方式获得网关
间的转发路由信息。
另外,ISMG还必须与数据业务管理平台 DSMP进行连接,在业务流程中对用户、业务以
及定购关系等进行鉴权并对业务进行批价。
5 CMPP功能概述
CMPP协议主要提供以下两类业务操作:
(1)短信发送(ShortMessageMobileOriginate,SMMO)
详细的流程请参考《移动梦网短信业务信令流程规范 》;
(2)短信接收(ShortMessageMobileTerminated,SMMT)
详细的流程请参考《移动梦网短信业务信令流程规范 》;
6 协议栈
CMPP协议以 TCP/IP作为底层通信承载,具体结构由图 4所示:
图 2 CMPP协议栈
7 通信方式
各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个 TCP连接上
可以连续发送多个数据包,在 TCP连接保持期间,如果没有数据包发送,需要双方发链路
检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个 TCP连接,数据发
送完成后,则断开此 TCP连接,即每次 TCP连接只完成一对 CMPP消息的发送。
现阶段,要求 ISMG之间必须采用长连接的通信方式,建议 SP与 ISMG之间采用长连接
的通信方式。
长连接
通信双方以客户-服务器方式建立 TCP连接,用于双方信息的相互提交。当信道上没有
数据传输时,通信双方应每隔时间 C发送链路检测包以维持此连接,当链路检测包发出超
过时间 T后未收到响应,应立即再发送链路检测包,再连续发送 N-1次后仍未得到响应则
断开此连接。
参数 C、T、N原则上应可配置,现阶段建议取值为:C=3分钟,T=60秒,N=3。
网关与 SP之间、网关之间的消息发送后等待 T秒后未收到响应,应立即重发,再连续
发送 N-1次后仍未得到响应则停发。现阶段建议取值为:T=60秒,N=3。
消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数 W可配置,现阶段建
议为 16,即接收方在应答前一次收到的消息最多不超过 16条。
长连接的操作流程举例如图 5所示:
. . . . . .
建立 TC P 连接
滑动窗口不大于 W
W
CMPP消息 1
客户端 服务器端
CMPP消息 2
对 CMPP消息 1的响应
对 CMPP消息 2的响应
链路检测包
链路检测包响应
建立 TCP连接
链路检测包
链路检测包响应
拆除 TCP连接
. . . . . .
建立 TC P 连接
图 3 长连接操作流程
短连接
通信双方以客户-服务器方式建立 TCP连接,应答与请求在同一个连接中完成。系统采
用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。
网关与 SP之间、网关之间的消息发送后等待 T秒后未收到响应,应立即重发,再连续
发送 N-1次后仍未得到响应则停发。现阶段建议取值为:T=60秒,N=3。
短连接的操作流程举例如图 6所示:
图 4 短连接操作流程
本协议涉及的端口号
端口号,应用
7890,长连接(SP与网关间)
7900,短连接(SP与网关间)
7930,长连接(网关之间)
9168,短连接(短信网关与汇接网关之间)
交互过程中的应答方式
在 SP与 ISMG之间、SMSC与 ISMG之间及 ISMG之间的交互过程中均采用异步方式,即
任一个网元在收到请求消息后应立即回送响应消息。举例如图 7所示:
SMSC ISMG1 ISMG2 SP
SMPP请求消息
SMPP响应消息
CMPP请求消息
CMPP响应消息
CMPP请求消息
CMPP响应消息
图 5 异步交互方式示意图
8 消息定义
基本数据类型
UnsignedInteger,无符号整数
Integer,整数,可为正整数、负整数或零
OctetString,定长字符串,位数不足时,如果左补 0则补 ASCII表示的零以填充,如果右
补 0则补二进制的零以表示字符串的结束符
消息结构
项目,说明
MessageHeader,消息头(所有消息公共包头)
MessageBody,消息体
消息头格式(MessageHeader)
字段名,字节数,类型,描述
Total_Length,4,UnsignedInteger,消息总长度(含消息头及消息体)
Command_Id,4,UnsignedInteger,命令或响应类型
Sequence_Id,4,UnsignedInteger,消息流水号,顺序累加,步长为 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消息定义(SPISMG)
字段名,字节数,属性,描述
Source_Addr,6,OctetString,源地址,此处为 SP_Id,即 SP的企业代码。
AuthenticatorSource,16,OctetString,用于鉴别源地址。其值通过单向 MD5hash计
算得出,表示如下:
AuthenticatorSource=
MD5(Source_Addr+9字节的 0+sharedsecret+timestamp)
Sharedsecret由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月
日时分秒,10位。
Version,1,UnsignedInteger,双方协商的版本号(高位 4bit表示主版本号,低位 4bit表
示次版本号),对于 的版本,高 4bit为 3,低 4位为 0
Timestamp,4,UnsignedInteger,时间戳的明文,由客户端产生,格式为 MMDDHHMMSS,即月
日时分秒,10位数字的整型,右对齐。
CMPP_CONNECT_RESP消息定义(ISMGSP)
字段名,字节数,属性,描述
Status,4,UnsignedInteger,状态
0:正确
1:消息结构错
2:非法源地址
3:认证错
4:版本太高
5~:其他错误
AuthenticatorISMG,16,OctetString,ISMG认证码,用于鉴别 ISMG。
其值通过单向 MD5hash计算得出,表示如下:
AuthenticatorISMG=MD5(Status+AuthenticatorSource+sharedsecret),Sharedsecret
由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给 ISMG的
对应消息 CMPP_Connect中的值。
认证出错时,此项为空。
Version,1,UnsignedInteger,服务器支持的最高版本号,对于 的版本,高 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消息定义(SPISMG或 ISMGSP)
无消息体。
CMPP_TERMINATE_RESP消息定义(SPISMG或 ISMGSP)
无消息体。
SP向 ISMG提交短信(CMPP_SUBMIT)操作
CMPP_SUBMIT操作的目的是 SP在与 ISMG建立应用层连接后向 ISMG提交短信。
ISMG以 CMPP_SUBMIT_RESP消息响应。
CMPP_SUBMIT消息定义(SPISMG)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识。
Pk_total,1,UnsignedInteger,相同 Msg_Id的信息总条数,从 1开始。
Pk_number,1,UnsignedInteger,相同 Msg_Id的信息序号,从 1开始。
Registered_Delivery,1
report_flag,UnsignedInteger,是否要求返回状态确认报告:
0:不需要;
1:需要。
Msg_level,1,UnsignedInteger,信息级别。
Service_Id,10
serv_code,OctetString,业务标识,是数字、字母和符号的组合。
Fee_UserType,1
fee_type,UnsignedInteger,计费用户类型字段:
0:对目的终端 MSISDN计费;
1:对源终端 MSISDN计费;
2:对 SP计费;
3:表示本字段无效,对谁计费参见 Fee_terminal_Id 字段。
Fee_terminal_Id,32
fee_num,OctetString,被计费用户的号码,当 Fee_UserType为 3时该值有效,当
Fee_UserType为 0、1、2时该值无意义。
Fee_terminal_type,1,UnsignedInteger,被计费用户的号码类型,0:真实号码;1:
伪码。
TP_pId,1,UnsignedInteger,GSM协议类型。详细是解释请参考 中的 。
TP_udhi,1,UnsignedInteger,GSM协议类型。详细是解释请参考 中的 ,
仅使用 1位,右对齐。
Msg_Fmt,1
msg_coding,UnsignedInteger,信息格式:
0:ASCII串;
3:短信写卡操作;
4:二进制信息;
8:UCS2编码;
15:含 GB汉字。。。。。。
Msg_src,6,OctetString,信息内容来源(SP_Id)。
FeeType,2
,OctetString,资费类别:
01:对“计费用户号码”免费;
02:对“计费用户号码”按条计信息费;
03:对“计费用户号码”按包月收取信息费。
FeeCode,6
fee_value,OctetString,资费代码(以分为单位)。
ValId_Time,17,OctetString,存活有效期,格式遵循 协议。
At_Time,17,OctetString,定时发送时间,格式遵循 协议。
Src_Id,21
sp_num,OctetString,源号码。SP的服务代码或前缀为服务代码的长号码,网关将该号码完
整的填到 SMPP协议 Submit_SM消息相应的 source_addr字段,该号码最终在用户手机上显
示为短消息的主叫号码。
DestUsr_tl,1,UnsignedInteger,接收信息的用户数量(小于 100个用户)。
Dest_terminal_Id,32*DestUsr_tl
rcv_num,OctetString,接收短信的 MSISDN号码。
Dest_terminal_type,1,UnsignedInteger,接收短信的用户的号码类型,0:真实号码;1:
伪码。
Msg_Length,1
msg_len
(长度不同),UnsignedInteger,信息长度(Msg_Fmt值为 0时:<160个字节;其它<=140个字
节),取值大于或等于 0。
Msg_Content,Msg_length
msg,OctetString,信息内容。
LinkID,20
reserve
(长度不同),OctetString,点播业务使用的 LinkID,非点播类业务的 MT流程不使用该字
段。
系统应该支持短信的群发功能,关于短信群发功能的实现请参阅“附录 1短信群发功能的
实现”。
CMPP_SUBMIT_RESP消息定义(ISMGSP)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识,生成算法如下:
采用 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,UnsignedInteger,结果:
0:正确;
1:消息结构错;
2:命令字错;
3:消息序号重复;
4:消息长度错;
5:资费代码错;
6:超过最大信息长;
7:业务代码错;
8:流量控制错;
9:本网关不负责服务此计费号码;
10:Src_Id错误;
11:Msg_src错误;
12:Fee_terminal_Id错误;
13:Dest_terminal_Id错误;
……
SP向 ISMG查询发送短信状态(CMPP_QUERY)操作
CMPP_QUERY操作的目的是 SP向 ISMG查询某时间的业务统计情况,可以按总数或按业务代
码查询。ISMG以 CMPP_QUERY_RESP应答。
CMPP_QUERY消息的定义(SPISMG)
字段名,字节数,属性,描述
Time,8,OctetString,时间 YYYYMMDD(精确至日)。
Query_Type,1,UnsignedInteger,查询类别:
0:总数查询;
1:按业务类型查询。
Query_Code,10,OctetString,查询码。
当 Query_Type为 0时,此项无效;当 Query_Type为 1时,此项填写业务类型
Service_Id.。
Reserve,8,OctetString,保留。
CMPP_QUERY_RESP消息的定义(ISMGSP)
字段名,字节数,属性,描述
Time,8,OctetString,时间(精确至日)。
Query_Type,1,UnsignedInteger,查询类别:
0:总数查询;
1:按业务类型查询。
Query_Code,10,OctetString,查询码。
MT_TLMsg,4,UnsignedInteger,从 SP接收信息总数。
MT_Tlusr,4,UnsignedInteger,从 SP接收用户总数。
MT_Scs,4,UnsignedInteger,成功转发数量。
MT_WT,4,UnsignedInteger,待转发数量。
MT_FL,4,UnsignedInteger,转发失败数量。
MO_Scs,4,UnsignedInteger,向 SP成功送达数量。
MO_WT,4,UnsignedInteger,向 SP待送达数量。
MO_FL,4,UnsignedInteger,向 SP送达失败数量。
ISMG向 SP送交短信(CMPP_DELIVER)操作
CMPP_DELIVER操作的目的是 ISMG把从短信中心或其它 ISMG转发来的短信送交 SP,SP以
CMPP_DELIVER_RESP消息回应。
消息定义(ISMGSP)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识。
生成算法如下:
采用 64位(8字节)的整数:
(1)时间(格式为 MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
bit64~bit61:月份的二进制表示;
bit60~bit56:日的二进制表示;
bit55~bit51:小时的二进制表示;
bit50~bit45:分的二进制表示;
bit44~bit39:秒的二进制表示;
(2)短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
(3)序列号:bit16~bit1,顺序增加,步长为 1,循环使用。
各部分如不能填满,左补零,右对齐。
Dest_Id,21
sp_num,OctetString,目的号码。
SP的服务代码,一般 4--6位,或者是前缀为服务代码的长号码;该号码是手机用户短消息
的被叫号码。
Service_Id,10
serv_code,OctetString,业务标识,是数字、字母和符号的组合。
TP_pid,1,UnsignedInteger,GSM协议类型。详细解释请参考 中的 。
TP_udhi,1,UnsignedInteger,GSM协议类型。详细解释请参考 中的 ,仅
使用 1位,右对齐。
Msg_Fmt,1,UnsignedInteger,信息格式:
0:ASCII串;
3:短信写卡操作;
4:二进制信息;
8:UCS2编码;
15:含 GB汉字。
Src_terminal_Id
,32
rcv_num,OctetString,源终端 MSISDN号码(状态报告时填为 CMPP_SUBMIT消息的目的终端
号码)。
Src_terminal_type,1,UnsignedInteger,源终端号码类型,0:真实号码;1:伪码。
Registered_Delivery,1,UnsignedInteger,是否为状态报告:
0:非状态报告;
1:状态报告。
Msg_Length,1,UnsignedInteger,消息长度,取值大于或等于 0。
Msg_Content,Msg_length,OctetString,消息内容。
LinkID,20,OctetString,点播业务使用的 LinkID,非点播类业务的 MT流程不使用该字段。
当 ISMG向 SP送交状态报告时,信息内容字段(Msg_Content)格式定义如下:
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识。
SP提交短信(CMPP_SUBMIT)操作时,与 SP相连的 ISMG产生的 Msg_Id。
Stat,7,OctetString,发送短信的应答结果,含义详见表一。SP根据该字段确定
CMPP_SUBMIT消息的处理状态。
Submit_time,10,OctetString,YYMMDDHHMM(YY为年的后两位 00-99,MM:01-12,DD:01-
31,HH:00-23,MM:00-59)。
Done_time,10,OctetString,YYMMDDHHMM。
Dest_terminal_Id,32,OctetString,目的终端 MSISDN号码(SP发送 CMPP_SUBMIT消息的目
标终端)。
SMSC_sequence,4,UnsignedInteger,取自 SMSC发送状态报告的消息体中的消息标识。
表一 Stat字段定义
MessageState,FinalMessageStates,Description
DELIVERED,DELIVRD,Messageisdeliveredtodestination
EXPIRED,EXPIRED,Messagevalidityperiodhas
expired
DELETED,DELETED,Messagehasbeendeleted.
UNDELIVERABLE,UNDELIV,Messageisundeliverable
ACCEPTED,ACCEPTD,Messageisinacceptedstate(
ubscriberbycustomerservice)
UNKNOWN,UNKNOWN,Messageisininvalidstate
REJECTED,REJECTD,Messageisinarejectedstate
MA:xxxx,MA:xxxx,SMSC不返回响应消息时的状态报告
MB:xxxx,MB:xxxx,SMSC返回错误响应消息时的状态报告
MC:xxxx,MC:xxxx,没有从 SMSC处接收到状态报告时的状态报告
CA:xxxx,CA:xxxx,SCP不返回响应消息时的状态报告
CB:xxxx,CB:xxxx,SCP返回错误响应消息时的状态报告
DA:xxxx,DA:xxxx,DSMP不返回响应消息时的状态报告
DB:xxxx,DB:xxxx,DSMP返回错误响应消息时的状态报告
SA:xxxx,SA:xxxx,SP不返回响应消息时的状态报告
SB:xxxx,SB:xxxx,SP返回错误响应消息时的状态报告
IA:xxxx,IA:xxxx,下一级 ISMG不返回响应消息时的状态报告
IB:xxxx,IB:xxxx,下一级 ISMG返回错误响应消息时的状态报告
IC:xxxx,IC:xxxx,没有从下一级 ISMG处接收到状态报告时的状态报告
注意:
1.其中 ACCEPTED为中间状态,网关若从短信中心收到后应丢弃,不做任何操作;
2. Stat字段长度为 7个字节,填写时应填表一中 FinalMessageStates中的缩写形
式,如状态为 DELIVERED时填写 DELIVRD,依此类推;
3. SP等待状态报告缺省时间为 48小时。
CMPP_DELIVER_RESP消息定义(SPISMG)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识(CMPP_DELIVER中的 Msg_Id字段)。
Result,4,UnsignedInteger,结果:
0:正确;
1:消息结构错;
2:命令字错;
3:消息序号重复;
4:消息长度错;
5:资费代码错;
6:超过最大信息长;
7:业务代码错;
8:流量控制错;
9~:其他错误。
SP向 ISMG发起删除短信(CMPP_CANCEL)操作
CMPP_CANCEL操作的目的是 SP通过此操作可以将已经提交给 ISMG的短信删除,ISMG将以
CMPP_CANCEL_RESP回应删除操作的结果。
CMPP_CANCEL消息定义(SPISMG)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识(SP想要删除的信息标识)。
CMPP_CANCEL_RESP消息定义(ISMGSP)
字段名,字节数,属性,描述
Success_Id,4,UnsignedInteger,成功标识。
0:成功;
1:失败。
链路检测(CMPP_ACTIVE_TEST)操作
本操作仅适用于通信双方采用长连接通信方式时用于保持连接。
CMPP_ACTIVE_TEST定义(SPISMG或 ISMGSP)
无消息体。
CMPP_ACTIVE_TEST_RESP定义(SPISMG或 ISMGSP)
字段名,字节数,属性,描述
Reserved,1,,
互联网短信网关(ISMG)之间的消息定义
网关之间互为客户/服务器,任一方在需要传递消息时,向对方请求建立连接,并在身
份验证通过后进行数据传输。
源 ISMG请求连接到目的 ISMG(CMPP_CONNECT)操作
消息定义同 和 所述。其中 Source_Addr填源网关代码。
源 ISMG请求拆除到目的 ISMG的连接(CMPP_TERMINATE)操作
消息定义同 和 所述。
链路检测(CMPP_ACTIVE_TEST)操作
本操作仅用于通信双方采用长连接通信方式时保持连接。消息定义同 和
所述。
源 ISMG向目的 ISMG转发短信(CMPP_FWD)操作
CMPP_FWD操作的目的是源 ISMG可以根据一定的路由策略将 SP提交的短信、MO状态报告、
短信中心产生的状态报告、用户提交的短信转发到目的 ISMG,目的 ISMG以 CMPP_FWD_RESP
回应。
CMPP_FWD定义(ISMGISMG)
字段名,字节数,属性,描述
Source_Id,6,OctetString,源网关的代码(右对齐,左补 0)。
Destination_Id,6,OctetString,目的网关代码(右对齐,左补 0)。
NodesCount,1,UnsignedInteger,经过的网关数量。
Msg_Fwd_Type,1,UnsignedInteger,前转的消息类型:
0:MT前转;
1:MO前转;
2:MT时的状态报告;
3:MO时的状态报告;
Msg_Id,8,UnsignedInteger,信息标识。
Pk_total,1,UnsignedInteger,相同 Msg_Id的消息总条数,从 1开始。
Pk_number,1,UnsignedInteger,相同 Msg_Id的消息序号,从 1开始。
Registered_Delivery,1,UnsignedInteger,是否要求返回状态确认报告:
0:不需要;
1:需要;
2:产生 SMC话单。
Msg_level,1,UnsignedInteger,信息级别。
Service_Id,10,OctetString,业务标识。
Fee_UserType,1,UnsignedInteger,计费用户类型字段:
0:对目的终端 MSISDN计费;
1:对源终端 MSISDN计费;
2:对 SP计费;
3:表示本字段无效,对谁计费参见 Fee_terminal_Id字段。
Fee_terminal_Id,21,OctetString,被计费用户的号码,当 Fee_UserType为 3时该值有
效,当 Fee_UserType为 0、1、2时该值无意义。
Fee_terminal_Pseudo,32,OctetString,被计费用户的伪码。
Fee_terminal_UserType,1,UnsignedInteger,计费用户号码的用户类型,0:全球通,1:
神州行。
TP_pid,1,UnsignedInteger,GSM协议类型。详细解释请参考 中的 。
TP_udhi,1,UnsignedInteger,GSM协议类型。详细解释请参考 中的 ,仅
使用 1位,右对齐。
Msg_Fmt,1,UnsignedInteger,信息格式:
0:ASCII串;
3:短信写卡操作;
4:二进制信息;
8:UCS2编码;
15:含 GB汉字。
Msg_src,6,OctetString,信息内容来源(SP_Id,SP的企业代码)。
FeeType,2,OctetString,资费类别。
01:对“计费用户号码”免费;
02:对“计费用户号码”按条计信息费;
03:对“计费用户号码”按包月收取信息费;
06:对“计费用户号码”按包月查询收费。
FeeCode,6,OctetString,资费代码(以分为单位)。
Valid_Time,17,OctetString,有效期。
At_Time,17,OctetString,定时发送的时间。
Src_Id,21,OctetString,源号码。
1. MT时为 SP的服务代码,即 CMPP_SUBMIT消息中的 Src_Id。
2. MO时为发送此消息的源终端 MSISDN号码。
3. MT状态报告时,填接收到短信的终端 MSISDN号码,即对应 CMPP_SUBMIT消息中的
Dest_Terminal_Id。
4. MO状态报告时,填 SP的服务代码,即 CMPP_DELIVER中的 Dest_Id。
Src_Pseudo,32,OctetString,源号码的伪码。
Src_UserType,1,UnsignedInteger,源号码的用户类型,0:全球通,1:神州行。
Src_type,1,UnsignedInteger,传递给 SP的源号码的类型,0:真实号码;1:伪码。
DestUsr_tl,1,UnsignedInteger,接收消息的用户数量,必须为 1。
Dest_Id,21*DestUsr_tl,OctetString,目的号码。
1.MT转发时为目的终端 MSISDN号码,即对应 CMPP_SUBMIT消息中的 Dest_Terminal_Id。
2.MO转发时为 SP的服务代码,一般 4--6位,或者是前缀为服务代码的长号码,该号码是
手机用户短消息的被叫号码。
3.MT状态报告时,填目的 SP的服务代码,即 CMPP_SUBMIT消息中的 Src_Id。
4.MO状态报告时,填发送短信的移动用户 MSISDN号码。
Dest_Pseudo,32,OctetString,目的用户的伪码。
Dest_UserType,1,UnsignedInteger,目的号码的用户类型,0:全球通,1:神州行。
Msg_Length,1,UnsignedInteger,消息长度,取值大于或等于 0。
Msg_Content,Msg_length,OctetString,消息内容。
LinkID,20,OctetString,点播业务使用的 LinkID。
注意:
1.当转发消息为 MO状态报告时,信息内容字段(Msg_Content)格式定义如下:
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识。
给 SP的 CMPP_Deliver消息中的 Msg_Id,与源网关转发 MO消息时产生的 Msg_Id相同。
Stat,7,OctetString,SP的应答结果,CMPP_DELIVER_RESP中 Result为 0时,填字符
DELIVRD,其余异常的值可能为 SA:xxxx或 SB:xxxx,含义请参考 CMPP_DELIVER中对状态报
告的说明。
CMPP_DELIVER_time,10,OctetString,YYMMDDHHMM(YY为年的后两位 00-99,MM:01-12,
DD:01-31,HH:00-23,MM:00-59)。
注:短信网关发出 CMPP_DELIVER的时间。
CMPP_DELIVER_RESP_time,10,OctetString,YYMMDDHHMM。
注:短信网关收到 CMPP_DELIVER_RESP的时间。
Dest_Id,21,OctetString,目的 SP的服务代码,左对齐。
Reserved,4,,
2.当转发消息为 MT状态报告时,信息内容字段(Msg_Content)格式同 定义。
CMPP_FWD_RESP定义(ISMGISMG)
字段名,字节数,属性,描述
Msg_Id,8,UnsignedInteger,信息标识(CMPP_FWD中字段值)
Pk_total,1,UnsignedInteger,相同 Msg_Id的消息总条数
Pk_number,1,UnsignedInteger,相同 Msg_Id的消息序号
Result,4,UnsignedInteger,结果
0:正确
1:消息结构错
2:命令字错
3:消息序号重复
4:消息长度错
5:资费代码错
6:超过最大信息长
7:业务代码错
8:流量控制错
9:前转判断错(此 SP不应发往本 ISMG)
10~:其他错误
互联网短信网关(ISMG)与汇接网关(GNS)之间的消息定义
要求 ISMG与 GNS在信息交互时使用短连接的通信方式。ISMG与 GNS可互为客户/服务器。
ISMG请求连接到 GNS或 GNS请求连接到 ISMG(CMPP_CONNECT)操作
消息定义同 和 所述,其中 Source_Addr填源网关代码,可能是 ISMG代码
或 GNS代码。
ISMG请求拆除到 GNS的连接或 GNS请求拆除到 ISMG的连接(CMPP_TERMINATE)操作
消息定义同 和 所述。
ISMG向汇接网关查询 MT路由(CMPP_MT_ROUTE)操作
CMPP_MT_ROUTE操作用于 ISMG不知道需要转发 MT消息的路由时查询 GNS。GNS以
CMPP_MT_ROUTE_RESP应答。
CMPP_MT_ROUTE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Source_Id,6,OctetString,源网关代码
Terminal_Id,21,OctetString,目的终端 MSISDN号码
CMPP_MT_ROUTE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Route_Id,4,UnsignedInteger,路由编号(MO/MT分别从 0开始,由 GNS统一分配)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
(地址格式举例:,左对齐)
Gateway_port,2,UnsignedInteger,目标网关 IP端口
Start_Id,9,OctetString,MT路由起始号码段
End_Id,9,OctetString,MT路由截止号码段
Area_code,4,OctetString,手机所属省代号
Result,1,UnsignedInteger,结果
0:正常
1:没有匹配路由
2:源网关代码错
9:系统繁忙
User_type,1,UnsignedInteger,用户类型
0:全球通
1:神州行
2:M-Zone
…...
Time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
ISMG向汇接网关查询 MO路由(CMPP_MO_ROUTE)操作
CMPP_MO_ROUTE操作的目的是使 ISMG当不知道需要转发 MO消息的路由时可向 GNS查询得
到。GNS以 CMPP_MO_ROUTE_RESP应答。
CMPP_MO_ROUTE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Source_Id,6,OctetString,源网关代码
SP_Code,21,OctetString,SP的服务代码
Service_Id,10,OctetString,请求的业务类型(此项适合全网服务内容,如梦网卡图片传
情)
Service_Code,4,UnsignedInteger,请求的业务代码
(如果未置 Service_Id字段,此字段为空,如梦网卡图片传情 TPCQ1000—2000对应某个
网站的某些相应图片)
CMPP_MO_ROUTE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Route_Id,4,UnsignedInteger,路由编号(MO/MT分别从 0开始,由 GNS统一分配)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
SP_Id,6,OctetString,SP的企业代码
SP_Code,21,OctetString,SP的服务代码
SP_AcessType,1,UnsignedInteger,SP接入类型
0:全网业务 SP全网接入,即接入网关为 SP的主力接入点
1:全网业务 SP镜像接入,即接入网关为 SP的镜像接入点
Start_code,4,UnsignedInteger,MO路由起始业务代码
(如果未置请求的 Service_Id字段,此字段为空)
End_code,4,UnsignedInteger,MO路由截止业务代码
(如果未置请求的 Service_Id字段,此字段为空)
Result,1,UnsignedInteger,结果
0:正常
1:没有匹配路由
2:源网关服务代码错
9:系统繁忙
Time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
ISMG向汇接网关获取 MT路由(CMPP_GET_MT_ROUTE)操作
CMPP_GET_MT_ROUTE操作的目的是使 ISMG可向 GNS查询 MT的路由信息。GNS以
CMPP_GET_MT_ROUTE_RESP消息回应。
CMPP_GET_MT_ROUTE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Source_Id,6,OctetString,源网关代码
Route_type,4,OctetString,路由类型
MT:MT路由
(考虑今后的扩展性,故保留此字段)
Last_route_Id,4,Integer,已经接收的上一条路由编号
(第 1次发送此请求时 Last_route_Id=
-1)
CMPP_GET_ROUTE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Route_Id,4,UnsignedInteger,路由编号(MO/MT分别从 0开始,由 GNS统一分配)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
Start_Id,9,OctetString,手机号码段的起始号码
End_Id,9,OctetString,手机号码段的截止号码
Area_code,4,OctetString,手机所属省代码
Result,1,UnsignedInteger,结果
0:正常
1:没有匹配路由
2:源网关代码错
3:路由类型错
9:系统繁忙
User_type,1,UnsignedInteger,用户类型
0:全球通
1:神州行
2:M-Zone
……
Route_total,4,UnsignedInteger,返回路由总数
Route_number,4,UnsignedInteger,当前返回的路由序号,从 1开始,顺序递增
Time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
说明:Route_total和 Route_number两个字段,能够让短信网关清楚地知道 MT/MO的
总路由数,以及当前拿的是第几条路由记录。这样,短信网关就可以更加方便地检验是否
已经完全获取所有路由记录,以便更新本地缓存的路由表。
SMG向汇接网关获取 MO路由(CMPP_GET_MO_ROUTE)操作
CMPP_GET_MO_ROUTE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Source_Id,6,OctetString,源网关代码
Route_type,4,OctetString,路由类型
MO:MO路由
(考虑今后的扩展性,故保留此字段)
Last_route_Id,4,Integer,已经接收的上一条路由编号
(第 1次发送此请求时 Last_route_Id=
-1)
CMPP_GET_MO_ROUTE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Route_Id,4,UnsignedInteger,路由编号(MO/MT分别从 0开始,由 GNS统一分配)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
SP_Id,6,OctetString,SP的企业代码
SP_Code,21,OctetString,SP的服务代码
SP_AcessType,1,UnsignedInteger,SP接入类型
0:全网业务 SP全网接入,即接入网关为 SP的主力接入点
1:全网业务 SP镜像接入,即接入网关为 SP的镜像接入点
Service_Id,10,OctetString,请求的业务类型
(此项适合全网服务内容,如梦网卡图片传情)
Start_code,4,UnsignedInteger,请求的路由类型=MO时:
起始业务代码(如果未置 Service_Id字段,此字段为空)
End_code,4,UnsignedInteger,请求的路由类型=MO时:
截止业务代码(如果未置 Service_Id字段,此字段为空)
Result,1,UnsignedInteger,结果
0:正常
1:没有匹配路由
2:源网关代码错
3:路由类型错
9:系统繁忙
Route_total,4,UnsignedInteger,返回路由总数
Route_number,4,UnsignedInteger,当前返回的路由序号,从 1开始,顺序递增
Time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
ISMG向汇接网关更新 MT路由(CMPP_MT_ROUTE_UPDATE)操作
CMPP_MT_ROUTE_UPDATE操作的目的是使 ISMG可向 GNS更新 MT路由信息。GNS以
CMPP_MT_ROUTE_UPDATE_RESP消息回应。
CMPP_MT_ROUTE_UPDATE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Update_type,1,UnsignedInteger,0:添加
1:删除
2:更新
Route_Id,4,UnsignedInteger,路由编号(MO/MT分别从 0开始,由 GNS统一分配)
(若 update_type为 0,即添加时,此字段为零)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
Start_Id,9,OctetString,MT路由起始号码段
End_Id,9,OctetString,MT路由截止号码段
Area_code,4,OctetString,手机所属省代码
User_type,1,UnsignedInteger,用户类型
0:全球通
1:神州行
2:M-Zone
……
CMPP_MT_ROUTE_UPDATE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Result,1,UnsignedInteger,0:数据合法,等待核实
4:本节点不支持更新(GNS分节点)
9:系统繁忙
10:Update_type错误
11:路由编号错误
12:目的网关代码错误
13:目的网关 IP错误
14:目的网关 Port错误
15:MT路由起始号码段错误
16:MT路由截止号码段错误
17:手机所属省代码错误
18:用户类型错误
Route_Id,4,UnsignedInteger,路由编号
(当路由更新类型为更新和删除时返回原路由编号,当路由更新类型为添加时返回新分配
的路由编号)
Time_stamp,14,OctetString,本路由信息的更新请求收到时间
格式是:yyyymmddhhmmss,
例如 20030117014512
说明:如果插入新路由,汇接网关就分配新的 Route_Id,并且返回。
ISMG向汇接网关更新 MO路由(CMPP_MO_ROUTE_UPDATE)操作
CMPP_MO_ROUTE_UPDATE操作的目的是使 ISMG可向 GNS更新 MO路由信息。GNS以
CMPP_MO_ROUTE_UPDATE_RESP消息回应。
CMPP_MO_ROUTE_UPDATE消息定义(ISMGGNS)
字段名,字节数,属性,描述
Update_type,1,UnsignedInteger,0:添加
1:删除
2:更新
Route_Id,4,UnsignedInteger,路由编号
(若 update_type为 0,即添加时,此字段为零)
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
SP_Id,6,OctetString,SP的企业代码
SP_Code,21,OctetString,SP的服务号码
SP_AcessType,1,UnsignedInteger,SP接入类型
0:全网业务 SP全网接入,即接入网关为 SP的主力接入点
1:全网业务 SP镜像接入,即接入网关为 SP的镜像接入点
Service_Id,10,OctetString,请求的业务类型(此项适合全网服务内容,如梦网卡图片传
情,如该路由不包含此业务,此字段为空)
Start_code,4,UnsignedInteger,MO路由起始业务代码(如果未置请求的 Service_Id字
段,此字段为空)
End_code,4,UnsignedInteger,MO路由截止业务代码(如果未置请求的 Service_Id字段,
此字段为空)
CMPP_MO_ROUTE_UPDATE_RESP消息定义(GNSISMG)
字段名,字节数,属性,描述
Result,1,UnsignedInteger,0:数据合法,等待核实
4:本节点不支持更新(GNS分节点)
9:系统繁忙
10:Update_type错误
11:路由编号错误
12:目标网关代码错误
13:目标网关 IP错误
14:目标网关 Port错误
19:SP_Id错误
20:SP_Code错误
21:SP_AccessType错误
22:Service_Id错误
23:Start_code错误
24:End_code错误
Route_Id,4,UnsignedInteger,路由编号
(当路由更新类型为更新和删除时返回原路由编号,当路由更新类型为添加时返回新分配
的路由编号)
Time_stamp,14,OctetString,本路由信息的更新请求收到时间
格式是:yyyymmddhhmmss,
例如 20030117014512
说明:如果插入新路由,汇接网关就分配新的 Route_Id,并且返回。
汇接网关向 ISMG更新 MT路由(CMPP_PUSH_MT_ROUTE_UPDATE)操作
CMPP_PUSH_MT_ROUTE_UPDATE操作的目的是使 GNS可向 ISMG更新 MT路由信息。ISMG以
CMPP_PUSH_MT_ROUTE_UPDATE_RESP消息回应。
CMPP_PUSH_MT_ROUTE_UPDATE消息定义(GNSISMG)
字段名,字节数,属性,描述
Update_type,1,UnsignedInteger,0:添加;
1:删除;
2:更新
Route_Id,4,UnsignedInteger,路由编号
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
Start_Id,9,OctetString,MT路由起始号码段
End_Id,9,OctetString,MT路由截止号码段
Area_code,4,OctetString,手机所属省代码
User_type,1,UnsignedInteger,用户类型
0:全球通
1:神州行
2:M-Zone
……
Time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
CMPP_PUSH_MT_ROUTE_UPDATE_RESP消息定义(ISMGGNS)
字段名,字节数,属性,描述
Result,1,UnsignedInteger,0:成功更改
5:路由信息更新失败
6:汇接网关路由信息时间戳比本地路由信息时间戳旧
9:系统繁忙
汇接网关向 ISMG更新 MO路由(CMPP_PUSH_MO_ROUTE_UPDATE)操作
CMPP_PUSH_MO_ROUTE_UPDATE操作的目的是使 GNS可向 ISMG更新 MO路由信息。ISMG以
CMPP_PUSH_MO_ROUTE_UPDATE_RESP消息回应。
CMPP_PUSH_MO_ROUTE_UPDATE消息定义(GNSISMG)
字段名,字节数,属性,描述
Update_type,1,UnsignedInteger,0:添加;
1:删除;
2:更新
Route_Id,4,UnsignedInteger,路由编号
Destination_Id,6,OctetString,目标网关代码
Gateway_IP,15,OctetString,目标网关 IP地址
Gateway_port,2,UnsignedInteger,目标网关 IP端口
SP_Id,6,OctetString,SP的企业代码
SP_Code,21,OctetString,SP的服务号码
SP_AcessType,1,UnsignedInteger,SP接入类型
0:全网业务 SP全网接入,即接入网关为 SP的主力接入点
1:全网业务 SP镜像接入,即接入网关为 SP的镜像接入点
Service_Id,10,OctetString,请求的业务类型(此项适合全网服务内容,如梦网卡图片传
情,如该路由不包含此业务,此字段为空)
Start_code,4,UnsignedInteger,MO路由起始业务代码(如果未置请求的 Service_Id字
段,此字段为空)
End_code,4,UnsignedInteger,MO路由截止业务代码(如果未置请求的 Service_Id字段,
此字段为空)
time_stamp,14,OctetString,本路由信息的最后修改时间
格式是:yyyymmddhhmmss,
例如 20030117014512
CMPP_PUSH_MO_ROUTE_UPDATE_RESP消息定义(ISMGGNS)
字段名,字节数,属性,描述
Result,1,Unsigned
Integer,0:成功更改
5:路由信息更新失败
6:汇接网关路由信息时间戳比本地路由信息时间戳旧
9:系统繁忙
系统定义
Command_Id定义
消息,Command_Id值,说明
CMPP_CONNECT,0x00000001,请求连接
CMPP_CONNECT_RESP,0x80000001,请求连接应答
CMPP_TERMINATE,0x00000002,终止连接
CMPP_TERMINATE_RESP,0x80000002,终止连接应答
CMPP_SUBMIT,0x00000004,提交短信
CMPP_SUBMIT_RESP,0x80000004,提交短信应答
CMPP_DELIVER,0x00000005,短信下发
CMPP_DELIVER_RESP,0x80000005,下发短信应答
CMPP_QUERY,0x00000006,发送短信状态查询
CMPP_QUERY_RESP,0x80000006,发送短信状态查询应答
CMPP_CANCEL,0x00000007,删除短信
CMPP_CANCEL_RESP,0x80000007,删除短信应答
CMPP_ACTIVE_TEST,0x00000008,激活测试
CMPP_ACTIVE_TEST_RESP,0x80000008,激活测试应答
CMPP_FWD,0x00000009,消息前转
CMPP_FWD_RESP,0x80000009,消息前转应答
CMPP_MT_ROUTE,0x00000010,MT路由请求
CMPP_MT_ROUTE_RESP,0x80000010,MT路由请求应答
CMPP_MO_ROUTE,0x00000011,MO路由请求
CMPP_MO_ROUTE_RESP,0x80000011,MO路由请求应答
CMPP_GET_MT_ROUTE,0x00000012,获取 MT路由请求
CMPP_GET_MT_ROUTE_RESP,0x80000012,获取 MT路由请求应答
CMPP_MT_ROUTE_UPDATE,0x00000013,MT路由更新
CMPP_MT_ROUTE_UPDATE_RESP,0x80000013,MT路由更新应答
CMPP_MO_ROUTE_UPDATE,0x00000014,MO路由更新
CMPP_MO_ROUTE_UPDATE_RESP,0x80000014,MO路由更新应答
CMPP_PUSH_MT_ROUTE_UPDATE,0x00000015,MT路由更新
CMPP_PUSH_MT_ROUTE_UPDATE_RESP,0x80000015,MT路由更新应答
CMPP_PUSH_MO_ROUTE_UPDATE,0x00000016,MO路由更新
CMPP_PUSH_MO_ROUTE_UPDATE_RESP,0x80000016,MO路由更新应答
CMPP_GET_MO_ROUTE,0x00000017,获取 MO路由请求
CMPP_GET_MO_ROUTE_RESP,0x80000017,获取 MO路由请求应答
错误码使用说明
目前 中定义了响应消息中的 10个返回码,其中 0表示成功,1-9分别表示各种错
误类型,各厂家在返回错误码时应尽可能向这 9个错误码靠拢,当然,因为设计的原因或
者查错的方便,厂家可以在规定的厂家自定义错误码空间中定义自己的错误码,但是,定
义错误码时不允许存在类似与“其它错误”或者“系统错误”这类含义模糊的情况,即各
厂家能够对自己返回的每一个错误码给出明确的含义解释,以利于错误发生时的定位工
作。0-99为 CMPP协议保留的错误码空间,请各厂家在预留的错误码空间范围:100-199
内自行定义,并提供详细的编码解释列表。
ISMG与 GNS之间消息使用的错误码定义
0:系统操作成功;
1:没有匹配路由;
2:源网关代码错误;
3:路由类型错误;
4:本节点不支持更新(GNS分节点);
5:路由信息更新失败;
6:汇接网关路由信息时间戳比本地路由信息时间戳旧;
9:系统繁忙;
10:Update_type错误;
11:路由编号错误;
12:目的网关代码错误;
13:目的网关 IP错误;
14:目的网关 Port错误;
15:MT路由起始号码段错误;
16:MT路由截止号码段错误;
17:手机所属省代码错误;
18:用户类型错误;
19:SP_Id错误;
20:SP_Code错误;
21:SP_AccessType错误;
22:Service_Id错误;
23:Start_code错误;
24:End_code错误。
100~199:厂家自定义错误码空间。
GNS上路由信息的 Route_Id的编号规则
按运营商、MO/MT分类,由 0开始往上分配。
9 附录 1短信群发功能的实现
目前拟定按如下方式实现 MT短信的群发功能(对 SMC暂不实现群发):
SP侧 ISMG接收到 CMPP_SUBMIT消息后,判断是否为群发的 MT短信,如果为群发的
SMC,则返回错误;如果为其它类型的操作,仍旧按照以前的业务流程进行。如果是群发的
MT短信(假设群发目的号码数为 n),则将该消息拆包为 n条 CMPP_Fwd消息或直接发给
SMSC的 SUBMIT_SM消息,其中计费规则(对谁计费和计费多少)与单条 MT短信的计费规则
相同。返回给 SP的 CMPP_SUBMIT_RESP消息中的 Msg_Id则暗示一个范围,即 Msg_Id~
Msg_Id+(n-1)分别对应 n个目的手机用户的信息标识,那么在返回的状态报告中可以
依据 Msg_Id~Msg_Id+(n-1)范围内的数字匹配出群发短信中的每一个短信发送请求。
需要注意的是,Msg_Id~Msg_Id+(n-1)范围内的信息标识不能被随后的其它
CMPP_SUBMIT_RESP消息使用。
在 Msg_Id中的“序列号”如下定义:“序列号:bit16~bit1,顺序增加,步长为 1,
循环使用。”,那么如果在 Msg_Id~Msg_Id+(n-1)范围中仍然依据此规则,如果其中
“序列号”到达最大值,则从 0开始循环使用。
增加此短信群发功能,实际上等同于 SP把以前分为 n次发送的短信合并到一条消息
中,但是 SP仍然应该把此一条消息当作 n条短信提交请求,并相应记录 n条话单,SP拿 n
条话单与移动公司进行对帐和结算。
在短信群发的消息中,仍然需要判断消息中的计费号码、所有的目的号码的合法性,
SP应该保证其中每个号码都是合法的,如果其中任何一个号码有错误,接入 ISMG对此消息
判断为错误,并给 SP返回错误,不对其中任何号码进行发送处理。
接入 ISMG对 SP下发的短信的流量具有限制功能,对 SP流量的统计对短信群发来说,应该
计算为 n条短信。
10 附录 2GNS协议目前实现说明
1、 MT路由信息中的 Start_Id和 End_Id应该相同,格式均应该为 13XH0H1H2H3(其中 X
为 5、6、7、8、9);
2、 MO路由信息目前主要根据 Source_Id(源网关代码)和 SP_Code(SP的服务代码)决
定,Service_Id和 Service_Code目前尚未使用;
3、 Route_Id的编号目前仅按照 MO/MT进行分别编号,并且 MO和 MT类的路由 Route_Id均
从 0开始编号。
11 修订历史
版本号,时间,主要内容或重大修改
,,
1. ,,修改了 Msg_Id的生成算法;
2. 明确了有关短信群发的问题;
3. CMPP_MO_ROUTE_RESP中的 SP_CODE改为 SP_Id(SP企业代码);
4. ISMG与 GNS交互的消息中 Area_Code含义定义为省代码,用省会城市区号表示;
5. 对 Service_Id字段的要求放宽,可以是数字、字母和符号的组合;
6. 明确 Dest_terminal_Id字段允许在用户终端号码前加“86”或“+86”;
7. 规定网关 SP之间、网关之间消息发送等待确认时间暂定为 60秒,超过则认为超时需
要重发两次;
8. 规定了对于包月的 SMC消息,应向 SP返回成功与否的状态报告,若成功 Stat值为
DELIVRD,失败 Stat值为 UNDELIV;
9. 明确状态报告中 ACCEPTED为中间状态,网关收到后应丢弃不做任何操作;
10. 修改了 CMPP_ACTIVE_TEST_RESP的消息格式;
11. 增加了 MO状态报告的格式、流程;
12. 在缩略语中增加了一些定义,改正了一些文字上前后不一致的地方,进行了版面调
整;
13. 增加了网关在异常情形下的 MO/MT状态报告的产生机制;
14. 对原协议中的端口号作了重新规定。
,,1、取消“源ISMG”和“目的ISMG”的说法,把用户归属的ISMG简称为
“归属ISMG”,把SP接入的ISMG简称为“接入ISMG”,如果“归属ISMG”和“接入ISMG”
为同一个ISMG,则用“归属/接入ISMG”或者“接入/归属ISMG”来代称;但在泛称时仍可
能使用“源ISMG”和“目的ISMG”;
2、明确SP与ISMG之间、ISMG与ISMG之间的连接建议为采用长连接方式;
3、明确SP与ISMG之间的连接方式:SP为客户端、ISMG为服务器端;
4、取消CMPP_SUBMIT中对短信群发必须在SP不要求状态报告时的限制;
5、状态报告中增加了MA:xxxx、MB:xxxx、CA:xxxx、CB:xxxx的状态值;
6、明确CMPP_FWD消息中的Src_Id和Dest_Id字段的填写情况,原则上不再允许状态报告中
填写空值;
7、更新了GNS协议的所有消息,增加了GNS协议相关的系统定义(CommandId、错误
码、Route_Id的编号规则);
8、添加了对错误码使用范围的说明;
9、删除了原“附录1MO状态报告的产生”,因为MO状态报告在《移动梦网短信业务信令流
程规范》中已经进行详细的说明;
10、因为要求 ISMG对 CMPP_SUBMIT中的各字段进行更详细的判断,添加了
CMPP_SUBMIT_RESP中的返回码的取值范围;
11、删除了原CMPP_FWD中对状态报告的产生流程的描述,因为这些流程在《移动梦网短信
业务信令流程规范》中已经进行了详细的说明;
,2003-6-23,1、按照标准格式进行修改
2、CMPP_SUBMIT:Msg_Id字段的描述:删除“由SP接入的短信网关本身产生,本处填
空。”,直接描述为“信息标识”。
3、CMPP_SUBMIT:Fee_terminal_Id字段的描述:删除“如本字节填空,则表示本字段无
效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥”,修改为“当
Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义”。
4、CMPP_FWD:Fee_terminal_Id字段的描述:删除“如本字节填空,则表示本字段无效,
对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥”,修改为“当
Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义”。
15、CMPP_SUBMIT、CMPP_DELIVER、CMPP_FWD消息的Msg_Length字段:添加“取值大于或等
于0”的限制。
,2003-6-30,1、删除CMPP_SUBMIT、CMPP_DELIVER、CMPP_FWD消息中的Reserve
字段,添加LinkID字段;(20个字节长字符串类型);
2、CMPP_SUBMIT消息:增加Fee_terminal_type字段,表明Fee_terminal_Id是真实用户号
码还是伪码;
3、CMPP_SUBMIT消息:扩展Fee_terminal_Id长度为32字节,适应伪码的长度需求,并把其
类型从UnsignedInteger修改为OctetString。
4、CMPP_SUBMIT消息:增加Dest_terminal_type字段,表明Dest_terminal_Id是真实用户
号码还是伪码;
5、CMPP_SUBMIT消息:扩展Dest_terminal_Id的单元长度为32字节,适应伪码的长度需
求。
6、CMPP_DELIVER消息:增加Src_terminal_type字段,表明Src_terminal_Id是真实用户号
码还是伪码;
7、CMPP_DELIVER消息:扩展Src_terminal_Id的单元长度为32字节,适应伪码的长度需
求。
8、CMPP_FWD消息:增加Fee_terminal_Pseudo字段,32个字节长;
9、CMPP_FWD消息:增加Src_Id_Pseudo字段,32个字节长;
10、CMPP_FWD消息:增加Src_Id_type字段,表明MO时传递给SP的到底是真实号码还是伪
码;
11、CMPP_FWD消息:增加Dest_Id_Pseudo字段,32个字节长。
12、CMPP_FWD消息:增加Fee_terminal_UserType字段;
13、CMPP_FWD消息:增加Src_UserType字段;
14、CMPP_FWD消息:增加Dest_UserType字段;
15、CMPP_FWD消息:增加FeeType的值:06表明包月查询。
16、把所有响应消息中的状态码字段从1个字节扩展为4个字节,包括:
CMPP_CONNECT_RESP消息中的status字段;
CMPP_SUBMIT_RESP消息中的Result字段;
CMPP_DELIVER_RESP消息中的Result字段;
CMPP_CANCEL_RESP消息中的Success_Id字段;
CMPP_FWD消息中的Result字段;
GNS部分相关协议不作修改。
17、CMPP_SUBMIT消息:Register_Delivery字段删除对2(产生SMC话单)的支持;
18、对于版本CMPP,要求CMPP_CONNECT消息和CMPP_CONNECT_RESP消息中的Version字段
表示版本;
19、把Service_Id的名称从“业务类型”改为“业务标识”;
20、删除CMPP中用于ISMG之间短连接的端口号,不再允许ISMG之间采用短连接;
21、修改“3术语和定义”中对SP_Code的说明,添加“106x”前缀作为SP服务代码的说
明;
22、删除“3术语和定义”中对SMC的说明,SP不能再发送SMC消息进行包月费用的收取;
23、在“3术语和定义”中添加对DSMP的说明;
24、修改了“4网络结构”中的“互联网短信网关组网结构”图,在图中添加了DSMP的网
元;
25、把“5CMPP功能概述”中的流程描述,流程描述在相应的流程规范中有更详细的阐述;
26、修改“7通信方式”中的描述,明确要求ISMG之间必须采用长连接,SP与ISMG之间建议
采用长连接;
27、CMPP_SUBMIT消息中,FeeType字段:删除对04(封顶计费)和05(对SP计费)的支
持;
28、CMPP_DELIVER消息传递内容为状态报告时,Msg_Content中的Dest_terminal_Id字段的
长度从21个字节扩充为32个字节;
29、CMPP_DELIVER消息中传递内容为状态报告时,Msg_Content中的Stat字段的范围扩充
了,把所有网元之间交互的错误情况均列在该字段中传递,文档作了相应的修改;
30、CMPP_FWD消息的FeeType字段:删除对00(核减对称信道费)、04(封顶计费)和05
(对SP计费)的方式的支持;
31、CMPP_FWD消息传递MO状态报告时,Msg_Content中的Stat字段的取值定义进行了修改,
说明请参见相应的修改内容。