(SGIP)
版本1.2
中国联合通信公司
二零零一年十月
目录
1概述 1
1.1协议说明 1
1.2适用范围 1
1.3参考资料 1
1.4术语表 1
2系统体系结构 3
2.1消息从本地SMSC到本地SP 4
2.2消息从本地SP到本地SMSC 4
2.3消息从本地SMSC到异地SP 4
2.4消息从本地SP到异地SMSC 4
2.5路由选择 4
3 通信流程 6
3.1专用SGIP方式 6
3.2通用HTTP方式 6
3.3通信节点编号规则 7
3.4序列号的定义 7
3.5通信的安全性 8
3.6用户鉴权 8
3.6.1被叫方付费 8
3.6.2SP付费 8
3.6.3第三方付费 8
3.7 SP与SMG的通信 9
3.7.1通用HTTP方式 9
3.7.1.1从SP到SMG的命令 9
3.7.1.2从SMG到SP的命令 10
3.7.2专用SGIP方式 10
3.7.2.1通信初始化 10
3.7.2.2通信过程 10
3.7.2.3通信结束 11
3.7.2.4故障处理 12
3.7.2.5从SP到SMG的消息 12
3.7.2.6从SMG到SP的消息 13
3.8 SMG与SMG之间的通信 13
3.8.1通信初始化 14
3.8.2通信过程 14
3.8.3通信结束 14
3.8.4故障处理 14
3.8.5两个SMG之间的消息 15
3.9 SMG与GNS之间的通信 15
3.9.1通信初始化 15
3.9.2通信过程 15
3.9.3通信结束 16
3.9.4故障处理 16
3.9.5从SMG到GNS的消息 16
3.9.6从GNS到SMG的消息 16
4 消息定义 18
4.1基于通用HTTP的消息定义 18
4.1.1Submit操作 18
4.1.1.1Submit命令的请求内容 18
4.1.1.2Submit命令的应答内容 19
4.1.2Deliver操作 20
4.1.2.1Deliver命令的请求内容 20
4.1.2.2Deliver命令的应答内容 20
4.1.3Report操作 21
4.1.3.1Report命令的请求内容 21
4.1.3.2Report命令的应答内容 21
4.1.4UserRpt操作 22
4.1.4.1UserRpt命令的请求内容 22
4.1.4.2UserRpt命令的应答内容 22
4.1.5Trace操作 22
4.1.5.1Trace命令的请求内容 22
4.1.5.2Trace命令的应答内容 23
4.2基于专用SGIP的消息定义 23
4.2.1数据类型 23
4.2.2消息头的格式 24
4.2.3消息体的格式 24
4.2.3.1Bind操作 24
4.2.3.2Unbind操作 25
4.2.3.3Submit操作 25
4.2.3.4Deliver操作 27
4.2.3.5Report操作 28
4.2.3.6AddSP操作 28
4.2.3.7ModifySP操作 29
4.2.3.8DeleteSP操作 30
4.2.3.9QueryRoute操作 30
4.2.3.10AddTeleSeg操作 31
4.2.3.11ModifyTeleSeg操作 32
4.2.3.12DeleteTeleSeg操作 32
4.2.3.13AddSMG操作 33
4.2.3.14ModifySMG操作 34
4.2.3.15DeleteSMG操作 34
4.3鉴权消息定义 35
4.3.1CheckUser命令的语法 35
4.3.2CheckUser_Resp应答的语法 35
4.3.3UserRpt命令的语法 35
4.3.4UserRpt_Resp应答的语法 35
4.4测试消息定义 36
4.4.1Trace命令的语法 36
4.4.2Trace_Resp应答的语法 36
5常量定义 37
5.1消息ID定义 37
5.2错误码定义 37
5.3计费类别定义 38
5.4REPORT 状态与短消息状态的映射 38
附录1: 全网路由表的格式示范 39
附录2: 本地路由表的格式示范 40
附录3: HTTP承载方式示范 41
1概述
1.1协议说明
本协议是SMG和SP之间、SMG和GNS之间、以及SMG和SMG之间的接口协议,简称SGIP。
通过应用SGIP协议,SP可以接入到SMG,实现SP应用的一点接入、全网服务;SMG可以通过SGIP协议,实现消息在不同SMG之间的路由和转发。同时,SMG通过该协议也可以和GNS通信,以实现各SMG和GNS之间路由表的同步功能。
1.2适用范围
本协议适用于各SP厂商和SMG的开发厂商。
1.3参考资料
[1] SMPP 3.3
[2] GSM 3.40
[3] GSM 3.38
[4] HTTP1.0
1.4术语表
本协议用到以下术语:
GNS Gateway Name Server,负责系统路由的管理和同步
MO 由手机用户提交的短消息
MT 由手机用户接收的短消息
SGIP Short Message Gateway Interface Protocol,本协议所描述的短消息网关接口协议,用于完成在SMG和SP之间、SMG和SMG之间短消息的发送、接收和转发功能,以及SMG和GNS之间路由表的同步功能
SMG Short Message Gateway ,联通公司的短消息网关,SMG之间的通讯协议采用SGIP
SMPP Short Message Peer to Peer,短消息点对点协议,采用3.3版本
SMSC Short Message Service Center ,短消息中心
SP Service Provider,服务提供商
2系统体系结构
SMG是具有短消息转发功能的短消息网关。全国可以有多个SMG网关,SMG网关之间通过互联网等方式实现网络互联。每一个SMG同时与多个SMSC以及多个SP连接。全网具有唯一有效的GNS,GNS负责全局路由表的维护与更新;为了确保路由表存储的安全性,网络中设置主备用GNS,两个GNS要保持一致性。每一个SMG都和GNS连接。SMG与SP、SMG与GNS以及SMG与SMG之间的通信协议为SGIP协议。SMG与SMSC之间的通信统一采用SMPP3.3协议。
图2-1说明了系统的体系结构。
图2-1 SMG的体系结构
和SMG平台之间相连的SMSC称作本地SMSC,和异地SMG平台相连的SMSC称作异地SMSC。
和SMG平台之间相连的SP称作本地SP,和异地SMG平台相连的SP称作异地SP。
从本地SMSC向本地SP以及从本地SP向本地SMSC发送的消息直接由SMG转发;从本地SMSC向异地SP以及从本地SP向异地SMSC发送的消息由本地SMG路由到异地SMG后,再由异地SMG转发。
2.1消息从本地SMSC到本地SP
SMG从SMSC接收到短消息,直接发给SP。比如
SMSC1A—〉SMG1—〉SP1Y
SMSC1B—〉SMG1—〉SP1X
2.2消息从本地SP到本地SMSC
SMG从SP接收短消息,直接发给SMSC。比如
SP1X—〉SMG1—〉SMSC1A
SP1Y—〉SMG1—〉SMSC1B
2.3消息从本地SMSC到异地SP
SMG从本地SMSC接收短消息,再路由到异地SMG,由异地的SMG发送到目的SP,比如
SMSC1A—〉SMG1—〉SMG2—〉SP2Y
SMSC1B—〉SMG1—〉SMG3—〉SP3X
2.4消息从本地SP到异地SMSC
SMG从本地SP接收短消息,再路由到异地SMG,由异地的SMG发送到目的SMSC,比如
SP1X—〉SMG1—〉SMG2—〉SMSC2A
SP1Y—〉SMG1—〉SMG3—〉SMSC3B
2.5路由选择
当消息在本地SMSC和异地SP,或者在本地SP和异地SMSC之间传输时,发送方必须要获取消息接收方的位置信息。这部分功能称为路由选择。
对于MO方向的命令(即命令接收方为SP),其路由根据命令中的SP接入号码来选择。
对于MT方向的命令(即接收方为用户手机),其路由根据命令中的付费号码和用户号码来综合判断。如果付费号码为空,或付费号码为SP接入号码,则根据用户号码来选择路由;否则根据付费号码所代表的手机号码来选择路由(这样做是考虑到了系统计费和用户鉴权的可行性,关于计费和用户鉴权的细节,请参见其它文档)。
由于SMG网关之间采用网状互联,网关之间不可能出现二次前转,因此接收前转消息的网关必须能判断前转的消息目的地址是否是本网关覆盖范围的用户,若不是,必须发送出错信息到前转网关。
3 通信流程
SGIP有两种具体实现方式,一种是采用专用SGIP方式,另一种是采用通用HTTP方式。SMG和GNS、以及SMG和SMG之间采用专用SGIP方式作为承载协议;而SP和SMG的通信同时支持专用SGIP方式和通用HTTP方式两种承载协议。
3.1专用SGIP方式
采用专用SGIP方式承载时,通信双方互为客户端和服务器端。当客户端要发送命令时,主动向服务器端建立连接,然后向服务器端发送命令,并接收应答;服务器端从客户端接收命令,返回应答。连接建立以后,客户端可以连续发送多条命令。命令发送完并接收到所有应答后,客户端应该主动断开连接。但是,命令及其应答之间的时间间隔最大不能超过30秒(默认,可配置)(如果命令应答时间超过最大等待时间,则要求客户端重发该条命令,重发机制参见业务联网规范有关内容),且待应答的命令不得超过32条(可以根据线路的质量和服务器的处理能力配置)。而且,如果服务器端检测出一条连接长时间空闲(默认60秒,可配置),可以主动断开该连接。如果需要,客户端可以同时向一个服务器端建立多个连接(SMG与单个其他SMG最多不能建立超过15个连接,对与之相连的单个SP的最大连接数视具体情况而定)。采用专用SGIP承载方式时,SMG和SMG、SP和SMG之间使用的端口号是8801,GNS监听SMG的端口号为8802,SMG监听GNS的端口号为8803,主GNS和备用GNS之间的端口号为8804,SMG之间的测试用端口号为8810。
3.2通用HTTP方式
HTTP承载方式只适用于SP和SMG的通信中。与SP与SMG之间的专用SGIP承载方式不同的是,该种方式一次连接仅仅传送一条命令,而且连接的认证采用HTTP的URL的授权认证的方式,不需要专门的连接认证的命令,使用的端口号是80。
3.3通信节点编号规则
在整个网关系统中,所有的通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号,不同的SP或SMSC或SMG或GNS编号不能相同,编号由系统管理人员负责分配。编号规则如下:
SMG的编号规则:1AAAAX
SMSC的编号规则: 2AAAAX
SP的编号规则:3AAAAQQQQQ
GNS的编号规则:4AAAAX
其中, AAAA表示四位长途区号(不足四位的长途区号,左对齐,右补零),X表示1位序号,QQQQQ表示5位企业代码。
3.4序列号的定义
短消息网关系统之中传输的每一条命令都有一个序列号,序列号由命令源节点产生并唯一标记一条命令;也就是说,网关系统中任何两个命令的序列号都不相同。需要注意的是,一条命令在发送过程中转发的不同副本视为一条命令,使用相同的序列号。比如,SP1X向SMSC2A发送一条命令,该命令需经过多次转发才能到达SMSC2A,而转发该命令的每一次通信过程中使用的命令的序号均相同,为SP1X与SMG1通信所使用的序列号。对于MO短消息,例如SMSC1B向SP3X发送一条命令,短消息首先采用SMPP协议发送到SMG1,经过SMG1转发时序列号必须由SMG1重新生成(此时命令源节点为SMG1)。
序列号分成三部分,每部分为一个32位整数,第一部分表示命令源节点的编号,第二部分表示命令产生的日期和时间(网关系统中的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,比如11月20日20时32分25秒产生的命令,其第二部分为十进制1120203225;第三部分由0开始,循环进位,直到进位满了之后再清零,重新开始计数。接收方在返回应答时,应答的序列号必须和相对应的命令的序列号相同。
图3-1 命令序列号格式举例
3.5通信的安全性
SP与SMG、SMG与SMG以及SMG与GNS之间采用专用SGIP方式通信时可采用对称加密方式。SP与SMG之间采用通用HTTP方式时,可采用HTTPS方式加密。
3.6用户鉴权
当一条MT短消息需要处理时,终点SMG必须保证该短消息的付费方有资格享用该服务(比如付费用户不欠费)。根据短消息服务类型的不同,可以将付费方式分成三类:被叫方付费、SP付费和第三方付费。
3.6.1被叫方付费
目前的短消息中心都具有对被叫用户鉴权的功能,所以对由被叫方付费的MT短消息,SMG不作鉴权检查,直接转发至SMSC;如果被叫方鉴权失败,SMSC会通过反馈通知SMG。
3.6.2SP付费
当MT短消息是由SP付费时(如SP发送广告),SMG不作鉴权检查。
3.6.3第三方付费
当MT短消息是由第三方付费 (如手机用户A通过SP给手机用户B点歌,并由手机用户A付费)时,应该对付费方进行鉴权。这种情况下,该MT短消息应该从付费方归属地的短消息中心发送,并且由付费方归属地的计费中心完成鉴权操作。如果计费中心鉴权成功,SMG即将该MT短消息发送至SMSC,否则SMG不再发送该短消息,并根据SP的要求决定是否返回Report命令通知SP发送失败的原因。
SMG和计费中心通过TCP/IP通信实现鉴权功能。计费中心为服务器端,SMG为客户端。一次鉴权过程完成对一个手机号码的鉴权。鉴权步骤如下:
1. SMG和计费中心建立TCP/IP连接;
2. SMG向计费中心发送鉴权命令;
3. SMG从计费中心接收鉴权应答;
4. SMG和计费中心断开连接;
消息 描述
CheckUser SMG向计费中心请求对一个手机号码鉴权
CheckUser_Resp 计费中心向SMG返回的一个手机号码的鉴权结果
表3-1 SMG和计费中心的鉴权消息
3.7 SP与SMG的通信
SP和SMG支持两种类型的通信承载方式:通用HTTP承载方式和通用SGIP承载方式。
3.7.1通用HTTP方式
SP和SMG之间采用通用HTTP方式通信时,SP和SMG互为HTTP的客户端和服务器端。HTTP服务器端对相关的URL进行保护,HTTP客户端必须采用授权方式访问这些URL。HTTP的特点决定客户端和服务器端的每一次通信都必须一次完成授权连接、发送请求、接收应答、关闭连接等过程(HTTP承载方式不再需要专门的连接命令)。
对于MO方向的命令(即命令接收方为SP),由SMG通过POST方式提交给SP进行处理,SP将处理结果以及MT方向信息在HTTP应答中返回给SMG;
对于SP主动向用户发送信息的PUSH业务,由SP作为客户端将信息通过POST方式提交给SMG进行处理,SMG在应答中确认信息发送成功与否。
因为HTTP服务器对URL进行了授权保护,所以HTTP客户端必须在每次请求中都带上授权信息。HTTP客户端的一个请求只能携带一条命令。SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生,任何两条命令的序列号不能重复。
如果HTTP服务器接收到的HTTP请求内容的格式不完整或不正确, HTTP服务器应该返回错误码。
HTTP承载方式支持的HTTP协议为1.0版。
HTTP承载方式使用如下命令:
3.7.1.1从SP到SMG的命令
消息 描述
Submit SP用该消息向SMG请求向某一个短消息用户发送短消息
Trace SP用该消息向SMG请求跟踪某一条MT短消息的状态
表3-2 从SP到SMG的命令
3.7.1.2从SMG到SP的命令
消息 描述
Deliver SMG发送一条短消息到SP
Report SMG用该命令通知SP一条Submit命令所发送的MT当前结果
UserRpt SMG用该命令报告SP一条手机用户的状态
表3-3 从SMG到SP的命令
3.7.2专用SGIP方式
SP和SMG之间的通信由客户端向服务器端发起连接。连接建立以后,由客户端向服务器端发送命令,服务器端必须对接收到的每一条命令返回一条应答消息。SP和SMG互为客户端和服务器端。
3.7.2.1通信初始化
客户端有命令要向服务器端发送时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.7.2.2通信过程
SP与SMG之间发送的任何一条命令都带有一个序列号,序列号由命令源产生。
客户端与服务器端通信开始以后,客户端可以向服务器端发送相应的命令,服务器端对收到的命令返回应答。
图3-2 SP和SMG的通信消息样例(SP为客户端)
图3-3 SP和SMG的通信消息样例(SMG为客户端)
命令在SP和SMSC之间的传输是采用类似接力的方式,每条命令和对应的应答仅仅表示该次命令发送的结果是否正确。比如,SP向某一个手机发送一条短消息,是通过向本地SMG发送一条Submit命令实现的,随后,SP会从SMG接收到一条Submit_Resp应答。但是,即使应答表示Submit命令已正确接收,也不表示Submit命令内的短消息已经发送到手机上了,而仅仅表示该短消息已经传送到SMG,SMG将会作下一步处理,或者发送给SMSC,或者路由到另外的SMG,最终由目的SMSC发送到手机上。这中间任何一个环节出现错误,系统会终止信息的继续发送,并且通过向原SP发送Report命令告诉发送出错的原因(如果SP指定要求反馈的话)。
3.7.2.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.7.2.4故障处理
发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令的应答相结合返回故障原因;如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
3.7.2.4.1网络故障
客户端与服务器端的通信过程中如果检测到双方连接中断(如网络断线),客户端应该断开连接,然后尝试重新向服务器端建立新的连接;服务器端应该按照接收到Unbind的情况进行处理,断开和客户端的连接。
3.7.2.4.2接收到非法命令或应答
如果服务器端接收到的命令语法错误,比如命令不完整、命令无法识别等,则断开和客户端的连接;客户端应该向服务器端建立新连接继续发送命令。
如果客户端接收到的应答语法错误,比如命令不完整、命令无法识别等,则主动断开和服务器端的连接;服务器端也应该断开和客户端的连接。
如果命令语法正确,但服务器端不处理该命令,比如SP为服务器端时收到Submit命令,则返回相应应答,并在应答中指定错误原因。
如果应答语法正确,但客户端不处理该应答,比如SP为客户端时收到Deliver_Resp应答,则丢弃。
3.7.2.4.3序列号重复
如果命令的序列号和以前接收到的命令的序列号相同,且命令内容也相同,则接收方丢弃该命令;如果序列号相同,但是命令内容并不相同,则命令接收方在应答中返回错误码。
3.7.2.5从SP到SMG的消息
消息 适用方式 描述
Bind SP为客户端 SP用该消息向SMG发出建立连接的请求
Bind_Resp SP为服务器 SP对Bind命令的应答
Unbind SP为客户端 SP用该消息向SMG通知将要断开现有的连接
Unbind_Resp SP为服务器 SP对Unbind命令的应答
Submit SP为客户端 SP用该消息向SMG请求发送短消息
Deliver_Resp SP为服务器端 SP用该消息对从SMG接收到的Deliver命令作出应答
Report_Resp SP为服务器 SP对从SMG接收到的Report命令作出应答
UserRpt_Resp SP为服务器 SP对从SMG接收到的UserRpt命令作出应答
Trace SP为客户端 SP用该消息向SMG请求跟踪某一条MT短消息的状态
表3-4 从SP到SMG的消息
3.7.2.6从SMG到SP的消息
消息 适用方式 描述
Bind SMG为客户端 SMG用该消息向SP发出建立连接的请求
Bind_Resp SMG为服务器端 SMG对Bind命令的应答
Unbind SMG为客户端 SMG用该消息向SP通知将要断开现有的连接
Unbind_Resp SMG为服务器端 SMG对Unbind命令的应答
Submit_Resp SMG为服务器端 SMG对Submit命令的应答
Deliver SMG为客户端 SMG发送一条短消息到SP
Report SMG为客户端 SMG用该命令通知SP一条Submit命令所发送的MT当前结果
UserRpt SMG为客户端 SMG用该命令通知SP一条手机用户的状态信息
Trace_Resp SMG为客户端 SMG对Trace命令的应答
表3-5从SMG到SP的消息
3.8 SMG与SMG之间的通信
在网关系统之中,任何两个SMG之间都要建立一对基于TCP/IP的连接,以实现命令的路由。两个SMG互为客户端和服务器端,客户端向服务器端发送命令,接收应答;服务器端从客户端接收命令,返回应答。
图3-4 SMG之间的通信消息样例
3.8.1通信初始化
SMG与SMG通信时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.8.2通信过程
两个SMG之间的通信和SP和SMG之间的基于TCP/IP的承载方式的通信方式相同。
3.8.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.8.4故障处理
SMG之间的故障处理和SP与SMG之间的故障处理相同。
3.8.5两个SMG之间的消息
消息 描述
Bind 客户端向服务器端请求连接
Bind_Resp 服务器端对接收到的Bind命令的响应
Unbind 客户端向服务器端通知断开当前的连接
Unbind_Resp 服务器端对接收到的Unbind命令的响应
Submit 客户端向服务器端发送一条MT短消息
Submit_Resp 服务器端向从客户端接收到的Submit命令发送的应答消息
Deliver 客户端向服务器端发送一条MO短消息
Deliver_Resp 服务器端向从客户端接收到的Deliver命令发送的应答消息
Report 客户端向服务器端发送一条MT或MO的发送结果
Report_Resp 服务器端向从客户端接收到的Report命令发送应答消息
UserRpt 客户端向服务器端发送一条手机用户的状态信息
UserRpt_Resp 服务器端向从客户端接收到的UserRpt命令发送应答消息
Trace 客户端向服务器端发送请求跟踪某一条MT短消息状态的信息
Trace_Resp 服务器端向从客户端接收到的Trace命令发送应答消息
表3-6 SMG之间的消息
3.9 SMG与GNS之间的通信
在网关系统之中,任何一个SMG都要和GNS以互为客户端/服务器的方式建立连接来完成路由表的更新和维护。当SMG对本地的路由表作修改后,需要主动以客户端的身份向GNS建立连接,通知GNS更新路由表;当GNS修改了路由表后,需要主动以客户端的身份向所有的SMG建立连接,通知SMG更新路由表。
3.9.1通信初始化
SMG与GNS通信时,由客户端首先通过Bind命令向服务器端发起连接。服务器端根据Bind命令之中的登录名和密码,对客户端的合法性进行验证,然后返回一条Bind_Resp应答给客户端。如果验证通过,则客户端和服务器端的通信开始,否则中断连接。
3.9.2通信过程
客户端和服务器端建立连接以后,客户端向服务器端发送命令,服务器端则返回应答。
3.9.3通信结束
如果客户端认为和服务器端的通信已结束,则客户端应该向服务器端发送Unbind命令,服务器端随后返回Unbind_Resp应答,然后双方断开连接。
3.9.4故障处理
SMG和GNS的故障处理和SP与SMG之间的故障处理相同。
3.9.5从SMG到GNS的消息
消息 适用方式 描述
Bind SMG为客户端 SMG向GNS端请求连接
Bind_Resp SMG为服务器端 SMG对Bind命令的应答
Unbind SMG为客户端 SMG向GNS端通知断开当前的连接
Unbind_Resp SMG为服务器端 SMG对Unbind命令的应答
AddSP SMG为客户端 SMG通知GNS添加了一个SP
AddSP_Resp SMG为服务器端 SMG对AddSP命令的应答
ModifySP SMG为客户端 SMG通知GNS修改了一个SP
ModifySP_Resp SMG为服务器端 SMG对ModifySP命令的应答
DeleteSP SMG为客户端 SMG通知GNS删除了一个SP
DeleteSP_Resp SMG为服务器端 SMG对DeleteSP命令的应答
AddTeleSeg SMG为客户端 SMG通知GNS添加了一个号码段
AddTeleSeg_Resp SMG为服务器端 SMG对AddTeleSeg命令的应答
ModifyTeleSeg SMG为客户端 SMG通知GNS修改了一个号码段
ModifyTeleSeg_Resp SMG为服务器端 SMG对ModifyTeleSeg命令的应答
DeleteTeleSeg SMG为客户端 SMG通知GNS删除了一个号码段
DeleteTeleSeg_Resp SMG为服务器端 SMG对DeleteTeleSeg命令的应答
QueryRoute SMG为客户端 SMG向GNS请求一个手机号或接入号码的路由信息,或全部路由表信息
QueryRoute_Resp SMG为服务器端 SMG对QueryRoute命令的应答
表3-7从SMG到GNS的消息
3.9.6从GNS到SMG的消息
消息 适用方式 描述
Bind GNS为客户端 GNS向SMG端请求连接
Bind_Resp GNS为服务器端 GNS对Bind命令的应答
Unbind GNS为客户端 GNS向SMG端通知断开当前的连接
Unbind_Resp GNS为服务器端 GNS对Unbind命令的应答
AddSP GNS为客户端 GNS通知SMG添加了一个SP
AddSP_Resp GNS为服务器端 GNS对AddSP命令的应答
ModifySP GNS为客户端 GNS通知SMG修改了一个SP
ModifySP_Resp GNS为服务器端 GNS对ModifySP命令的应答
DeleteSP GNS为客户端 GNS通知SMG删除了一个SP
DeleteSP_Resp GNS为服务器端 GNS对DeleteSP命令的应答
AddTeleSeg GNS为客户端 GNS通知SMG添加了一个号码段
AddTeleSeg_Resp GNS为服务器端 GNS对AddTeleSeg命令的应答
ModifyTeleSeg GNS为客户端 GNS通知SMG修改了一个号码段
ModifyTeleSeg_Resp GNS为服务器端 GNS对ModifyTeleSeg命令的应答
DeleteTeleSeg GNS为客户端 GNS通知SMG删除了一个号码段
DeleteTeleSeg_Resp GNS为服务器端 GNS对DeleteTeleSeg命令的应答
AddSMG GNS为客户端 GNS通知SMG添加了一个SMG
AddSMG_Resp GNS为服务器端 GNS对AddSMG命令的应答
ModifySMG GNS为客户端 GNS通知SMG修改了一个SMG
ModifySMG_Resp GNS为服务器端 GNS对ModifySMG命令的应答
DeleteSMG GNS为客户端 GNS通知SMG删除了一个SMG
DeleteSMG_Resp GNS为服务器端 GNS对DeleteSMG命令的应答
表3-8从GNS到SMG的消息
4 消息定义
系统中的消息分三种:基于HTTP的消息、基于TCP/IP的消息和鉴权消息,系统中每个消息包最大不超过2K字节。
4.1基于通用HTTP的消息定义
HTTP客户端采用POST方法向服务器端发送请求,服务器端返回应答。
HTTP请求和响应的格式如下(请参照附录三):
格式 说明
<HTTP Header>
<参数1名称>=<参数1值>
<参数2名称>=<参数2值>
<参数3名称>=<参数3值>
. . .
HTTP协议头和内容之间必须有一个空行
如果HTTP通信出错(比如所请求的URL不存在),则没有内容部分
每个参数占一行,所有的参数名称和参数值都为文本类型
每行都要以回车/换行结束
表4-1 HTTP的消息格式
4.1.1Submit操作
在SP和SMG的通信中,SP用Submit命令向SMG提交MT短消息,SMG返回响应。
4.1.1.1Submit命令的请求内容
参数名称 说明
CommandId* 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
SPNumber SP的接入号码,字符
ChargeNumber 付费号码,字符,手机号码前加“86”国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串“000000000000000000000”,表示该条短消息产生的费用由SP支付。
UserNumber 一个或多个接收该短消息的手机号,手机号之间用逗号(,)隔开,字符,手机号码前加“86”国别标志,如8613001125453,8613001132345
CorpId 企业代码,取值范围0-99999,字符
ServiceType 业务代码,由SP定义,字符
FeeType* 计费类型,字符
FeeValue 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义,字符
对于包月制收费的用户,该值为月租费的值
GivenValue 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费,字符
AgentFlag 代收费标志,0:应收;1:实收,字符
MorelatetoMTFlag 引起MT消息的原因
0-MO点播引起的第一条MT消息;
1-MO点播引起的非第一条MT消息;
2-非MO点播引起的MT消息;
3-系统反馈引起的MT消息。
字符
Priority 优先级0-9从低到高,默认为0,十六进制数字
ExpireTime 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为“yymmddhhmmsstnnp”,其中“tnnp”取固定值“032+”,即默认系统为北京时间
ScheduleTime 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp”,其中“tnnp”取固定值“032+”,即默认系统为北京时间
ReportFlag 状态报告标记
0-该条消息只有最后出错时要返回状态报告
1-该条消息无论最后是否成功都要返回状态报告
2-该条消息不需要返回状态报告
3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告
其它-保留
缺省设置为0,十六进制数字
MessageType 信息类型:
0-短消息信息
其它:待定
十六进制数字
TP_pid GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
十六进制数字
TP_udhi GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
十六进制数字
MessageCoding 短消息的编码格式。
0:纯ASCII字符串
3:写卡操作
4:二进制编码
8:UCS2编码
15:GBK编码
其它参见GSM3.38第4节:SMS Data Coding Scheme
十六进制数字
MessageContent 短消息的内容,十六进制数字
Reserve 保留,扩展用
*注1:消息ID定义在5.1中;
*注2:计费类型定义在5.3中。
表4-2 Submit命令的请求格式
4.1.1.2Submit命令的应答内容
字段 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
Result Submit命令是否成功接收。十六进制数字
0:接收成功
其它:错误码*
Reserve 保留,扩展用
*注:错误码定义在5.2中
表4-3 Submit命令的应答格式
4.1.2Deliver操作
在SP和SMG的通信中,SMG用Deliver命向SP发送一条MO短消息。SMG接收到Deliver命令,会返回Deliver_Resp应答。SMG根据Deliver命令中目的特服号,判断出该服务属于和哪一个SMG相连接的SP,如果属于本地SP,则直接发送到SP,否则路由至相应的SMG。
4.1.2.1Deliver命令的请求内容
参数名称 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
UserNumber 发送该短消息的手机号,字符,手机号码前加“86”国别标志
SPNumber 接收该短消息的SP的接入号码,字符
TP_pid GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
十六进制数字
TP_udhi GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
十六进制数字
MessageCoding 短消息的编码格式。
0:纯ASCII字符串
3:写卡操作
4:二进制编码
8:UCS2编码
15:GBK编码
其它参见GSM3.38第4节:SMS Data Coding Scheme
十六进制数字
MessageContent 短消息的内容,十六进制数字
Reserve 保留,扩展用
表4-4 Deliver命令的请求格式
4.1.2.2Deliver命令的应答内容
字段 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
Result Deliver命令是否成功接收。十六进制数字
0:接收成功
其它:错误码
Reserve 保留,扩展用
表4-5 Deliver命令的应答格式
4.1.3Report操作
Report命令用于向SP发送一条先前的Submit命令的当前状态。
4.1.3.1Report命令的请求内容
参数名称 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
SubmitSequenceNumber 该命令所涉及的Submit或deliver命令的序列号,十六进制数字
ReportType Report命令类型
0:对先前一条Submit命令的状态报告
1:对先前一条前转Deliver命令的状态报告,十六进制数字
UserNumber 接收该短消息的手机号,字符,手机号码前加“86”国别标志
State* 该命令所涉及的短消息的当前执行状态
0:发送成功
1:等待发送
2:发送失败
十六进制数字
ErrorCode 当State=2时为错误码值,否则为0,十六进制数字
Reserve 保留,扩展用
表4-6 Report命令的请求格式
*注:当report反馈的是短消息中心的状态报告时,state的三种状态与短消息状态报告中的状态的对应关系见5.4 report状态与短消息状态的映射。
4.1.3.2Report命令的应答内容
字段 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
Result Report命令是否成功接收。十六进制数字
0:接收成功
其它:错误码
Reserve 保留,扩展用
表4-7 Report命令的应答格式
4.1.4UserRpt操作
UserRpt命令用于在完成对用户鉴权后,由SMG向手机用户所注册的SP发送命令,对手机用户进行状态配置。
4.1.4.1UserRpt命令的请求内容
参数名称 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
SPNumber SP的接入号码,字符
UserNumber 待配置的手机号码,字符,手机号码前加“86”国别标志
UserCondition 十六进制数,0:注销;1:欠费停机;2:恢复正常
Reserve 保留,扩展用
表4-8 UserRpt命令的请求格式
4.1.4.2UserRpt命令的应答内容
参数名称 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
Result UserRpt命令执行结果
0:成功
其它:错误码
Reserve 保留,扩展用
表4-9 UserRpt命令的应答格式
4.1.5Trace操作
Trace命令用于向SMG请求跟踪某一条MT短消息的状态。
4.1.5.1Trace命令的请求内容
参数名称 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
SubmitSequenceNumber 被跟踪MT短消息的命令序列号,十六进制数字
UserNumber 被跟踪MT短消息的目的手机号,字符,手机号码前加“86”国别标志
Reserve 保留,扩展用
表4-10 Trace命令的请求格式
4.1.5.2Trace命令的应答内容
字段 说明
CommandId 命令ID,十六进制数字
SequenceNumber 序列号,十六进制数字
Count 被跟踪MT短消息经过的节点个数,当被跟踪短消息经过多个节点时,以下各个字段可重复
Result Trace命令在该节点是否成功接收。十六进制数字
0:接收成功
1:等待处理
其它:错误码
NodeId 节点编号,字符
ReceiveTime 被跟踪的短消息到达该节点时刻,格式为“yymmddhhmmss”
SendTime 该节点发出被跟踪的短消息时刻,格式为“yymmddhhmmss”
Reserve 保留,扩展用,当被跟踪短消息经过多个节点时,以上各个字段可重复
表4-11 Trace命令的应答格式
4.2基于专用SGIP的消息定义
专用SGIP协议中定义的消息由消息头和消息体组成。
项目 说明
消息头 消息头部分
消息体 消息体部分
表4-12消息的组成
4.2.1数据类型
消息中利用到如下数据类型
类型 说明
Integer 无符号整数
Text 定长字符串,左对齐存储,空余位置补’/0’
表4-13消息的数据类型
消息中的所有Integer类型的字段均采用网络字节顺序。所有消息中的序列号字段均占12个字节,分为3个4字节整数;通信传输时每个整数都使用网络字节顺序,但整数的次序并不改变。也就是说,通信传输的时候,序列号字段应该按照三个连续的4字节整数来处理。
4.2.2消息头的格式
字段 长度(字节) 类型 说明
Message Length 4 Integer 消息的总长度(字节)
Command ID 4 Integer 命令ID
Sequence Number 12 Integer 序列号
表4-14消息头的格式
4.2.3消息体的格式
4.2.3.1Bind操作
Bind操作由Bind命令和Bind_Resp应答组成。客户端首先发送Bind命令,服务器端收到Bind命令后,对命令发送方进行验证,然后返回Bind_Resp应答。
4.2.3.1.1Bind命令的语法
字段 长度(字节) 类型 说明
Login Type 1 Integer 登录类型。
1:SP向SMG建立的连接,用于发送命令
2:SMG向SP建立的连接,用于发送命令
3:SMG之间建立的连接,用于转发命令
4:SMG向GNS建立的连接,用于路由表的检索和维护
5:GNS向SMG建立的连接,用于路由表的更新
6:主备GNS之间建立的连接,用于主备路由表的一致性
11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试
其它:保留
Login Name 16 Text 服务器端给客户端分配的登录名
Login Passowrd 16 Text 服务器端和Login Name对应的密码
Reserve 8 Text 保留,扩展用
表4-15 Bind消息格式
4.2.3.1.2Bind_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer Bind执行命令是否成功。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-16 Bind_Resp消息格式
4.2.3.2Unbind操作
Unbind操作由Unbind命令和Unbind_Resp应答组成。通信连接建立以后,客户端如果要停止通信,需要发送Unbind命令;服务器端收到Unbind命令后,向客户端发送Unbind_Resp相应,然后双方断开连接。
4.2.3.2.1Unbind命令的语法
Unbind命令没有消息体。
4.2.3.2.2Unbind_Resp应答的语法
Unbind_Resp应答没有消息体。
4.2.3.3Submit操作
在SP和SMG的通信中,SP用Submit命令向SMG提交MT短消息,发送到用户的手机中。SMG接收到Submit命令,会返回Submit_Resp应答。SMG根据Submit命令中的付费号码,判断出该命令是否应从本地SMSC发送,如果属于本地发送,则直接发送到相应的SMSC,否则路由至相应的SMG。
在SMG和SMG的通信中,Submit命令用于SMG客户端向服务器端路由从SP收到的MT短消息。服务器端接收到Submit命令后,再发送到与之相连的目的SMSC。
4.2.3.3.1Submit命令的语法
字段 长度(字节) 类型 说明
SPNumber 21 Text SP的接入号码
ChargeNumber 21 Text 付费号码,手机号码前加“86”国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串“000000000000000000000”,表示该条短消息产生的费用由SP支付。
UserCount 1 Integer 接收短消息的手机数量,取值范围1至100
UserNumber 21 Text 接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加“86”国别标志
… … … …
CorpId 5 Text 企业代码,取值范围0-99999
ServiceType 10 Text 业务代码,由SP定义
FeeType 1 Integer 计费类型
FeeValue 6 Text 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义
对于包月制收费的用户,该值为月租费的值
GivenValue 6 Text 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费
AgentFlag 1 Integer 代收费标志,0:应收;1:实收
MorelatetoMTFlag 1 Integer 引起MT消息的原因
0-MO点播引起的第一条MT消息;
1-MO点播引起的非第一条MT消息;
2-非MO点播引起的MT消息;
3-系统反馈引起的MT消息。
Priority 1 Integer 优先级0-9从低到高,默认为0
ExpireTime 16 Text 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为”yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间
ScheduleTime 16 Text 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间
ReportFlag 1 Integer 状态报告标记
0-该条消息只有最后出错时要返回状态报告
1-该条消息无论最后是否成功都要返回状态报告
2-该条消息不需要返回状态报告
3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告
其它-保留
缺省设置为0
TP_pid 1 Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
TP_udhi 1 Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
MessageCoding 1 Integer 短消息的编码格式。
0:纯ASCII字符串
3:写卡操作
4:二进制编码
8:UCS2编码
15: GBK编码
其它参见GSM3.38第4节:SMS Data Coding Scheme
MessageType 1 Integer 信息类型:
0-短消息信息
其它:待定
MessageLength 4 Integer 短消息的长度
MessageContent Message Length Text 短消息的内容
Reserve 8 Text 保留,扩展用
表4-17 Submit消息格式
4.2.3.3.2Submit_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer Submit命令是否成功接收。
0:接收成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-18 Submit_Resp消息格式
4.2.3.4Deliver操作
在SP和SMG的通信中,SMG用Deliver命令向SP发送一条MO短消息。SP接收到Deliver命令,会返回Deliver_Resp应答。SMG根据Deliver命令中目的特服号,判断出该服务属于和哪一个SMG相连接的SP,如果属于本地SP,则直接发送到SP,否则路由至相应的SMG。
在SMG和SMG的通信中,Deliver命令用于SMG客户端向服务器端路由MO短消息。服务器端接收到Deliver命令后,再发送到与之相连的目的SP。
4.2.3.4.1Deliver命令的语法
字段 长度(字节) 类型 说明
UserNumber 21 Text 发送短消息的用户手机号,手机号码前加“86”国别标志
SPNumber 21 Text SP的接入号码
TP_pid 1 Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
TP_udhi 1 Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
MessageCoding 1 Integer 短消息的编码格式。
0:纯ASCII字符串
3:写卡操作
4:二进制编码
8:UCS2编码
15: GBK编码
其它参见GSM3.38第4节:SMS Data Coding Scheme
MessageLength 4 Integer 短消息的长度
MessageContent Message Length Text 短消息的内容
Reserve 8 Text 保留,扩展用
表4-19 Deliver消息格式
4.2.3.4.2Deliver_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer Deliver命令是否成功接收。
0:接收成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-20 Del.iver_Resp消息格式
4.2.3.5Report操作
Report命令用于向SP发送一条先前的Submit命令的当前状态,或者用于向前转SMG发送一条先前的Deliver命令的当前状态。Report命令的接收方需要向发送方返回Report_Resp命令。
4.2.3.5.1Report命令的语法
字段 长度(字节) 类型 说明
SubmitSequenceNumber 12 Integer 该命令所涉及的Submit或deliver命令的序列号
ReportType 1 Integer Report命令类型
0:对先前一条Submit命令的状态报告
1:对先前一条前转Deliver命令的状态报告
UserNumber 21 Text 接收短消息的手机号,手机号码前加“86”国别标志
State 1 Integer 该命令所涉及的短消息的当前执行状态
0:发送成功
1:等待发送
2:发送失败
ErrorCode 1 Integer 当State=2时为错误码值,否则为0
Reserve 8 Text 保留,扩展用
表4-21 Report消息格式
4.2.3.5.2Report_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer Report命令是否成功接收。
0:接收成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-22 Report_Resp消息格式
4.2.3.6AddSP操作
AddSP操作用于在SMG和GNS之间通知添加了一个SP。
4.2.3.6.1AddSP命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text SP所在SMG的节点编号
SPNumber 21 Text SP的接入号码
ServiceTag 10 Text 业务代码,该字段为空时不考虑服务特征串
CorpId 5 Text 企业代码,取值范围0-99999
Reserve 8 Text 保留,扩展用
表4-23 AddSP消息格式
4.2.3.6.2AddSP_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer AddSP命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-24 AddSP_Resp消息格式
4.2.3.7ModifySP操作
ModifySP操作用于在SMG和GNS之间通知修改了一个SP的接入号码。
4.2.3.7.1ModifySP命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text SP所在SMG的节点编号
OldSPNumber 21 Text SP的原接入号码
OldServiceTag 10 Text 业务代码,该字段为空时不考虑服务特征串
NewSPNumber 21 Text SP的新接入号码
NewServiceTag 10 Text 业务代码,该字段为空时不考虑服务特征串
CorpId 5 Text SP新的企业代码,可以不变
Reserve 8 Text 保留,扩展用
表4-25 ModifySP消息格式
4.2.3.7.2ModifySP_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer ModifySP命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-26 ModifySP_Resp消息格式
4.2.3.8DeleteSP操作
DeleteSP操作用于在SMG和GNS之间通知删除了一个SP的接入号码。
4.2.3.8.1DeleteSP命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text SP所在SMG的节点编号
SPNumber 21 Text SP的接入号码
ServiceTag 10 Text 业务代码,该字段为空时不考虑服务特征串
Reserve 8 Text 保留,扩展用
表4-27 DeleteSP消息格式
4.2.3.8.2DeleteSP_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer DeleteSP命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-28 DeleteSP_Resp消息格式
4.2.3.9QueryRoute操作
QueryRoute操作用于在SMG向GNS请求一条或全部路由信息。
4.2.3.9.1QueryRoute命令的语法
字段 长度(字节) 类型 说明
QueryType 1 Integer 请求类型
0- 全部路由表信息
1- 根据SP接入号码查找SMG
2- 根据手机号码段查找SMG
3- 根据SP接入号码和业务代码查找SMG
4- 根据SMG节点编号查找该SMG所对应全部路由信息
Number 21 Text 请求类型为
0-忽略
1和3-SP接入号码
2-手机号码段
4-SMG节点编号
左对齐,剩余部分填’/0’
ServiceTag 10 Text 业务代码,该字段为空时不考虑业务代码,请求类型为0、1、2时,该字段无效。
Reserve 8 Text 保留,扩展用
表4-29 QueryRoute消息格式
4.2.3.9.2QueryRoute_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer QueryRoute命令是否成功执行。
0:执行成功
其它:错误码
Count 4 Integer 返回路由表项的个数(>=1),如果大于1,则以下字段(包括Reserve字段)重复出现
Type 1 Integer 表项类型
1-Number为SP接入号码
2-Number为手机号码段
Number 21 Text SP接入号码或手机号码段
Mark 10 Text SP业务代码或手机用户类型
当Type为1时,可表示SP业务代码,该字段为空则不考虑业务代码;当Type为2时,表示手机用户类型;
Code 5 Text SP企业代码或号段所在地区长途区号
左对齐,剩余部分填’/0’
SMGId 6 Text SMG 节点编号
SMGIP 4 Integer SMG IP地址号
LoginUser 16 Text SMG的登录用户名
Password 16 Text SMG的登录密码
Reserve 8 Text 保留,扩展用
表4-30 QueryRoute_Resp消息格式
QueryRoute_Resp每次最多返回20条路由信息,当全部路由信息超过20条时,GNS对路由信息分包传送,并在传送完所有路由信息后发送一个空包(包体为空)表明应答结束。
4.2.3.10AddTeleSeg操作
AddTeleSeg操作用于在GNS向SMG通知添加了一个号码段。
4.2.3.10.1AddTeleSeg命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text 号码段所在SMG的节点编号
TeleSeg 7 Text 手机号码段
TeleType 1 Text 用户类型;0:签约用户,1:如意通
AreaCode 4 Text 号段所在地区长途区号
Reserve 8 Text 保留,扩展用
表4-31 AddTeleSeg消息格式
4.2.3.10.2AddTeleSeg_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer AddTeleSeg命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-32 AddTeleSeg_Resp消息格式
4.2.3.11ModifyTeleSeg操作
ModifyTeleSeg操作用于在GNS向SMG通知修改了一个号码段。
4.2.3.11.1ModifyTeleSeg命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text 号码段所在SMG的节点编号
OldTeleSeg 7 Text 原号码段
NewTeleSeg 7 Text 新号码段
NewTeleType 1 Text 新号段用户类型;0:签约用户,1:如意通
NewAreaCode 4 Text 新号段所在地区长途区号,可以不变
Reserve 8 Text 保留,扩展用
表4-33 ModifyTeleSeg消息格式
4.2.3.11.2ModifyTeleSeg_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer ModifyTeleSeg命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-34 ModifyTeleSeg_Resp消息格式
4.2.3.12DeleteTeleSeg操作
DeleteTeleSeg操作用于在GNS通知SMG删除了一个号码段。
4.2.3.12.1DeleteTeleSeg命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text 号码段所在SMG的节点编号
TeleSeg 7 Text 号码段
Reserve 8 Text 保留,扩展用
表4-35 DeleteTeleSeg消息格式
4.2.3.12.2DeleteTeleSeg_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer DeleteTeleSeg命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-37 DeleteTeleSeg_Resp消息格式
4.2.3.13AddSMG操作
4.2.3.13.1AddSMG命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text 新增SMG的节点编号
SMGIP 4 Integer SMG IP地址号
LoginName 16 Text 服务器端为SMG分配的登录名
LoginPassowrd 16 Text 服务器端和LoginName对应的密码
Reserve 8 Text 保留,扩展用
表4-38 AddSMG消息格式
4.2.3.13.2AddSMG_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer AddSMG命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-39 AddSMG_Resp消息格式
4.2.3.14ModifySMG操作
4.2.3.14.1ModifySMG命令的语法
字段 长度(字节) 类型 说明
OldSMGId 6 Text 被修改的SMG的原节点编号
NewSMGId 6 Text 被修改的SMG的新节点编号
SMGIP 4 Integer SMG新的IP地址号
LoginName 16 Text 服务器端为SMG分配的登录名
LoginPassowrd 16 Text 服务器端和LoginName对应的密码
Reserve 8 Text 保留,扩展用
表4-40 ModifySMG消息格式
4.2.3.14.2ModifySMG_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer ModifySMG命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-41 ModifySMG_Resp消息格式
4.2.3.15DeleteSMG操作
4.2.3.15.1DeleteSMG命令的语法
字段 长度(字节) 类型 说明
SMGId 6 Text 被删除的SMG的节点编号
Reserve 8 Text 保留,扩展用
表4-42 DeleteSMG消息格式
4.2.3.15.2DeleteSMG_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer DeleteSMG命令是否成功执行。
0:执行成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-43 DeleteSMG_Resp消息格式
4.3鉴权消息定义
鉴权消息用于SMG向计费中心请求对一个手机用户进行鉴权。鉴权操作由CheckUser命令和CheckUser_Resp应答组成。UserRpt命令和UserRpt_Resp应答用于完成对用户鉴权后,由SMG向手机用户所注册的SP发送命令,对手机用户进行状态配置。
4.3.1CheckUser命令的语法
字段 长度(字节) 类型 说明
UserName 16 Text 计费中心给SMG分配的用户名
Passowrd 16 Text 和用户名对应的密码
UserNumber 21 Text 待鉴权的手机号码,手机号码前加“86”国别标志
Reserve 8 Text 保留,扩展用
表4-44 CheckUser消息格式
4.3.2CheckUser_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer 鉴权结果
0:鉴权成功
其它:错误码
Status 1 Integer 用户状态
0:注销;1:欠费停机;2:正常
Reserve 8 Text 保留,扩展用
表4-45 CheckUser_Resp消息格式
4.3.3UserRpt命令的语法
字段 长度(字节) 类型 说明
SPNumber 21 Text SP的接入号码
UserNumber 21 Text 待配置的手机号码,手机号码前加“86”国别标志
UserCondition 1 Integer 0:注销;1:欠费停机;2:恢复正常
Reserve 8 Text 保留,扩展用
表4-46 UserRpt消息格式
4.3.4UserRpt_Resp应答的语法
字段 长度(字节) 类型 说明
Result 1 Integer UserRpt命令执行结果
0:成功
其它:错误码
Reserve 8 Text 保留,扩展用
表4-47 UserRpt_Resp消息格式
4.4测试消息定义
测试消息用于向SMG请求跟踪查询某一条MT短消息的状态。测试操作由Trace命令和Trace_Resp应答组成,Trace_Resp应答的最大延迟时间为5分钟。测试操作通过测试端口进行通信。
4.4.1Trace命令的语法
字段 长度(字节) 类型 说明
SubmitSequenceNumber 12 Integer 被跟踪MT短消息的命令序列号
UserNumber 21 Text 被跟踪MT短消息的目的手机号,手机号码前加“86”国别标志
Reserve 8 Text 保留,扩展用
表4-48 Trace消息格式
4.4.2Trace_Resp应答的语法
字段 长度(字节) 类型 说明
Count 1 Integer 被跟踪MT短消息经过的节点个数,当被跟踪短消息经过多个节点时,以下各个字段可重复
Result 1 Integer Trace命令在该节点是否成功接收。十六进制数字
0:接收成功
1:等待处理
其它:错误码
NodeId 6 Text 节点编号
ReceiveTime 16 Text 被跟踪的短消息到达该节点时刻,格式为“yymmddhhmmss”
SendTime 16 Text 该节点发出被跟踪的短消息时刻,格式为“yymmddhhmmss”
Reserve 8 Text 保留,扩展用
表4-49 Trace_Resp消息格式
5常量定义
5.1消息ID定义
消息ID名称 消息ID取值
SGIP_BIND 0x1
SGIP_BIND_RESP 0x80000001
SGIP_UNBIND 0x2
SGIP_UNBIND_RESP 0x80000002
SGIP_SUBMIT 0x3
SGIP_SUBMIT_RESP 0x80000003
SGIP_DELIVER 0x4
SGIP_DELIVER_RESP 0x80000004
SGIP_REPORT 0x5
SGIP_REPORT_RESP 0x80000005
SGIP_ADDSP 0x6
SGIP_ADDSP_RESP 0x80000006
SGIP_MODIFYSP 0x7
SGIP_MODIFYSP_RESP 0x80000007
SGIP_DELETESP 0x8
SGIP_DELETESP_RESP 0x80000008
SGIP_QUERYROUTE 0x9
SGIP_QUERYROUTE_RESP 0x80000009
SGIP_ADDTELESEG 0xa
SGIP_ADDTELESEG_RESP 0x8000000a
SGIP_MODIFYTELESEG 0xb
SGIP_MODIFYTELESEG_RESP 0x8000000b
SGIP_DELETETELESEG 0xc
SGIP_DELETETELESEG_RESP 0x8000000c
SGIP_ADDSMG 0xd
SGIP_ADDSMG_RESP 0x8000000d
SGIP_MODIFYSMG 0xe
SGIP_MODIFYSMG_RESP 0x0000000e
SGIP_DELETESMG 0xf
SGIP_DELETESMG_RESP 0x8000000f
SGIP_CHECKUSER 0x10
SGIP_CHECKUSER_RESP 0x80000010
SGIP_USERRPT 0x11
SGIP_USERRPT_RESP 0x80000011
SGIP_TRACE 0x1000
SGIP_TRACE_RESP 0x80001000
表5-1 消息ID定义
5.2错误码定义
错误码 描述
0 无错误,命令正确接收
1 非法登录,如登录名、口令出错、登录名与口令不符等。
2 重复登录,如在同一TCP/IP连接中连续两次以上请求登录。
3 连接过多,指单个节点要求同时建立的连接数过多。
4 登录类型错,指bind命令中的logintype字段出错。
5 参数格式错,指命令中参数值与参数类型不符或与协议规定的范围不符。
6 非法手机号码,协议中所有手机号码字段出现非86130号码或手机号码前未加“86”时都应报错。
7 消息ID错
8 信息长度错
9 非法序列号,包括序列号重复、序列号格式错误等
10 非法操作GNS
11 节点忙,指本节点存储队列满或其他原因,暂时不能提供服务的情况
21 目的地址不可达,指路由表存在路由且消息路由正确但被路由的节点暂时不能提供服务的情况
22 路由错,指路由表存在路由但消息路由出错的情况,如转错SMG等
23 路由不存在,指消息路由的节点在路由表中不存在
24 计费号码无效,鉴权不成功时反馈的错误信息
25 用户不能通信(如不在服务区、未开机等情况)
26 手机内存不足
27 手机不支持短消息
28 手机接收短消息出现错误
29 不知道的用户
30 不提供此功能
31 非法设备
32 系统失败
33 短信中心队列满
其它 其它错误码(待定义)
表5-2 错误码定义
注:错误码1-20所指错误一般在各类命令的应答中用到,21-32所指错误一般在report命令中用到。
5.3计费类别定义
用户计费类别 描述
0 “短消息类型”为“发送”,对“计费用户号码”不计信息费,此类话单仅用于核减SP对称的信道费
1 对“计费用户号码”免费
2 对“计费用户号码”按条计信息费
3 对“计费用户号码”按包月收取信息费
4 对“计费用户号码”的收费是由SP实现
5.4Report 状态与短消息状态的映射
Report状态 短消息状态
0,发送成功 DELIVERED
1,等待发送 ENROUTE,ACCEPTED
2,发送失败 EXPIRED,DELETED,UNDELIVERABLE,UNKNOWN,REJECTED
附录1: 全网路由表的格式示范
全网路由表位于GNS,各个SMG都有一份拷贝。全网路由表用于根据号码段或SP接入号码查询到相应的SMG。
1. SMG定义表
字段名称 字段定义 说明
SMGID Text(6) SMG节点编号
SMG IP Integer(4) SMGIP地址
LoginUser Text(16) SMG的登录用户名
Password Text(16) SMG的登录密码
2. 号码段-SMG对应表
字段名称 字段定义 说明
TeleSeg Text(7) 号码段
TeleType Text(1) 用户类型;0:签约用户,1:如意通
AreaCode Text(4) 号段所在地区长途区号
SMGID Text(6) SMG节点编号
3. SP接入号-SMG对应表
字段名称 字段定义 说明
SPNumber Text(21) SP接入号码
ServiceTag Text(10) 业务代码,该字段为空时路由时不考虑服务特征串
SMGID Text(6) SMG节点编号
CorpId Text(5) SP企业代码
附录2: 本地路由表的格式示范
本地路由表位于各SMG,每个SMG的本地路由表的内容都不相同。本地路由表用于根据号码段或SP接入号码查询到相应的SMSC或SP。
1. SMSC定义表
字段名称 字段定义 说明
SMSCID Text(6) SMSC节点编号
SMSC IP Integer(4) SMSC IP地址
LoginName Text(16) SMG和SMSC连接时的登录名
Password Text(16) SMG和SMSC连接时的登录密码
2. 号码段-SMSC对应表
字段名称 字段定义 说明
TeleSeg Text(7) 号码段
TeleType Text(1) 用户类型;0:签约用户,1:如意通
AreaCode Text(4) 号段所在地区长途区号
SMSCID Text(6) SMSC节点编号
3. SP定义表
字段名称 字段定义 说明
SPNumber Text(21) SP接入号码
ServiceTag Text(10) 业务代码,该字段为空时路由时不考虑服务特征串
SPID Text(10) SP节点编号
SP IP Integer(4) SP IP地址
LoginName Text(16) SMG和SP连接时的登录名
Password Text(16) SMG和SP连接时的登录密码
CorpId Text(5) SP企业代码
附录3: HTTP承载方式示范
下面以Deliver操作为例说明HTTP承载方式的用法。
SMG向SP发送Deliver命令时,采用如下格式(假设SP提供的处理Deliver命令的URL为http://www.spserver.com/sp.cgi,该短消息是从节点号为205502的SMSC上接收下来的,接收时间为3月27日12时50分25秒,这是这一秒内收到的第327条短消息,短消息是由号码为8613001125453的手机发送的,SP的接入号码为168,且短消息的内容为ABCD 1234,返回短消息内容为EFGH 5678):
POST /sp.cgi HTTP/1.0
Host: www.spserver.com
Authorization: Basic <Base64 串>
Content-Length: <Content-Length>
<CommandId>=<4>
<SequenceNumber>=<205502327125025327>
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=<ABCD 1234>
SP收到请求后,返回应答表示SP成功接收该命令,同时返回MT信息
HTTP/1.0 200 OK
Date: Tue, 13 Mar 2001 02:45:12 GMT
Server: Apache/1.3.12 (Unix)
Content-Type: text/html
<CommandId>=<80000004>
<SequenceNumber>=<205502327125025327>
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=< EFGH 5678>Connection: close
<Result>=<0>