wangchao.org
注册 | 登录 | 添加收藏 | 订阅该频道
 
商城汽车珠宝健康家饰女性王朝网络游戏互联网探索下载娱乐学院
 
数码 | 旅游 | 美容 | 母婴 | 家电 | 美食 | 景区 | 养生 | 手机 | 购车 | 首饰 | 美妆 | 装修 | 厨房 | 科普 | 动物 | 植物 |  | 百态 | 编程 | 商品 | 财经 | 信息 | 军事
  
 
当前位置: 王朝网络 >> other >> 短消息SMPP开发接口概要
 

短消息SMPP开发接口概要

字体: ||
  SMPP是一种通用的短信接口协议,本文摘录了能实现短信基本功能的内容。
  
  前言
  短消息中心(SMSC)可以与各种扩展短消息实体(ESME)配合工作,从而为移动用户提供丰富多采的功能。
  
  
  符号和缩略语
   ESME Agent
   External Short Message Entity Agent 扩展短消息实体代理
   ESME
   External Short Message Entity 扩展短消息实体
   PLMN
   Public Land Mobile Network 公共陆地移动网
   SMSC
   Short Message Service Center 短消息中心
   SMPP
   Short Message Peer to Peer 短消息点对点协议
   SS
   Secretary System 秘书台
   AS
   Auto System 自动台
   SMSC指短消息中心。
   ESME在本规范中指的是通过本规范规定的协议与SMSC通信,请求特定的短消息服务的功能实体。
   SS指人工话务接入并受理短消息服务请求的系统。
   AS指利用交互式语音技术受理短消息服务请求的系统。
   SS(秘书台)和AS(自动台)是典型的ESME。
  SMSC和ESME之间的传输网络可以是基于X.25, 或TCP/IP。
  
  
  ESME到SMSC的消息
  ESME到SMSC的消息,如:提交、查询、删除短消息等请求,ESME必须以TRANSMITTER类型连接到SMSC。
  图4描述了一个典型的TRANSMITTER类型的请求应答的示例。TRANSMITTER类型的ESME是以BIND_TRANCESMITTER连接到SMSC的ESME,此类型的ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答。
  ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。
  SMSC应该按照收到的请求顺序,给EMSE回响应。但是ESME必须能够处理没有按顺序的响应。
  
  
  SMSC到ESME的消息
  SMSC到ESME的消息,如:SMSC转发短消息到ESME,ESME必须以RECEIVER类型连接到SMSC。
  图5描述了一个典型的RECEIVER类型的ESME和SMSC之间的消息序列的示例。RECEIVER类型的ESME是以BIND_RECEIVER连接到SMSC的ESME,SMSC向此类ESME转发短消息,ESME向SMSC回应答。
  ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以SMSC可能在ESME没有回应答的情况下,发送发起多个deliver_sm请求到ESME。
  ESME应该按照收到的请求顺序,给SMSC返回响应。但是SMSC必须能够处理没有按顺序回的响应。
  
  
  消息流
  本规范中规定的所有协议,不管是从ESME到SMSC,还是从SMSC到ESME的消息,接收到请求的一方,都必须给请求方回一个应答消息(acknowledge)。
  
  
  消息语法
   在以下语法说明中,遵从以下规则:
   A.未使用的字段,依据类型必须设置为0或NULL。
   B.消息由消息头和消息体组成。
   C.状态(Command_status)的定义如表3所示。
  
  状态定义
   错误代码
   描述
   E_SUCCESS(0X00000000)
   成功
   E_OTHERERR(0X00000001)
   其他错误
   0X00000002 – 0X0000000F
   保留给SMSC厂商定义错误
   E_MSGLENERR(0X00000010)
   消息长度错误
   E_CMDLENERR(0X00000011)
   命令长度错误
   E_INVLDCMDID(0X00000012)
   消息ID无效
   E_NORIGHT(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厂商定义错误
   其他
   保留
  
  
  类型定义
   (1)integer:一定字节数所组成的整数,高位在前,低位在后。例 如:1字节(BYTE),2字节(WORD ) , 4字节 (DWORD) ,6字节等等。
   (2)C_String:以NULL结束的ASCII字符串。
  (3)C_DecString:以NULL结束的ASCII字符串,它由一系列的10进制字符 组成(‘0’---‘9’)。
   (4)C_OctetString:由任意8位字节组成数据流串。
   (5)C_HexString:以NULL结束的ASCII字符串,它由一系列的16进制字符组 成(‘0’---‘9’,‘A’(‘a’)---‘F’(‘f’))。
   (6)C_UnicodeString:以NULL结束的Unicode编码的字符串。
   (7)C_StringTime:表示时间的字符串,它为以下格式。“YYMMDDhhmmsstnnp" , 长度定为17个字节或1个字节,最后一个字节值必须为NULL,1个字节表示 使用缺省的时间定义(由短消息中心实现时具体设置),17个字节的具体格式 如下:
   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.
   对于千年问题,采用时间窗口的方法来解决,具体方法为YY>90解释为19YY;否则解释为20YY。
  
  
  消息头语法
  表4:短消息头语法
   字段
   长度(字节)
   类型
   描述
   Command_Length
   4
   integer
   消息包的长度,包括此字段
   Command_ID
   4
   integer
   这个字段表明此条短消息的类型,例如ESME_SUB_SM表示此消息为ESME向SMSC提交短消息。具体数值定义见附录A。
   Command_status
   4
   integer
   此字段表示一个命令的成功与失败,如失败,指示引起失败的错误类型等信息,它在请求中必须设为0。
   Sequence_No
   4
   integer
   此字段表示消息的序列号,它由ESME产生,它是消息和它的应答之间的对应标志,它的数值在0到0XFFFFFFFF间必须保证严格单调的递增,当达到0XFFFFFFFF时,从0开始下一循环。
   Optional Message Body
   可变
   混合
   此字段表示短消息的消息体部分,具体定义见6.5.2
  
  
  消息体语法
  以下几条命令实现后,就可以实现短消息的收发。
  
  BIND_RECEIVER命令
   此命令在扩展短消息实体和短消息中心之间产生虚连接,该连接支持所有的协议命令。
  BIND_RECEIVER语法
  消息头中的Command_ID是“bind_receiver"
  表5:BIND_RECEIVER语法
   字段
   长度(字节)
   类型
   描述
   system_id
   最大 16
   C_String
   接口ID
   password
   最大 9
   C_String
   密码
   system_type
   最大 13
   C_String
   接口类型
   Interface_version
   1
   integer
   接口版本号
   Ton
   1
   integer
   保留,应设置为0
   npi
   1
   integer
   保留,应设置为0
   address_range
   最大 41
   C_DecString
   保留,应设置为NULL
  
  BIND_RECEIVER_RESP语法
  消息头中的Command_ID 是“bind_receiver_resp"。
  表6:BIND_RECEIVER_RESP语法
   字段
   大小(字节)
   类型
   描述
   System_id
   最大 16
   C_String
   接口ID
  
  状态取值范围:
  E_SUCCESS
  E_OTHERERR
  E_CMDLENERR
  E_NORIGHT
  E_INVLDSYSTEMID
  E_INVLDPASSWORD
  E_INVLDSYSTEMTYPE
  E_INVLDIFVER
  
  
  UNBIND命令
  此命令用于断开ESME和SMSC之间的连接。
  UNBIND语法
  此消息只有消息头,没有消息体,消息头中的Command_ID是“unbind"。
  UNBIND_RESP语法
  此消息只有消息头,没有消息体,消息头中的Command_ID是“unbind_resp"。
  状态取值范围:
  E_SUCCESS
  E_OTHERERR
  E_CMDLENERR
  E_NORIGHT
  6.5.2.4 SUBMIT_SM命令
  此命令用于ESME提交短消息到SMSC,以便SMSC把此短消息发给特定的移动台。
  
  SUBMIT_SM语法
  消息头中的Command_ID是"submit_sm"
  表7:SUBMIT_SM语法
   字段
   长度(字节)
   类型
   描述
   service_type
   最大6
   C_OctetString
   保留,必须设为0
   source_address_ton
   1
   integer
   源地址编码类型
   source_address_npi
   1
   integer
   源地址编码方案
   source_address
   最大21
   C_DecString
   源地址
   dest_address_ton
   1
   integer
   目的地址编码类型
   dest_address_npi
   1
   integer
   目的地址编码方案
   destination_address
   最大21
   C_DecString
   目的地址
   esm_class
   1
   integer
   短消息类型
   protocol_ID
   1
   integer
   GSM协议类型
   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
   预定义短消息ID
   sm_length
   1
   integer
   短消息的长度
   short_message_text
   最大161
   可变
   短消息数据内容
  
  
  SUBMIT_SM_RESP语法
  消息头中的Command_ID是"submit_sm_resp"
  表8:SUBMIT_SM_RESP语法
   字段
   长度(字节)
   类型
   描述
   Message_id
   最大9
   C_HexString
   短消息ID
  状态取值范围:
  E_SUCCESS
  E_OTHERERR
  E_CMDLENERR
  E_NORIGHT
  
  E_ADDRERR
  E_MOEXCEED
  E_MTEXCEED
  E_INVLDUSER
  E_INVLDDATAFMT
  E_CREATEMSGFAILURE
  E_INVLDORGTON
  E_INVLDORGNPI
  E_ORGADDRERR
  E_INVLDDESTTON
  E_INVLDDESTNPI
  E_DESTADDRERR
  E_INVLDSCHEDULE
  E_INVLDEXPIRE
  E_INVLDESM
  E_INVLDUDLEN
  E_INVLDPRI
  E_INVLDRDF
  E_INVLDRPF
  
  DELIVER_SM命令
  此命令由SMSC产生,SMSC通过此命令发送短消息到目的ESME,它也可用于发送转发状态报告(DELIVERY RECEIPT)消息。
  DELIVER_SM语法
  它的语法和SUBMIT_SM的语法消息体是相同的,只是在消息头中的Command_ID是“deliver_sm"。
  DELIVER_SM_RESP语法
  它的语法和SUBMIT_SM_RESP的语法消息体是一样的,只是在消息头中的Command_ID是“deliver_sm_resp"。
  
  
  附:消息体参数说明
   address:
   地址号码
  
   address_range
   地址范围
  
   data_coding:
   数据编码方案, ( 详见GSM 03.40 [1] 9.2.3.10)
  
   dest_address_npi:
   目的地址编码方案,同npi
  
   dest_address_ton:
   目的地址编码类型,同ton
  
   destination_address:
   目的地址,同address
  
   esm_class:
   短消息类型
   Bit:
   7
   6
   5
   4
   3
   2
   1
   0
   Flag:
   Reserved
   UDHI
   Reserved
   Delivery
  RCPT
   Reserved
  
  其中UDHI为1表示短消息内容中有头结构,为0表示没有头结构。
  Delivery RCPT为1表示是此条短消息是状态报告,0表示为正常的下发短消息。此位只对DELIVER_SM有效。
  其他为保留。
  
  如果有头结构,short_message_text为以下格式:
  {
   BYTE UDHL; //信息元素的结构集合所用的字节数
   Information?Element-struct Information?Element;
   //若干信息元素的结构集合, 其占用的字节数目由UDHL指示
   ...
   SM; 短消息内容
  }
  其中Information?Element-struct的结构如下:
  {
   BYTE Information?Element?Identifier // 信息元素的标志
   BYTE Length of Information?Element //信息元素数据所用的字节数
   Information?Element Data
  //信息元素数据,其占用的字节数目由Length of Information?Element指示
  }
  
  定义详见GSM 03.40 (7.2.0) 9.2.3.24
  
   final_date:
   短消息的生命期终止的实际时间,如果此短消息已从SMSC的等待发送队列中删除,即为删除时间,否则为SMSC当前的时间
  
   GSM_code:
   GSM错误码,见下表
  
   错误码
   值
   描述
   ERROR_NONE
   0
   无错误
   P_UNKNOWN
   1
   不知道的用户
   P_PROVISION
   2
   不提供此功能
   T_BARRED
   3
   呼叫废弃
   T_SUPPORT
   4
   此机制不支持
   T_ABSENT
   5
   用户不能通讯
   T_MSSUPPORT
   6
   移动台不支持短消息
   T_MSERROR
   7
   移动台接收短消息出现错误
   P_ILLEGAL_SUB
   8
   不合法的用户
   P_ILLEGAL_EQUIP
   9
   不合法的设备
   T_SYSTEM
   10
   系统失败
   T_MEMCAP
   11
   内存不足
  
   interface_version:
   用来描述本协议的版本号
  在ESME连接SMSC时,如果ESME提出的版本号高于SMSC的版本号,则SMSC给出否定响应,响应中的status表示SMSC的版本号;ESME提出的版本号低于或等于SMSC的版本号,则SMSC给出肯定响应,在连接成功后的会话过程中,双方将以ESME提出的版本号作为通信的依据。interface_version的值从1开始,0保留。
  现约定,对于interface_version>=1,必须支持除REPLACE_SM_EX命令和用户管理命令以外的所有协议命令, 对于interface_version>=2, 必须支持所有本文中提到的协议命令。
  
   message_id:
   短消息ID,它由SMSC设置。用于查询以及替换短消息等操作时使用。
  
   message_status:
   短消息当前的状态:
  0:转发状态
  1:发送成功(不在尝试转发)
  2:发送失败(不在尝试转发)
  3:因下发失败而等待(继续尝试转发)
  4:因定时消息而等待(继续尝试转发)
  5:短消息被删除(不在尝试转发)
  6:短消息超时删除(不在尝试转发)
  7:无效状态(不在尝试转发)
  8:EN_ROUTE,为兼容SMPP协议保留
  9:DELIVERED,为兼容SMPP协议保留
  10:EXPIRED,为兼容SMPP协议保留
  11:DELETED,为兼容SMPP协议保留
  12:UNDELIVERABLE,为兼容SMPP协议保留
  13:ACCEPTED,为兼容SMPP协议保留
  14:INVALID,为兼容SMPP协议保留
  其他:保留
  
   MS_type:
   手机类型
   0:中文手机
   1:英文手机
   >1:保留
  
   npi:
   地址编码方案,(定义详见GSM03.40[1] 9.1.2.5)
  0:未知
  1:ISDN电话编码方案
  3:数据编码方案(X.121)
  4:电报编码方案
  8:国家编码方案
  9:专用编码方案
  10:ERMES 编码方案(ETSI DE/PS 3 01?3)
  15:扩充保留
  从0到15的其他值保留
  
   OCOS:
   最大提交短消息,某移动台提交到SMSC的等待下发的短消息的最大数目
  
   password:
   用来登录的密码
  
   priority_flag:
   优先级
   1:高优先级
   0:普通优先级
   >1:保留
  
   protocol_ID:
   GSM协议类型(定义详见GSM03.40[1] 9.2.3.9)
  
   registered_delivery_flag:
   注册短消息标志,它表示当此短消息到达最后的目的地后,是否需要 转发状态报告(DELIVERY RECEIPT)。
   0:不需要
   1:需要
   >1:保留
  
   replace_if_present_flag:
   替换标志,当SUBMIT命令中指示的源地址和目的地址与等待下发的短消息的源地址和目的地址都相同时,是否替换这些等待下发的短消息。在DELIVERY命令中该参数无效,需置为0。
   0:不替换
   1:替换
   >1:保留
  
   schedule_delivery_time:
   对于SUBMIT命令,该参数指计划下发短消息的时间,对于DELIVERY命令,该参数指SMSC收到要下发到ESME的短消息的时间。
  
   service_type:
   保留,必须设为NULL,原该参数指明短消息服务的类别
  
   short_message_text:
   短消息数据内容,当编码类型为7位码,类型为C_String,最大长度为160个字符。8位码时,类型为C_String,最大长度为140个字节。当为Unicode时,类型为C_UnicodeString,最大长度为70个字符。
  
   SM_allowed:
   是否提供短消息业务
   0:不提供
   1:提供
  其余值保留
  
   sm_default_msg_id:
   预定义短消息ID,不是预定义短消息时应设为0。预定义短消息ID值从0x01到 0x64,其值的具体含义由特定的ESME和SMSC约定。其余值保留。
  
   sm_length:
   短消息的数据长度,以字节计算。
  
   source_address:
   源地址编号,同address。
  
   source_address_npi:
   源地址编码方案,同npi。
  
   source_address_ton:
   源地址编码类型,同 ton。
  
   sub_address:
   用户通信地址。
  
   sub_ID:
   用户ID,同address。
  
   sub_name:
   用户名。
  
   reg_datetime:
   用户注册登记时间 。
  
   system_id:
   接口ID,用来描述虚拟连接的用户名,即ESME登录SMSC使用的帐号。
  
   system_type:
   用来描述用户的类型。
  
   TCOS:
   最大下发数,指等待下发到某移动台的最大短消息数目。
  
   ton:
   地址编码类型,(定义详见GSM03.40[1] 9.1.2.5)
   0 未知号码
   1 国际号码,例如8613901234567
   2 国内号码,例如13901234567
   3 网络专用号码
   4 用户号码
   5 字母号码(按照 GSM?TS03.38 7-bit 缺省字母表编码)
   6 缩写号码
   7 保留
  
   validity_peroid:
   短消息的最后生存期限。
  
  
  附录A:命令标志数值定义
  
   命令码宏定义
   数值
   描述
   ESME_BNDRCV
   0X00000001
   ESME要求连接到SMSC
   ESME_BNDRCV
   0X80000001
   连接SMSC的响应
   ESME_BNDTRN
   0X00000002
   ESME要求连接到SMSC
   ESME_BNDTRN_RESP
   0X80000002
   连接SMSC的响应
   ESME_UBD
   0X00000006
   ESME要求断开连接到SMSC
   ESME_UBD_RESP
   0X80000006
   断开连接的响应
   ESME_SUB_SM
   0X00000004
   ESME提交短消息到SMSC,以便SMSC下发此短消息到特定的用户。
   ESME_SUB_SM_RESP
   0X80000004
   提交短消息的响应
   ESME_DELIVER_SM
   0X00000005
   SMSC下发短消息到特定的ESME
   ESME_DELIVER_SM_RESP
   0X80000005
   下发短消息的响应
   ESME_QUERY_SM
   0X00000003
   ESME查询以前所提交的短消息的状态
   ESME_QUERY_SM_RESP
   0X80000003
   查询短消息的响应
   ESME_CANCEL_SM
   0X00000008
   ESME要求取消以前所提交的某条短消息
   ESME_CANCEL_SM_RESP
   0X80000008
   ESME要求取消以前所提交的某条短消息的响应
   ESME_REPLACE_SM
   0X00000007
   ESME要求替换以前所提交的某条短消息
   ESME_REPLACE_SM_RESP
   0X80000007
   ESME要求替换以前所提交的某条短消息的响应
   ESME_QRYLINK
   0X00000015
   询问扩展短消息实体与短消息中心的连接情况
   ESME_QRYLINK_RESP
   0X80000015
   询问扩展短消息实体与短消息中心的连接情况的响应
   ESME_NACK
   0X80000000
   接收消息头错误的响应
   ESME_REPLACE_SM_EX
   0X00000090
   ESME要求替换以前所提交的某条短消息的扩展命令,它增加了数据编码格式字段
   ESME_REPLACE_SM_EX_RESP
   0X80000090
   扩展替换短消息的的响应
   ESME_ADD_SUB
   0X000000A0
   增加用户
   ESME_ADD_SUB_RESP
   0X800000A0
   增加用户的响应
   ESME_DEL_SUB
   0X000000A1
   删除用户
   ESME_DEL_SUB_RESP
   0X800000A1
   删除用户的响应
   ESME_MOD_SUB
   0X000000A2
   修改用户
   ESME_MOD_SUB_RESP
   0X800000A2
   修改用户的响应
   ESME_QRY_SUB
   0X000000A3
   查询用户的信息
   ESME_QRY_SUB_RESP
   0X800000A3
   查询用户的信息的响应(王朝网络 wangchao.net.cn)
 
标签: SMPP  开发  接口  概要  消息  
SMPP是一种通用的短信接口协议,本文摘录了能实现短信基本功能的内容。 前言 短消息中心(SMSC)可以与各种扩展短消息实体(ESME)配合工作,从而为移动用户提供丰富多采的功能。 符号和缩略语 ESME Agent External Short Message Entity Agent 扩展短消息实体代理 ESME External Short Message Entity 扩展短消息实体 PLMN Public Land Mobile Network 公共陆地移动网 SMSC Short Message Service Center 短消息中心 SMPP Short Message Peer to Peer 短消息点对点协议 SS Secretary System 秘书台 AS Auto System 自动台 SMSC指短消息中心。 ESME在本规范中指的是通过本规范规定的协议与SMSC通信,请求特定的短消息服务的功能实体。 SS指人工话务接入并受理短消息服务请求的系统。 AS指利用交互式语音技术受理短消息服务请求的系统。 SS(秘书台)和AS(自动台)是典型的ESME。 SMSC和ESME之间的传输网络可以是基于X.25, 或TCP/IP。 ESME到SMSC的消息 ESME到SMSC的消息,如:提交、查询、删除短消息等请求,ESME必须以TRANSMITTER类型连接到SMSC。 图4描述了一个典型的TRANSMITTER类型的请求应答的示例。TRANSMITTER类型的ESME是以BIND_TRANCESMITTER连接到SMSC的ESME,此类型的ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答。 ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。 SMSC应该按照收到的请求顺序,给EMSE回响应。但是ESME必须能够处理没有按顺序的响应。 SMSC到ESME的消息 SMSC到ESME的消息,如:SMSC转发短消息到ESME,ESME必须以RECEIVER类型连接到SMSC。 图5描述了一个典型的RECEIVER类型的ESME和SMSC之间的消息序列的示例。RECEIVER类型的ESME是以BIND_RECEIVER连接到SMSC的ESME,SMSC向此类ESME转发短消息,ESME向SMSC回应答。 ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以SMSC可能在ESME没有回应答的情况下,发送发起多个deliver_sm请求到ESME。 ESME应该按照收到的请求顺序,给SMSC返回响应。但是SMSC必须能够处理没有按顺序回的响应。 消息流 本规范中规定的所有协议,不管是从ESME到SMSC,还是从SMSC到ESME的消息,接收到请求的一方,都必须给请求方回一个应答消息(acknowledge)。 消息语法 在以下语法说明中,遵从以下规则: A.未使用的字段,依据类型必须设置为0或NULL。 B.消息由消息头和消息体组成。 C.状态(Command_status)的定义如表3所示。 状态定义 错误代码 描述 E_SUCCESS(0X00000000) 成功 E_OTHERERR(0X00000001) 其他错误 0X00000002 – 0X0000000F 保留给SMSC厂商定义错误 E_MSGLENERR(0X00000010) 消息长度错误 E_CMDLENERR(0X00000011) 命令长度错误 E_INVLDCMDID(0X00000012) 消息ID无效 E_NORIGHT(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厂商定义错误 其他 保留 类型定义 (1)integer:一定字节数所组成的整数,高位在前,低位在后。例 如:1字节(BYTE),2字节(WORD ) , 4字节 (DWORD) ,6字节等等。 (2)C_String:以NULL结束的ASCII字符串。 (3)C_DecString:以NULL结束的ASCII字符串,它由一系列的10进制字符 组成(‘0’---‘9’)。 (4)C_OctetString:由任意8位字节组成数据流串。 (5)C_HexString:以NULL结束的ASCII字符串,它由一系列的16进制字符组 成(‘0’---‘9’,‘A’(‘a’)---‘F’(‘f’))。 (6)C_UnicodeString:以NULL结束的Unicode编码的字符串。 (7)C_StringTime:表示时间的字符串,它为以下格式。“YYMMDDhhmmsstnnp" , 长度定为17个字节或1个字节,最后一个字节值必须为NULL,1个字节表示 使用缺省的时间定义(由短消息中心实现时具体设置),17个字节的具体格式 如下: 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. 对于千年问题,采用时间窗口的方法来解决,具体方法为YY>90解释为19YY;否则解释为20YY。 消息头语法 表4:短消息头语法 字段 长度(字节) 类型 描述 Command_Length 4 integer 消息包的长度,包括此字段 Command_ID 4 integer 这个字段表明此条短消息的类型,例如ESME_SUB_SM表示此消息为ESME向SMSC提交短消息。具体数值定义见附录A。 Command_status 4 integer 此字段表示一个命令的成功与失败,如失败,指示引起失败的错误类型等信息,它在请求中必须设为0。 Sequence_No 4 integer 此字段表示消息的序列号,它由ESME产生,它是消息和它的应答之间的对应标志,它的数值在0到0XFFFFFFFF间必须保证严格单调的递增,当达到0XFFFFFFFF时,从0开始下一循环。 Optional Message Body 可变 混合 此字段表示短消息的消息体部分,具体定义见6.5.2 消息体语法 以下几条命令实现后,就可以实现短消息的收发。 BIND_RECEIVER命令 此命令在扩展短消息实体和短消息中心之间产生虚连接,该连接支持所有的协议命令。 BIND_RECEIVER语法 消息头中的Command_ID是“bind_receiver" 表5:BIND_RECEIVER语法 字段 长度(字节) 类型 描述 system_id 最大 16 C_String 接口ID password 最大 9 C_String 密码 system_type 最大 13 C_String 接口类型 Interface_version 1 integer 接口版本号 Ton 1 integer 保留,应设置为0 npi 1 integer 保留,应设置为0 address_range 最大 41 C_DecString 保留,应设置为NULL BIND_RECEIVER_RESP语法 消息头中的Command_ID 是“bind_receiver_resp"。 表6:BIND_RECEIVER_RESP语法 字段 大小(字节) 类型 描述 System_id 最大 16 C_String 接口ID 状态取值范围: E_SUCCESS E_OTHERERR E_CMDLENERR E_NORIGHT E_INVLDSYSTEMID E_INVLDPASSWORD E_INVLDSYSTEMTYPE E_INVLDIFVER UNBIND命令 此命令用于断开ESME和SMSC之间的连接。 UNBIND语法 此消息只有消息头,没有消息体,消息头中的Command_ID是“unbind"。 UNBIND_RESP语法 此消息只有消息头,没有消息体,消息头中的Command_ID是“unbind_resp"。 状态取值范围: E_SUCCESS E_OTHERERR E_CMDLENERR E_NORIGHT 6.5.2.4 SUBMIT_SM命令 此命令用于ESME提交短消息到SMSC,以便SMSC把此短消息发给特定的移动台。 SUBMIT_SM语法 消息头中的Command_ID是"submit_sm" 表7:SUBMIT_SM语法 字段 长度(字节) 类型 描述 service_type 最大6 C_OctetString 保留,必须设为0 source_address_ton 1 integer 源地址编码类型 source_address_npi 1 integer 源地址编码方案 source_address 最大21 C_DecString 源地址 dest_address_ton 1 integer 目的地址编码类型 dest_address_npi 1 integer 目的地址编码方案 destination_address 最大21 C_DecString 目的地址 esm_class 1 integer 短消息类型 protocol_ID 1 integer GSM协议类型 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 预定义短消息ID sm_length 1 integer 短消息的长度 short_message_text 最大161 可变 短消息数据内容 SUBMIT_SM_RESP语法 消息头中的Command_ID是"submit_sm_resp" 表8:SUBMIT_SM_RESP语法 字段 长度(字节) 类型 描述 Message_id 最大9 C_HexString 短消息ID 状态取值范围: E_SUCCESS E_OTHERERR E_CMDLENERR E_NORIGHT E_ADDRERR E_MOEXCEED E_MTEXCEED E_INVLDUSER E_INVLDDATAFMT E_CREATEMSGFAILURE E_INVLDORGTON E_INVLDORGNPI E_ORGADDRERR E_INVLDDESTTON E_INVLDDESTNPI E_DESTADDRERR E_INVLDSCHEDULE E_INVLDEXPIRE E_INVLDESM E_INVLDUDLEN E_INVLDPRI E_INVLDRDF E_INVLDRPF DELIVER_SM命令 此命令由SMSC产生,SMSC通过此命令发送短消息到目的ESME,它也可用于发送转发状态报告(DELIVERY RECEIPT)消息。 DELIVER_SM语法 它的语法和SUBMIT_SM的语法消息体是相同的,只是在消息头中的Command_ID是“deliver_sm"。 DELIVER_SM_RESP语法 它的语法和SUBMIT_SM_RESP的语法消息体是一样的,只是在消息头中的Command_ID是“deliver_sm_resp"。 附:消息体参数说明 address: 地址号码 address_range 地址范围 data_coding: 数据编码方案, ( 详见GSM 03.40 [1] 9.2.3.10) dest_address_npi: 目的地址编码方案,同npi dest_address_ton: 目的地址编码类型,同ton destination_address: 目的地址,同address esm_class: 短消息类型 Bit: 7 6 5 4 3 2 1 0 Flag: Reserved UDHI Reserved Delivery RCPT Reserved 其中UDHI为1表示短消息内容中有头结构,为0表示没有头结构。 Delivery RCPT为1表示是此条短消息是状态报告,0表示为正常的下发短消息。此位只对DELIVER_SM有效。 其他为保留。 如果有头结构,short_message_text为以下格式: { BYTE UDHL; //信息元素的结构集合所用的字节数 Information?Element-struct Information?Element; //若干信息元素的结构集合, 其占用的字节数目由UDHL指示 ... SM; 短消息内容 } 其中Information?Element-struct的结构如下: { BYTE Information?Element?Identifier // 信息元素的标志 BYTE Length of Information?Element //信息元素数据所用的字节数 Information?Element Data //信息元素数据,其占用的字节数目由Length of Information?Element指示 } 定义详见GSM 03.40 (7.2.0) 9.2.3.24 final_date: 短消息的生命期终止的实际时间,如果此短消息已从SMSC的等待发送队列中删除,即为删除时间,否则为SMSC当前的时间 GSM_code: GSM错误码,见下表 错误码 值 描述 ERROR_NONE 0 无错误 P_UNKNOWN 1 不知道的用户 P_PROVISION 2 不提供此功能 T_BARRED 3 呼叫废弃 T_SUPPORT 4 此机制不支持 T_ABSENT 5 用户不能通讯 T_MSSUPPORT 6 移动台不支持短消息 T_MSERROR 7 移动台接收短消息出现错误 P_ILLEGAL_SUB 8 不合法的用户 P_ILLEGAL_EQUIP 9 不合法的设备 T_SYSTEM 10 系统失败 T_MEMCAP 11 内存不足 interface_version: 用来描述本协议的版本号 在ESME连接SMSC时,如果ESME提出的版本号高于SMSC的版本号,则SMSC给出否定响应,响应中的status表示SMSC的版本号;ESME提出的版本号低于或等于SMSC的版本号,则SMSC给出肯定响应,在连接成功后的会话过程中,双方将以ESME提出的版本号作为通信的依据。interface_version的值从1开始,0保留。 现约定,对于interface_version>=1,必须支持除REPLACE_SM_EX命令和用户管理命令以外的所有协议命令, 对于interface_version>=2, 必须支持所有本文中提到的协议命令。 message_id: 短消息ID,它由SMSC设置。用于查询以及替换短消息等操作时使用。 message_status: 短消息当前的状态: 0:转发状态 1:发送成功(不在尝试转发) 2:发送失败(不在尝试转发) 3:因下发失败而等待(继续尝试转发) 4:因定时消息而等待(继续尝试转发) 5:短消息被删除(不在尝试转发) 6:短消息超时删除(不在尝试转发) 7:无效状态(不在尝试转发) 8:EN_ROUTE,为兼容SMPP协议保留 9:DELIVERED,为兼容SMPP协议保留 10:EXPIRED,为兼容SMPP协议保留 11:DELETED,为兼容SMPP协议保留 12:UNDELIVERABLE,为兼容SMPP协议保留 13:ACCEPTED,为兼容SMPP协议保留 14:INVALID,为兼容SMPP协议保留 其他:保留 MS_type: 手机类型 0:中文手机 1:英文手机 >1:保留 npi: 地址编码方案,(定义详见GSM03.40[1] 9.1.2.5) 0:未知 1:ISDN电话编码方案 3:数据编码方案(X.121) 4:电报编码方案 8:国家编码方案 9:专用编码方案 10:ERMES 编码方案(ETSI DE/PS 3 01?3) 15:扩充保留 从0到15的其他值保留 OCOS: 最大提交短消息,某移动台提交到SMSC的等待下发的短消息的最大数目 password: 用来登录的密码 priority_flag: 优先级 1:高优先级 0:普通优先级 >1:保留 protocol_ID: GSM协议类型(定义详见GSM03.40[1] 9.2.3.9) registered_delivery_flag: 注册短消息标志,它表示当此短消息到达最后的目的地后,是否需要 转发状态报告(DELIVERY RECEIPT)。 0:不需要 1:需要 >1:保留 replace_if_present_flag: 替换标志,当SUBMIT命令中指示的源地址和目的地址与等待下发的短消息的源地址和目的地址都相同时,是否替换这些等待下发的短消息。在DELIVERY命令中该参数无效,需置为0。 0:不替换 1:替换 >1:保留 schedule_delivery_time: 对于SUBMIT命令,该参数指计划下发短消息的时间,对于DELIVERY命令,该参数指SMSC收到要下发到ESME的短消息的时间。 service_type: 保留,必须设为NULL,原该参数指明短消息服务的类别 short_message_text: 短消息数据内容,当编码类型为7位码,类型为C_String,最大长度为160个字符。8位码时,类型为C_String,最大长度为140个字节。当为Unicode时,类型为C_UnicodeString,最大长度为70个字符。 SM_allowed: 是否提供短消息业务 0:不提供 1:提供 其余值保留 sm_default_msg_id: 预定义短消息ID,不是预定义短消息时应设为0。预定义短消息ID值从0x01到 0x64,其值的具体含义由特定的ESME和SMSC约定。其余值保留。 sm_length: 短消息的数据长度,以字节计算。 source_address: 源地址编号,同address。 source_address_npi: 源地址编码方案,同npi。 source_address_ton: 源地址编码类型,同 ton。 sub_address: 用户通信地址。 sub_ID: 用户ID,同address。 sub_name: 用户名。 reg_datetime: 用户注册登记时间 。 system_id: 接口ID,用来描述虚拟连接的用户名,即ESME登录SMSC使用的帐号。 system_type: 用来描述用户的类型。 TCOS: 最大下发数,指等待下发到某移动台的最大短消息数目。 ton: 地址编码类型,(定义详见GSM03.40[1] 9.1.2.5) 0 未知号码 1 国际号码,例如8613901234567 2 国内号码,例如13901234567 3 网络专用号码 4 用户号码 5 字母号码(按照 GSM?TS03.38 7-bit 缺省字母表编码) 6 缩写号码 7 保留 validity_peroid: 短消息的最后生存期限。 附录A:命令标志数值定义 命令码宏定义 数值 描述 ESME_BNDRCV 0X00000001 ESME要求连接到SMSC ESME_BNDRCV 0X80000001 连接SMSC的响应 ESME_BNDTRN 0X00000002 ESME要求连接到SMSC ESME_BNDTRN_RESP 0X80000002 连接SMSC的响应 ESME_UBD 0X00000006 ESME要求断开连接到SMSC ESME_UBD_RESP 0X80000006 断开连接的响应 ESME_SUB_SM 0X00000004 ESME提交短消息到SMSC,以便SMSC下发此短消息到特定的用户。 ESME_SUB_SM_RESP 0X80000004 提交短消息的响应 ESME_DELIVER_SM 0X00000005 SMSC下发短消息到特定的ESME ESME_DELIVER_SM_RESP 0X80000005 下发短消息的响应 ESME_QUERY_SM 0X00000003 ESME查询以前所提交的短消息的状态 ESME_QUERY_SM_RESP 0X80000003 查询短消息的响应 ESME_CANCEL_SM 0X00000008 ESME要求取消以前所提交的某条短消息 ESME_CANCEL_SM_RESP 0X80000008 ESME要求取消以前所提交的某条短消息的响应 ESME_REPLACE_SM 0X00000007 ESME要求替换以前所提交的某条短消息 ESME_REPLACE_SM_RESP 0X80000007 ESME要求替换以前所提交的某条短消息的响应 ESME_QRYLINK 0X00000015 询问扩展短消息实体与短消息中心的连接情况 ESME_QRYLINK_RESP 0X80000015 询问扩展短消息实体与短消息中心的连接情况的响应 ESME_NACK 0X80000000 接收消息头错误的响应 ESME_REPLACE_SM_EX 0X00000090 ESME要求替换以前所提交的某条短消息的扩展命令,它增加了数据编码格式字段 ESME_REPLACE_SM_EX_RESP 0X80000090 扩展替换短消息的的响应 ESME_ADD_SUB 0X000000A0 增加用户 ESME_ADD_SUB_RESP 0X800000A0 增加用户的响应 ESME_DEL_SUB 0X000000A1 删除用户 ESME_DEL_SUB_RESP 0X800000A1 删除用户的响应 ESME_MOD_SUB 0X000000A2 修改用户 ESME_MOD_SUB_RESP 0X800000A2 修改用户的响应 ESME_QRY_SUB 0X000000A3 查询用户的信息 ESME_QRY_SUB_RESP 0X800000A3 查询用户的信息的响应
 
声明:王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。
 
网友评论 查看所有评论
 
 
验证码:  
2006-01-30 22:54:07 繁體版 编辑
 
 
转载本文
UBB代码HTML代码
复制到剪贴板...
 
 最新文章
 ·印度暂缓封锁黑莓 紧盯网密服务密钥- ·黑客借钓鱼网站设陷阱-安全资讯 ·黄海波女友周诗雅性感写真-美女明星 ·一起来看看那些天雷滚滚的广告-搞笑
 ·微软推便携式触摸式鼠标Arc Tou ·图说那些世界上最美丽的地方-风景壁纸 ·快递“先签字后验货”被指违法-业内资 ·QQ.CN成为黑龙江联通IDC业务新
 ·拒绝50万美元奖金 跳槽Facebo ·网络管理员工作错误处理常见十宗罪-安 ·李彦宏百度大会 门票遭黄牛热炒-业内 ·李彦宏坦克大战 搜索可在线玩游戏-业
 ·步步追踪 破译远程控制失效之谜-应用 ·2010年度上半年全国病毒传播趋势  ·网络知识:OSPF路由协议基础-应用 ·林志颖娇妻陈若仪照片大曝光-美女明星
 ·十分钟完全体验Maxthon3.0- ·《庄园物语》8月风靡金山游戏世界 - ·表现满意 快车3.7新版下载能力测试 ·学生开学换手机 专家提醒先安全扫描-
 ·卡巴安全部队震撼发布保护网银安全-业 ·360安全:600万网民电脑龟速开机 ·卡巴斯基全力打造交易安全软件-安全资 ·搜狗“五级加速”引领高速浏览时代-网
 
 
© 2005- 王朝网络 版权所有