SMPP协议

SMPP协议
      
3.1SMPP规范简介
     SMPP接口协议最初由ETSI收录在 GSM03.39规范中,描述了短消息中心与短消息实体之间通信交互的协议关系及 数据传输格式,本规范 对SMPP接口协议的描述主要面向简单的通信交互,制定规范的厂家将其协议版本号定为V3.30;后由SMPP开发者论坛将协议版本向前演进为V3.40,SMPP V3.40协议规范完全兼容GSM 03.39协议标准。本规范中,所采用的短消息中心设备与短消息股票交易业务处理平台之间的接口采用GSM03.39 V3.30协议规范,如无特殊说明全部以此协议规范为准。 SMPP协议可以以TCP/IP或X . 25作为底层通讯承载。
        与SMPP协议规范相关的参考资料如下:
1、             GSM 03.39(Version 5.0.0) 》: European digital cellular telecommunications system(Phase 2);Interface protocols for the connection of Short Message Service Centres(SMSCs)to Short Message Entities(SMEs);
2、             GSM 03.39(Version 6.0.0) 》: European digital cellular telecommunications system(Phase 2+);Interface protocols for the connection of Short Message Service Centres(SMSCs)to Short Message Entities(SMEs);
3、             《GSM 03.40(Version 4.8.1):European digital cellular telecommunications system(Phase 2);Technical realization of the Short Message Service Point to Point》
4、           《GSM 03.38(Version 5.2.0):Digital cellular telecommunications system(Phase 2+);Alphabets and language_specific information》
5、             GSM 03.47(Version 5.0.0) Digital cellular telecommunications system;Example protocol stacks for interconnecting Service Center(SC) and Mobile_services Switching Center(s)(MSC)
6、             900/1800 MHz  数字蜂窝移动通信系统短消息中心设备规范(第一分册 点对点短消息业务)
 
       SME                 短消息实体
       SMPP              短消息点对点协议
       SMSC              短消息服务中心
       ESME              扩展短消息实体
 
 
3.2 系统结构、功能概述
        通过SMPP,ESME(例如寻呼台、语音邮箱系统、股票交易业务处理平台等)能连接( Bind )或断连( UnBind )短消息中心,提交( Submit )短消息或从短消息中心下发( Deliver )。
       此协议包含以下两部分:
              * (协议) ESME SMSC 的消息
           * (协议) SMSC 到扩展 ESME 的消息
        其中用户管理部分只适用于 SMSC 有用户数据库支持的情况
    SMSC ESME 之间的关系如下图所示:
      

图3-1:SMSC和ESME连接的短消息系统网络
3.3 消息协议
        按短消息信息的流向,可以将ESME与SMSC之间的短消息信息分为两类:1、从SMSC到ESME的消息;2、从ESME到SMSC的消息。对于所有请求消息,无论始发于 ESME 还是 SMSC ,都必须产生一个响应消息( acknowledge )。
        ESME SMSC 所提交的消息,可能有两种响应:
              *SMSC 收到消息的响应( ACK
              * 如果这条短消息设置了需要状态报告,那么当这条短消息到达目标地之后, SMSC 会产生一个状态报告的消息给 ESME
      
.1      SMSC到ESME的消息
       以下消息是从SMSC到ESME的消息
      
命令 描述
bind_receiver_resp bind_receiver的响应,status表示连接成功与否
bind_transmitter_resp bind_transmitter的响应,status表示连接成功与否
unbind_resp unbind的响应,status表示断开连接成功与否
submit_sm_resp submit_sm的响应,status表明提交短消息是否成功
deliver_sm SMSC下发短消息到ESME
enquire_link_resp Enquire_link的响应
generic_nak 表示消息头有错误的响应
   
 
.2      ESME到SMSC的消息
       以下为ESME到SMSC的消息
 
命令 描述
bind_receiver 短消息实体(ESME/SME)作为服务器与短消息中心(SMSC)建立连接,本连接建立起来后,允许短消息实体接受短消息中心下发的短消。
bind_transmitter 短消息实体(ESME/SME)作为客户端与短消息中心(SMSC)建立连接,本连接建立起来后,允许短消息实体向短消息中心提交短消息。
Unbind 短消息实体(ESME/SME)与短消息中心系统(SMSC)断开会话连接。
submit_sm ESME提交短消息到SMSC,以便SMSC下发此短消息到指定的移动台。
deliver_sm_resp deliver_sm的响应。status表示此次下发是否成功。
Enquire_link 短消息实体向短消息中心发起的连路保持查询请求,以保证通讯链路的畅通。一般情况下约每5秒发送一次ENQUIRE_LINK消息。
Generic_nak 表示消息头有错误的响应
 
 
      
3.4消息语法
3.4.1语法定义规则
        在以下语法说明中,遵从以下规则:
       A. 未使用的字段,依据类型必须设置为 0 NULL
       B. 消息由消息头和消息体组成
       C. 状态( status) 如在命令语法中未加说明          
0 :表示成功     
                                                  0 :表示失败
                                                 <0x80000000 :未定义值保留
       D.在类型中,可能用到以下定义
l       integer                 :一定字节数所组成的整数,高位在前,低位在后。例如:1字节(BYTE),2字节(WORD ) , 4字节(DWORD)。
l       C_String              :以NULL结束的ASCII字符串
l       C_DecString      :以NULL结束的ASCII字符串,它由一系列的10进制字符组成(‘0’---‘9’)。
l       C_OctetString    :由任意8位字节组成数据流串。
l       C_HexString       :以NULL结束的ASCII字符串,它由一系列的16进制字符组成(‘0’---‘9’,‘A’(‘a’)---‘F’(‘f’))
l       C_StringTime     :表示时间的字符串,它为以下格式                           “YYMMDDhhmmsstnnp" ,格式如下
 
说明
YY'
年份的最后2位 (00-99)
MM
月份(01-12)
DD
日 (01-31)
Hh
小时 (00-23)
Mm
分 (00-59)
Ss
秒 (00-59)
T
十分之一秒 (0-9)
Nn
与UTC (Universal Time Constant) 时间超前或落后的差距(00-48).
‘+’(p)
时间超前于UTC time.
‘-’(p)
时间落后于 UTC time.
 
l       C_UnicodeString     :Unicode编码的字符串。
 
3.4.消息头语法
字段
长度(字节)
类型
Command Length
4
Integer
Command ID
4
Integer
Command_status
4
Integer
Sequence No.
4
Integer
Optional Message Body
可变
混合
 
具体字段描述说明:
l         Command Length :整个包的长度(包括该字段本身)。
l         Command ID       :这个字段表明该条短消息的类型,相当于标识符。例如 ESME_SUB_SM 表示此消息为 ESME SMSC 提交短消息。当该标识符表示该条消息是请求消息( request )时,标识符的保留取值范围是 0h FFh 。当该标识符表示该条消息是应答消息( response )时 , 标识符的保留取值范围是 080000000h 0800000FFh 。一般来说,应答消息的类型对应相应的请求消息的类型,所不同的是,应答消息的类型在第 31 位比特处是置位的。
Command ID命令取值:
Command ID 编码 Command ID 描述
Command ID取值
ESME_BNDRCV
bind_receiver
ESME要求以接收者身份连接到SMSC
0X00000001
ESME_BNDRCV_RESP
bind_receiver_resp
bind_receiver的响应
0X80000001
ESME_BNDTRN
bind_transmitter
ESME要求以发送者身份连接到SMSC
0X00000002
ESME_BNDTRN_RESP
bind_transmitrer_resp
bind_transmitter的响应
0X80000002
ESME_UBD
Unbind
ESME要求断开连接到SMSC
0X00000006
ESME_UBD_RESP
Unbind_resp
Unbind的响应
0X80000006
ESME_SUB_SM
Submit_sm
ESME提交短消息到SMSC
0X00000004
ESME_SUB_SM_RESP
Submit_sm_resp
submit_sm的响应
0X80000004
SMSC_DELIVER_SM
Deliver_sm
SMSC下发短消息到ESME
0X00000005
SMSC_DELIVER_SM_RESP
Deliver_sm_resp
deliver_sm的响应
0X80000005
ESME_QRYLINK
Enquire_link
ESME询问与SMSC的连接情况
0X00000015
ESME_QRYLINK_RESP
Enquire_link_resp
enquire_link的响应
0X80000015
ESME_NACK
Nack
表示消息头有错误的响应
0X80000000
 
l         Command Status  :此字段表示一个请求消息的成功与失败,如失败,指示引起失败的错误类型等信息。该字段只用在应答消息中,在请求消息中,该字段必须为 NULL
        Command Status 取值说明  
错误代码 错误值 描述
E_SUCCESS
0X00000000
成功
E_OTHERERR
0X00000001
其他错误
0X00000002 – 0X0000000F
 
保留给SMSC厂商定义错误
E_MSGLENERR
0X00000010
消息长度错误
E_CMDLENERR
0X00000011
命令长度错误
E_INVLDCMDID
0X00000012
消息ID无效
E_NORIGHT(0X00000013)
0X00000013
没有执行此命令的权限
0X00000014 – 0X0000001F
 
保留
E_INVLDSYSTEMID
0X00000020
无效的SYSTEMID
E_INVLDPASSWORD
0X00000021
无效的密码
E_INVLDSYSTEMTYPE
0X00000022
无效的SYSTEMTYPE
0X00000023 – 0X0000003F
 
保留
E_ADDRERR
0X00000040
地址错误
E_MOEXCEED
0X00000041
超过最大提交数
E_MTEXCEED
0X00000042
超过最大下发数
E_INVLDUSER
0X00000043
无效的用户
E_INVLDDATAFMT
0X00000044
无效的数据格式
E_CREATEMSGFAILURE
0X00000045
创建消息失败
E_INVLDMSGID
0X00000046
无效的短消息ID
E_DATABASEFAILURE
0X00000047
数据库失败
E_CANCELMSGFAILURE
0X00000048
取消消息失败
E_MSGSTATEERR
0X00000049
短消息状态错误
E_REPLACEMSGFAILURE
0X0000004A
替换消息失败
E_INVLDRPLADDR
0X0000004B
替换消息源地址错误
0X0000004C – 0X0000005F
 
保留
E_INVLDORGTON
0X00000060
无效的源地址TON
E_INVLDORGNPI
0X00000061
无效的源地址NPI
E_ORGADDRERR
0X00000062
源地址错误
E_INVLDDESTTON
0X00000063
无效的目的地址TON
E_INVLDDESTNPI
0X00000064
无效的目的地址NPI
E_DESTADDRERR
0X00000065
目的地址错误
E_INVLDSCHEDULE
0X00000066
无效的定时时间
E_INVLDEXPIRE
0X00000067
无效的超时时间
E_INVLDESM
0X00000068
无效的ESM_CALSS
E_INVLDUDLEN
0X00000069
无效的UDLEN
E_INVLDPRI
0X0000006A
无效的PRI
E_INVLDRDF
0X0000006B
无效的Registered_delivery_flag
E_INVLDRPF
0X0000006C
无效的Replace_if_present_flag
0X0000006D – 0X0000007F
 
保留
用户管理部分(可选)
 
 
E_USERALREADYEXIST
0X00000080
指定用户已经存在
E_CREATEUSERERR
0X00000081
创建用户失败
E_USERIDERR
0X00000082
用户ID错误
E_USERNOTEXIST
0X00000083
指定用户不存在
0X00000084 – 0X0000008F
 
保留
0X00000090 – 0X00000FFF
 
保留给SMSC厂商定义错误
其他
 
保留
l         Sequence No   . 此字段表示消息的序列号,它由 ESME 产生,它是消息和它的应答之间的对应标志,数值在 01h 07FFFFFFFh 间。对于每条请求消息,该字段的取值必须保证严格单调递增,当序列号值达到最大值时,返回继续从 01h 开始。
l         Optional Message Body :此字段表示短消息的消息体部分,在移动股票交易应用中承载 STK 卡应用协议内容。
 
3.4.3各命令消息体具体格式
1、generic_Nak命令
此命令用于当接收消息头有错误的时候的响应,该响应只能由收到请求方发出。该命令只有消息头,没有消息体。
 
2、BIND_RECEIVER命令
在扩展短消息实体和短消息中心之间建立虚连接,接收SMSC转发的短消息。
字段
长度(字节)
类型
System_id 最大 16 C_String
Password 最大 9 C_String
System_type 最大 13 C_String
Interface_version 1 Integer
Addr_ton 1 Integer
Addr_npi 1 Integer
Address_range 最大 41 C_DecString
具体字段描述说明:
system_id             :该字段是系统登录到短消息中心所用的接口号。
Password             :该字段是系统登录到短消息中心所用的密码。
system_type         :该字段标明登录的接口类型。
interface_version   :该字段标明登录的接口版本号。
addr_ton              :该字段指明编码类型。如不需要,可设为NULL。取值说明:
              0       未知,当用户或网络不含关于编码方案的较早信息
              1       国际号码,
              2       国内号码
              3       网络特殊号码
              4       用户号码
              5       字符数字
              6       缩写号码
              7       保留
 addr_npi           :该字段指明编码方案。如不需要,可设为NULL。取值说明:
              0       未知
       1   ISDN或电话号码编码方案(E164/E163),对于任意实体SC,MSC或MS,都有效
              2       保留
              3       数据编码方案(X121)
              4       电报编码方案
              5-7     保留
              8       国内编码方案
              9       私有编码方案
              10     ERMES 编码方案(ETSI DE/PS 3 01-3)
              11-15  保留
address_range      :该字段用来给短消息指明路由,和将状态报告转发给ESME。如不需要,可设置为NULL。
3、BIND_RECEIVER_RESP语法
       此命令用于对MI_BIND_RECEIVER响应。
字段 大小(字节) 类型
System_id 最大 16 C_String
具体参数说明:
system_id         :该字段是系统登录到短消息中心所用的接口号。
 
在扩展短消息实体和短消息中心之间建立虚连接,扩展短消息实体能向SMSC提交短消息。此命令和BIND_RECEIVER的语法一样,只是在消息头里的Command_id为"bind_transmitter"。
 
5、BIND_TRANSMITTER_RESP命令
此命令和BIND_RECEIVER_RESP的语法一样,只是在消息头里的Command_id为"bind_transmitter_resp"。
 
6、UNBIND命令
此命令用于断开ESME和SMSC之间的连接。此消息只有消息头,没有消息体。
7、UNBIND_RESP命令
此消息只有消息头,没有消息体。
 
此命令用于用于ESME提交短消息到SMSC,以便SMSC把此短消息发给特定ESME。
字段 长度(字节) 类型
service_type 最大6 C_String
source_addr_ton 1 Integer
source_addr_npi 1 Integer
source_addr 最大21 C_DecString
dest_addr_ton 1 Integer
dest_addr_npi 1 Integer
destination_addr 最大21 C_DecString
esm_class 1 Integer
protocol ID 1 Integer
priority_flag 1 Integer
schedule_delivery_time 最大 17 C_StringTime
validity_period 最大 17 C_StringTime
registered_delivery_flag 1 Integer
replace_if_present_flag 1 Integer
data_coding 1 Integer
sm_default_msg_id 1 Integer
sm_length 1 Integer
short_message 最大160 C_String
具体参数说明 :
service_type        :保留字段,为将来扩展用。必须设为NULL。
source_addr_ton  :源地址编码类型,如不需要,可设为NULL。
source_addr_npi  :源地址编码方案,如不需要,可设为NULL。
source_addr      :提交该短消息的SME的地址。是提交的短消息的
                   源地址。如不需要,可设为NULL。
dest_addr_ton    :目的地址编码类型,如不需要,可设为NULL。
dest_addr_npi    :目的地址编码方案,如不需要,可设为NULL。
destination_addr :短消息的目的地址。对于移动终止的短消息来说,
                  它就是目的手机的MSISDN。如不需要,可设置为
                 NULL
esm_class        :该字短为短消息类型。对submit_sm消息来说,
                   该字段必须为NULL;对deliver_sm消息来说,该
                   字段表示这条消息是状态报告。该字段的具体解
                   释请参考后面的消息体参数说明。但 对于普通的
                  SUBMIT_SM 命令,此字段设为 0
      取值说明   :
              此字段的说明如下:
Bit 7 6 5 4 3 2 1 0
Flag Reserved UDHI Reserved Reserved Reserved
Delivery
Receipt
Reserved Reserved
           其中:
            UDHI :表示短消息内容是否有头结构。置位表示有。
            Delivery Receipt :在 DELIVER_SM 协议中使用,表示此条消息是否是状态报告。
        protocol ID        :GSM协议类型。详细是解释请参考GSM03.40中的
                        9.2.3.9
       priority_flag  :短消息的优先级。当设置了短消息为高优先级,
                         短消息中心会将该短消息移到同一目的地址的消
                         息队列的前端,优先进行发送。
              取值说明:
                0 :普通优先级(缺省值)
                 1 :高优先级
                >1 :保留。
  schedule_delivery_time :该字段表示计划下发该短消息的时间。
                          时间格式请参考前面定义的C_StringTime
                              的格式 如不需要,可设置为NULL。
 validity_period :该字段表示短消息的最后生存期限。时间格式请
                   参考前面定义的C_StringTime的格式 . 如不需要,
                   可设置为NULL。
 registered_delivery_flag :该字段是注册短消息标志,它表示当
                            短消息到达最后的目的地后,是否需
                            要状态报告。
                  取值说明:
                          0 :不需要
                         1 :需要
                        >1 :保留。
 replace_if_present_flag :该字段表示替换短消息标志。即当提交
                           的短消息的源地址和目的地址相同时,
                           是否替换存在的短消息。
                 取值说明:
                        0 :不替换
                           1 :替换
                       >1 :保留。
 data_coding        :该字段表示数据编码方案。
          取值说明 :
          0       缺省编码方案(7bit编码)
                4       二进制编码方案(8bit编码)
                8      UCS2 编码方案(GB13000)
                 其他   保留
sm_default_msg_id :该字段表示预定义短消息ID。该ID是短消息中
                    心管理者建立的预定义短消息表的索引。不想
                    发送预定义短消息时,该字段应设为NULL。预
                    定义短消息ID值从0x01到0x64。详细说明请参
                    考SMPP Applications Guide [9] - Default
                   Short Message
sm_length       :要发送的短消息数据内容的字节长度。
short_message  :该字段表示短消息数据内容。最大可到160字符。
                     只有sm_length中定义的字节长度可用。此字段的数据编码格式由data_coding决定。
9、SUBMIT_SM_RESP命令
字段 长度(字节) 类型
Message_id 最大9 C_HexString
具体参数说明:
         Message_id             :该字段表示短消息ID,由短消息中心产生,用于
                           以后查询及替换短消息用,或是表明状态报告所
                           对应的源消息。如果没有,该字段必须设为
                           NULL。
 
此命令由SMSC产生,SMSC通过此命令发送短消息到目的ESME,它也可用于发送DELIVERY RECEIPT消息。语法格式与SUBMIT_SM的语法消息体是相同的,只是在消息头中的Command_id是“deliver_sm"。
字段 长度(字节) 类型
service_type 最大6 C_String
source_addr_ton 1 Integer
source_addr_npi 1 Integer
source_addr 最大21 C_DecString
dest_addr_ton 1 Integer
dest_addr_npi 1 Integer
destination_addr 最大21 C_DecString
esm_class 1 Integer
protocol ID 1 Integer
priority_flag 1 Integer
schedule_delivery_time 最大 17 C_StringTime
validity_period 最大 17 C_StringTime
registered_delivery_flag 1 Integer
replace_if_present_flag 1 Integer
data_coding 1 Integer
sm_default_msg_id 1 Integer
sm_length 1 Integer
short_message 最大160 C_String
具体参数说明 :
service_type        :保留字段,为将来扩展用。必须设为NULL。
source_addr_ton  :源地址编码类型,如不需要,可设为NULL。
source_addr_npi  :源地址编码方案,如不需要,可设为NULL。
source_addr      :提交该短消息的SME的地址。是提交的短消息的
                   源地址。如不需要,可设为NULL。
dest_addr_ton    :目的地址编码类型,如不需要,可设为NULL。
dest_addr_npi    :目的地址编码方案,如不需要,可设为NULL。
destination_addr :短消息的目的地址。对于移动终止的短消息来说,
                  它就是目的手机的MSISDN。如不需要,可设置为
                 NULL
esm_class        :该字短为短消息类型。对submit_sm消息来说,
                   该字段必须为NULL;对deliver_sm消息来说,该
                   字段表示这条消息是状态报告。该字段的具体解
                   释请参考后面的消息体参数说明。但 对于普通的
                  SUBMIT_SM 命令,此字段设为 0
      取值说明   :
              此字段的说明如下:
Bit 7 6 5 4 3 2 1 0
Flag Reserved UDHI Reserved Reserved Reserved
Delivery
Receipt
Reserved Reserved
           其中:
            UDHI :表示短消息内容是否有头结构。置位表示有。
            Delivery Receipt :在 DELIVER_SM 协议中使用,表示此条消息是否是状态报告。
        protocol ID        :GSM协议类型。详细是解释请参考GSM03.40中的
                        9.2.3.9
       priority_flag  :短消息的优先级。当设置了短消息为高优先级,
                         短消息中心会将该短消息移到同一目的地址的消
                         息队列的前端,优先进行发送。
              取值说明:
                 0 :普通优先级(缺省值)
                 1 :高优先级
                >1 :保留。
  schedule_delivery_time :该字段表示计划下发该短消息的时间。
                          时间格式请参考前面定义的C_StringTime
                              的格式 如不需要,可设置为NULL。
 validity_period :该字段表示短消息的最后生存期限。时间格式请
                   参考前面定义的C_StringTime的格式 . 如不需要,
                   可设置为NULL。
 registered_delivery_flag :该字段是注册短消息标志,它表示当
                            短消息到达最后的目的地后,是否需
                            要状态报告。
                  取值说明:
                          0 :不需要
                         1 :需要
                        >1 :保留。
 replace_if_present_flag :该字段表示替换短消息标志。即当提交
                           的短消息的源地址和目的地址相同时,
                           是否替换存在的短消息。
                 取值说明:
                        0 :不替换
                           1 :替换
                       >1 :保留。
 data_coding        :该字段表示数据编码方案。
          取值说明 :
          0       缺省编码方案(7bit编码)
                4       二进制编码方案(8bit编码)
                8      UCS2 编码方案(GB13000)
                 其他   保留
sm_default_msg_id :该字段表示预定义短消息ID。该ID是短消息中
                    心管理者建立的预定义短消息表的索引。不想
                    发送预定义短消息时,该字段应设为NULL。预
                    定义短消息ID值从0x01到0x64。详细说明请参
                    考SMPP Applications Guide [9] - Default
                   Short Message
sm_length       :要发送的短消息数据内容的字节长度。
short_message  :该字段表示短消息数据内容。最大可到160字符。
                     只有sm_length中定义的字节长度可用。此字段的数据编码格式由data_coding决定。
 
11、DELIVER_SM_RESP语法
它的语法和SUBMIT_SM_RESP的语法消息体是一样的,只是在消息头中的Command_id是“deliver_sm_resp"。
 
此命令用于ESME确认和SMSC之间的连接。ESME发送一条ENQUIRE_LINK命令,SMSC响应一条ENQUIRE_LINK_ACK命令,表示ESME和SMSC之间的连接正常。此命令只有消息头,没有消息体。
13、ENQUIRE_LINK_RESP命令
此命令只有消息头,没有消息体。
 
3.4.4消息体参数说明
l         address     地址号码
l         address_range :地址范围   
l         data_coding :数据编码方案 , (  详见 GSM 03.40 [1]   9.2.3.10)
例如:
0 :缺省编码方案 (7 )
      4:英文编码方案(不被手机支持)
      8 UCS2 编码方案 ( 比如中文编码 )
l         dest_addr_npi :目的地址编码方案,同 npi
l         dest_addr_ton :目的地址编码类型,同 ton
l         destination_addr   目的地址,同 address
l         esm_class       短消息类型
此字段的说明如下:
Bit 7 6 5 4 3 2 1 0
Flag Reserved UDHI Reserved Reserved Reserved
Delivery
Receipt
Reserved Reserved
其中  UDHI  表示短消息内容是否有头结构。置位表示有。 Delivery Receipt ,在 DELIVER_SM 协议中使用,表示是否是此条消息是否是状态报告。
对于普通的 SUBMIT_SM 命令,此字段设为 0
l               final_date :短消息的生命期终止的实际时间,如果此短消息已从 SMSC 的等待发送队列中删除,即为删除时间,否则为 SMSC 当前的时间
l               GSM_code      GSM 错误码,参见 GSM 03.40 协议。
l               interface_version :用来描述 SMEI 协议的版本号
l               Message_id :短消息 ID ,它由 SMSC 设置。用于查询以及替换短消息等操作时使用。
l               Command Status :短消息当前的状态
l               npi :地址编码方案,(定义详见 GSM03.40[1] 9.1.2.5)
       例如:  1  表示 ISDN 电话编码计划
l         password         用来登录的密码
l         priority_flag :优先级
      1:高优先级
      0 :普通优先级
      >1 :保留
l         protocol_ID GSM 协议类型(定义详见 GSM03.40[1] 9.2.3.9)
l         registered_delivery_flag     注册短消息标志,它表示当此短消息到达最后的目的地后,是否需要        送达状态报告( DELIVERY RECEIPT )。
 0:不需要
 1:需要
 >1 :保留
l         replace_if_present_flag :替换标志,当存在的短消息的源地址和目的地址都相同时,是否替换存在的短消息。
 0:不替换
 1:替换
 >1 :保留
l         schedule_delivery_time      计划下发短消息的时间
l         service_type: 保留,必须设为 NULL
l         short_message      短消息数据内容。在 7bit 时,是 160 字符 ; 8bit 时,是 140 字符。
l               sm_default_msg_id       预定义短消息 ID ,不是预定义短消息时应设为 0 ,预定义短消息 ID 值从 0x01 0x64
l               sm_length         短消息的数据长度,以字节计算
l               source_addr :源地址编号,同 address
l               source_addr_npi     源地址编码方案,同 npi
l               source_addr_ton     源地址编码类型,同       ton
l               system_id :接口 ID ,用来描述虚拟连接的用户名
l               system_type :用来描述用户的类型
l               ton :地址编码类型,(定义详见 GSM03.40[1] 9.1.2.5)
       0             未知号码
      1             国际号码
      2             国内号码
      3             网络专用号码
      4             用户号码
      5             字母号码 ( 按照  GSM TS03.38 7-bit  缺省字母表编码 )
      6             缩写号码
      7             保留
l         validity_period :短消息的最后生存期限

 
3.3 SMPP协议流程
 

附录一:SMPP协议中注意的几个问题
 
1、             本规范的各消息的消息头中,对 Sequence No 字段,采用严格单调递增函数方式(( x1,y1 ,(x2,y2) 是二维函数空间任意两个坐标取值;当 x2-x1>0 时,函数 (y2-y1)/( x2-x1)>0 )进行计数;当序列号达到最大值时自动返回最小值起继续计数。
2、             BIND_RECEIVER_RESP 消息中, system_id 字段可以为 NULL
3、             在有 STK 卡的手机提交一加密的短消息到调度中心, DCS 4 (表示短消息内容是 8-bit 数据,是用户自定义的编码方案),短消息的内容由于经过加密,可能成为二进制的数据流,此时短消息中心应将该二进制的数据流完整的送到手机银行业务模块 ; 同样,如果是业务模块向短消息中心提交一加密的短消息,短消息的 DCS 4 ,内容是二进制的数据流,短消息中心应该将该数据流完整的送到手机或 ESME 上去。
4、             本规范   中, short_message 字段的类型定义根据 900/1800MHz TDMA 数字蜂窝移动通信网短消息中心设备规范书(第一分册 点对点短消息业务)》 进一步说明:
l         DCS=0 时,采用 OCTET 7-bit 编码方案, short_message 字段的类型是 C_String ,即是以 NULL 结束的 ASCII 字符串(文本),最大长度为 160 个字符; ESME 不做编解码工作,由短消息中心进行编解码工作;
l         DCS=4 时,是加密数据,二进制的数据流, short_message 字段的类型是 C_OctetString ,即是由任意 8 位字节组成的数据流串,最大长度为 140 字节;短消息中心进行透明传输,不做任何编解码工作,编解码工作由 SME/ESME 来完成;
l         DCS=8 时,采用的是 UCS2 编码方案, short_message 字段的类型是 C_UnicodeString ,即是 Unicode 编码的字符串,最大长度为 70 个字符。也就是说, short_message 字段中的内容在送往短消息中心前,已经按 UCS2 编码,短消息中心应支持汉字短消息业务的透明传输,即 UCS2 的编解码应由 SME/ESME 来完成。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值