资源描述
中国网络通信集团公司企业标准
CNC/T 6-2003
PHS短消息技术规范
第三分册 短消息中心外部接口协议
(CNPP) V2.0
- III -
PHS短消息技术规范 第三分册
目 录
前 言 1
1. 适用范围 2
2. 引用标准 2
3. 缩略语 2
4. 协议概述 3
4.1 系统网络结构示例 3
4.2 协议功能 4
4.3 CNPP协议定义 4
4.4 协议栈 5
4.5 通信方式 5
4.5.1 长连接 6
4.5.2 短连接 8
4.6 会话流程 9
4.6.1 登录模式 9
4.6.2 典型流程 10
4.6.2.1 发送模式 10
4.6.2.2 接收模式 11
4.6.2.3 收发模式 12
5. CNPP PDU定义 13
5.1 PDU列表 13
5.1.1 ESME到SMSC的消息 13
5.1.2 SMSC到ESME的消息 13
5.2 基本数据类型 15
5.3 PDU结构 15
5.4 PDU头格式 15
5.5 PDU体结构 16
5.5.1 BIND命令 16
5.5.1.1 BIND_RECEIVER语法 16
5.5.1.2 BIND_RECEIVER_RESP语法 16
5.5.1.3 BIND_TRANSMITTER语法 17
5.5.1.4 BIND_TRANSMITTER_RESP语法 17
5.5.1.5 BIND_TRANSCEIVER语法 17
5.5.1.6 BIND_ TRANSCEIVER _RESP语法 17
5.5.2 UNBIND命令 17
5.5.2.1 UNBIND语法 17
5.5.2.2 UNBIND _RESP语法 18
5.5.3 GENERIC_NACK命令 18
5.5.3.1 GENERIC_NACK语法 18
5.5.4 SUBMIT_SM命令 18
5.5.4.1 SUBMIT_SM语法 18
5.5.4.2 SUBMIT_SM_RESP语法 20
5.5.5 SUBMIT_MULTI命令 20
5.5.5.1 SUBMIT_MULTI语法 20
5.5.5.2 SUBMIT_MULTI_RESP语法 22
5.5.6 DELIVER_SM命令 23
5.5.6.1 DELIVER_SM语法 23
5.5.6.2 DELIVER_SM_RESP语法 24
5.5.7 DATA_SM命令 25
5.5.7.1 DATA_SM语法 25
5.5.7.2 DATA_SM_RESP语法 26
5.5.8 QUERY_SM命令 26
5.5.8.1 QUERY_SM语法 26
5.5.8.2 QUERY_SM_RESP语法 27
5.5.9 CANCEL_SM命令 27
5.5.9.1 CANCEL_SM语法 27
5.5.9.2 CANCEL_SM_RESP语法 28
5.5.10 REPLACE_SM命令 28
5.5.10.1 REPLACE_SM语法 28
5.5.10.2 REPLACE_SM_RESP语法 29
5.5.11 ENQUIRE_LINK命令 30
5.5.11.1 ENQUIRE_LINK语法 30
5.5.11.2 ENQUIRE_LINK_RESP语法 30
5.5.12 ALERT_NOTIFICATION命令 30
5.5.12.1 ALERT_NOTIFICATION语法 30
6. 状态报告 31
7. 参数数值定义 32
7.1 command_id数值定义 32
PHS短消息技术规范 第三分册
前 言
本标准描述了PHS短消息中心(SMSC)和外部短消息实体(ESME)之间的通信协议。本协议简称CNPP(China Netcom Short Message Peer to Peer Protocol)。
本标准是PHS短消息网关技术规范的系列规范之一,该系列规范的名称如下:
PHS短消息网关技术规范 第一分册:短消息网关与服务提供商(SP)接口规范(CNGP);
PHS短消息网关技术规范 第二分册:短消息网关与计费中心接口规范;
PHS短消息网关技术规范 第三分册:短消息中心外部接口协议(CNPP);
PHS短消息网关技术规范 第四分册:短消息网关设备规范;
PHS短消息网关技术规范 V2.0说明。
1.适用范围
本规范规定了PHS通信网外部短消息实体(ESME)与短消息中心(SMSC)之间通信协议的技术细节。
本规范主要适用于PHS通信网外部短消息实体(ESME)和短消息中心(SMSC),为短消息中心(SMSC)接入外部短消息实体(ESME)提供技术依据。
2.引用标准
SMPP (Short Message Peer to Peer Protocol Specification) v3.4
3.缩略语
英文缩写
英文全称
说明
ESME
External Short Message Entity
外部短消息实体
PDU
Protocol Data Unit
协议数据单元
SME
Short Message Entity
短消息实体
SMPP
Short Message Peer to Peer
短消息点对点协议
SMSC
Short Message Service Center
短消息中心
ACK
Acknowledgement
确认应答
NACK
Negative Acknowledgement
否认应答
CDR
Call Detail Record
详细呼叫记录
API
Application Programming Interface
应用编程接口
SMGW
Short Message Gateway
短消息网关
PS
Personal Station
用户终端
SS
Secretary System
秘书台
AS
Auto System
自动台
注:在本规范中,ESME泛指那些处在PHS通信网外的短消息源或者接收实体,如SMGW,SS,AS,语音邮箱系统和消息处理计算机等。SME则位于PHS通信网内,一般就指用户终端(PS)。
4.协议概述
本规范规定了SMSC和ESME之间通信的数据格式。本规范是在SMPP3.3协议的基础上,经过扩展而成。
4.1 系统网络结构示例
图1 SMSC和ESME连接的短消息系统网络图
SMSC指短消息中心。
ESME在本规范中指的是通过本规范规定的协议与SMSC通信,请求特定的短消息服务的功能实体。
SMGW指短消息网关。
VMS指语音邮箱系统。
SS指人工话务接入并受理短消息服务请求的系统。
AS指利用交互式语音技术受理短消息服务请求的系统。
SMGW、VMS、SS和AS是典型的ESME。
SMSC和ESME之间基于TCP/IP协议进行通信。
4.2 协议功能
通过本规范,一个外部短消息实体ESME可以在TCP/IP连接之上与SMSC建立应用层连接。通过该连接,ESME与SMSC之间可以互相发送和接收短消息。此外,ESME还可以查询、取消和替代短消息。
CNPP可以实现的功能举例如下:
1. ESME通过SMSC向一个或多个目的地址发送短消息
2. ESME可以通过SMSC从其他的SME(如用户终端)接收短消息
3. 查询存储在SMSC的短消息的状态
4. 取消或替代存储在SMSC的短消息
5. 设定短消息的发送日期和时间
6. 选择短消息的模式,即数据报或者存储转发
7. 设置短消息发送的优先级
8. 定义短消息的数据编码类型
9. 设置短消息的有效期限
4.3 CNPP协议定义
CNPP协议是一个数据报方式的交互式协议,通过TCP/IP协议传递数据。ESME和SMSC之间通过交换请求和应答PDU来进行通信。本规范定义了:
1. ESME和SMSC之间交互的命令集以及与之相关的PDU。
2. ESME和SMSC在CNPP命令里交换的数据。
在CNPP里,每一个命令都由一个请求PDU和一个应答PDU组成。接收方对于每一个CNPP PDU请求,都必须返回一个应答。唯一的例外是:alter_notification没有应答PDU。
ESME和SMSC之间的交互消息可以归类为如下的两个部分:
(1) ESME到SMSC的消息
(2) SMSC到ESME的消息
4.4 协议栈
CNPP标准以TCP/IP作为底层通信承载,具体结构由图2所示:
CNPP
TCP
IP
承载网络
CNPP
TCP
IP
承载网络
ESME
SMSC
图2 CNPP协议栈
4.5 通信方式
ESME和SMSC之间进行信息交互时,SMSC作为服务器端,ESME作为客户端建立连接,可以采用长连接方式,也可以采用短连接方式。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需要双方发链路检测消息以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对CNPP消息的发送。
基于效率上的考虑,建议使用长连接方式。
4.5.1 长连接
通信双方以客户-服务器方式建立TCP连接,用于双方信息的相互提交。当信道上没有数据传输时,通信双方应每隔时间C发送链路检测消息以维持此连接,当链路检测消息发出超过时间T后未收到应答,应立即再发送链路检测消息,再连续发送N-1次后仍未得到应答则断开此连接。
参数C、T、N原则上应可配置,现阶段建议取值为:C=3分钟,T=60秒,N=3。
ESME和SMSC之间的消息发送后等待T秒后未收到应答,应立即重发,再连续发送N-1次后仍未得到应答则停发。现阶段建议取值为:T=60秒,N=3。
消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数W可配置,现阶段建议为16,即接收方在应答前一次收到的消息最多不超过16条。
长连接的操作流程举例如图3所示:
. . . . . .
CNPP消息1
客户端
服务器端
CNPP消息2
对CNPP消息1的应答
对CNPP消息2的应答
链路检测消息
链路检测消息应答
建立TCP连接
链路检测消息
链路检测消息应答
拆除TCP连接
. . . . . .
图3 长连接
4.5.2 短连接
通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。
ESME和SMSC之间的消息发送后等待T秒后未收到应答,应立即重发,再连续发送N-1次后仍未得到应答则停发。现阶段建议取值为:T=60秒,N=3。
短连接的操作流程举例如图4所示:
对CNPP消息1的应答
CNPP消息1
建立TCP连接
拆除TCP连接
CNPP消息2
对CNPP消息2的应答
建立TCP连接
拆除TCP连接
. . . . . .
客户端
服务器端
图4 短连接的操作流程
4.6 会话流程
4.6.1 登录模式
在CNPP标准的一个会话中ESME可以采用三种方式与SMSC相连:发送模式(Transmit Mode)、接收模式(Receive Mode)和收发模式(Transceiver Mode)。在发送模式中ESME只能发送短消息、在接收模式中ESME只能接收短消息、在收发模式中ESME既可以发送也可以接收短消息。三种模式均可以采用长连接与短连接两种连接方式的一种,根据实际情况选择。
4.6.2 典型流程
4.6.2.1 发送模式
图5 ESME以发送模式连接到SMSC
图5描述了一个典型的发送模式下的请求应答序列。ESME以发送模式连接到SMSC。ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答。
ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。
SMSC应该按照收到的请求顺序,给ESME回响应。但是ESME必须能够处理没有按顺序的响应。
4.6.2.2 接收模式
图6 ESME以接收模式连接到SMSC
图6描述了一个典型的接收模式下的消息序列。ESME以接收模式连接到SMSC。SMSC向此类ESME转发短消息,ESME向SMSC回应答。
ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以SMSC可能在ESME没有回应答的情况下,发送发起多个deliver_sm请求到ESME。
ESME应该按照收到的请求顺序,给SMSC返回响应。但是SMSC必须能够处理没有按顺序回的响应。
4.6.2.3 收发模式
图7 ESME以收发模式连接到SMSC
图7描述了一个典型的收发模式下的请求应答序列。ESME以收发模式连接到SMSC。ESME向SMSC发起提交短消息,查询短消息状态,删除短消息等请求,SMSC返回请求的应答;SMSC向ESME转发短消息,ESME向SMSC回应答。
ESME和SMSC之间的请求应答消息可以是阻塞方式也可以是异步方式的。所以ESME可能在SMSC没有应答的情况下,发起多个请求到SMSC。反之亦然。
SMSC应该按照收到的请求顺序,给ESME回响应。但是ESME必须能够处理没有按顺序的响应。反之亦然。
5.CNPP PDU定义
5.1 PDU列表
5.1.1 ESME到SMSC的消息
命令
描述
实现级别
bind_receiver
ESME要求以接收模式连接到SMSC
必选
bind_transmitter
ESME要求以发送模式连接到SMSC
必选
bind_transceiver
ESME要求以收发模式连接到SMSC
必选
unbind
ESME要求断开连接到SMSC
必选
generic_nack
表示消息头有错误的响应
必选
submit_sm
ESME提交短消息到SMSC,以便SMSC下发此短消息到指定的用户终端
必选
submit_multi
ESME提交一条短消息到SMSC,SMSC下发此短消息到多个接收者,或者一个或多个发布列表
必选
deliver_sm_resp
deliver_sm的响应
必选
data_sm
ESME请求SMSC发送短消息到用户终端
可选
data_sm_resp
data_sm的响应消息
可选
query_sm
ESME查询以前所提交的短消息的状态
必选
cancel_sm
ESME要求取消以前所提交的某条短消息
必选
replace_sm
ESME要求替换以前所提交的某条短消息
必选
enquire_link
询问与SMSC的连接情况
必选
表1 ESME到SMSC的消息
5.1.2 SMSC到ESME的消息
命令
描述
实现级别
bind_receiver_resp
bind_receiver的响应,status表示连接成功与否
必选
bind_transmitter_resp
bind_transmitter的响应,status表示连接成功与否
必选
bind_transceiver_resp
bind_transceiver的响应,status表示连接成功与否
必选
unbind_resp
unbind的响应,status表示断开连接成功与否
必选
generic_nack
表示消息头有错误的响应
必选
submit_sm_resp
submit_sm的响应,status表明提交短消息是否成功
必选
submit_multi_resp
submit_multi的响应。
必选
deliver_sm
SMSC下发短消息到ESME
必选
data_sm
SMSC将用户终端发送的短消息传递到ESME
可选
data_sm_resp
data_sm的响应消息
可选
query_sm_resp
query_sm的响应,status表明此次询问是否成功,其它内容返回查询到的短消息信息
必选
cancel_sm_resp
cancel_sm的响应。Status表明取消短消息是否成功
必选
replace_sm_resp
replace_sm的响应,status表明此次替换是否成功
必选
enquire_link_resp
enquire_link的响应
必选
alert_notification
由SMSC产生发送给ESME,该消息无响应消息
可选
表2 SMSC到ESME的消息
5.2 基本数据类型
类型
说明
Integer
无符号整数
C-Octet String
以NULL结尾的ASCII字符串
C-Octet String(Decimal)
与C-Octet String不同的是,串中的每个字符为ASCII码中的0-9。
C-Octet String(Hex)
与C-Octet String不同的是,串中的每个字符为ASCII码中的0-9,A-F。
Octet String
不需以NULL结尾的字符串。
5.3 PDU结构
项目
说明
格式
Message Header
消息头(所有消息公共包头)
定长
Message Body
消息体(必选部分)
变长
Message Body
消息体(可选部分)
TLV
5.4 PDU头格式
字段名
字节数
类型
描述
command_length
4
Integer
PDU总长度(含消息头及消息体)
command_id
4
Integer
这个字段表明此条短消息的类型,例如submit_sm表示此消息为ESME向SMSC提交短消息,取值见6.1
command_status
4
Integer
此字段表示一个命令的成功与失败,如失败,指示引起失败的错误类型等信息,它在请求中必须设为NULL(参见第7.2节 status错误代码表)
sequence_number
4
Integer
消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)
5.5 PDU体结构
5.5.1 BIND命令
5.5.1.1 BIND_RECEIVER语法
此命令用于ESME以接受者的方式与SMSC之间建立虚连接。连接建立后,ESME可以从SMSC接受短消息,并发送CNPP响应消息给SMSC。
消息头中的command_id是“bind_receiver”。消息体定义如下:
字段
长度(字节)
数据类型
说明
system_id
最大16
C-Octet String
需要与SMSC连接的ESME标识
password
最大9
C-Octet String
密码
system_type
最大13
C-Octet String
系统类型
interface_version
1
Integer
接口版本号
Addr_ton
1
Integer
地址编码类型,不使用置为0
Addr_npi
1
Integer
地址编码方案,不使用置为0
address_range
最大41
C-Octet String
地址范围,不使用置为NULL
5.5.1.2 BIND_RECEIVER_RESP语法
此命令是BIND_RECEIVER的响应消息。
消息头中的command_id是“bind_receiver_resp”。消息体定义如下:
字段
长度(字节)
数据类型
说明
system_id
最大16
C-Octet String
ESME请求连接的SMSC标识
5.5.1.3 BIND_TRANSMITTER语法
此命令用于ESME以发送者的方式与SMSC之间建立虚连接。连接建立后,ESME可以发送短消息到SMSC,并接受SMSC的CNPP响应消息。
消息头中的command_id是“bind_transmitter”。消息体的定义与BIND_RECEIVER相同。
5.5.1.4 BIND_TRANSMITTER_RESP语法
此命令是BIND_TRANSMITTER的响应消息。
消息头中的command_id是“bind_transmitter_resp”。消息体的定义与BIND_RECEIVER_RESP相同。
5.5.1.5 BIND_TRANSCEIVER语法
此命令用于ESME以收发者的方式与SMSC之间建立虚连接。连接建立后,ESME可以发送短消息到SMSC,也可以从SMSC接受短消息。
消息头中的command_id是“bind_transceiver”。消息体的定义与BIND_RECEIVER相同。
5.5.1.6 BIND_ TRANSCEIVER _RESP语法
此命令是BIND_ TRANSCEIVER的响应消息。
消息头中的command_id是“bind_transceiver_resp”。消息体的定义与BIND_RECEIVER_RESP相同。
5.5.2 UNBIND命令
5.5.2.1 UNBIND语法
此命令用于断开ESME和SMSC之间的连接。
消息头中的command_id是“unbind”。此消息没有消息体。
5.5.2.2 UNBIND _RESP语法
此命令是UNBIND的响应消息。
消息头中的command_id是“unbind_resp”。没有消息体。
5.5.3 GENERIC_NACK命令
5.5.3.1 GENERIC_NACK语法
此命令用于当接收消息头有错误的时候发送的否定响应。该消息只能由收到请求的一方发出。此消息没有消息体。
5.5.4 SUBMIT_SM命令
5.5.4.1 SUBMIT_SM语法
ESME用此命令消息向SMSC提交短消息,以便SMSC将短消息发给指定的SME。
ESME也可用此命令发送状态报告消息。
消息头中的command_id是“submit_sm”。消息体定义如下:
字段
长度(字节)
数据类型
说明
service_type
最大6
C-Octet String
短消息服务类型。如果使用SMSC的默认值,设置为NULL。
source_addr_ton
1
Integer
源地址编码类型。如果不知道源地址的编码类型,设置为0。
source_addr_npi
1
Integer
源地址编码方案。如果不知道源地址的编码方案,设置为0。
source_addr
最大21
C_Octet String
源地址。如果不知道源地址,设置为NULL。
dest_addr_ton
1
integer
目的地址编码类型
dest_addr_npi
1
integer
目的地址编码方案
destination_addr
最大21
C_Octet String
目的地址。
esm_class
1
integer
短消息类型
xx0000xx:普通短消息
xx0001xx:此消息为状态报告消息
其它:保留
protocol_id
1
integer
协议类型
priority_flag
1
integer
优先级(从0到3)3为最高级
schedule_delivery_time
1或者17
C_Octet String
计划下发短消息的时间。可以是绝对时间或相对时间,如果立即发送,设置为NULL
validity_peroid
1或者17
C_Octet String
短消息的有效期限,可以是绝对时间或相对时间,如果使用SMSC的默认有效期限,设置为NULL
registered_delivery
1
integer
注册短消息标志
0:不需要状态报告
1:需要状态报告
>1:保留xxxxxx00:不需要状态报告
xxxxxx01:需要状态报告(缺省)
其他:保留
replace_if_present_flag
1
integer
替换短消息标志。指示是否用已提交的短消息来替代现有的短消息。
0:不替换(缺省)
1:替换
data_coding
1
integer
数据编码方案
sm_default_msg_id
1
integer
预定义短消息标识
sm_length
1
integer
短消息长度
short_message
最大254
Octet String
短消息内容
5.5.4.2 SUBMIT_SM_RESP语法
此消息是SUBMIT_SM的响应消息。
消息头中的command_id是"submit_sm_resp"。消息体定义如下:
字段
长度(字节)
数据类型
说明
message_id
最大9
C-Octet String
短消息标识
5.5.5 SUBMIT_MULTI命令(可选)
5.5.5.1 SUBMIT_MULTI语法
SUBMIT_MULTI命令用于将一条SMPP消息发送到多个接收者,或者一个或多个发布列表。
消息头中的command_id是"submit_multi"。消息体定义如下:
字段
长度(字节)
数据类型
说明
service_type
最大6
C-Octet String
短消息服务类型。如果使用SMSC的默认值,设置为NULL。
source_addr_ton
1
Integer
源地址编码类型。如果不知道源地址的编码类型,设置为0。
source_addr_npi
1
integer
源地址编码方案。如果不知道源地址的编码方案,设置为0。
source_addr
最大21
C_Octet String
源地址。如果不知道源地址,设置为NULL。
number_of_dests
1
integer
目的地址的个数。最大值为254。
dest_address(es)
2-24
见下表
一个或多个目的SME地址或者发布列表。
esm_class
1
integer
短消息类型
xx0000xx:普通短消息
xx0001xx:此消息为状态报告消息
其它:保留
protocol_id
1
integer
协议类型
priority_flag
1
integer
优先级(从0到3)3为最高级
schedule_delivery_time
1或者17
C_Octet String
计划下发短消息的时间,可以是绝对时间或相对时间。如果立即发送,设置为NULL。
validity_peroid
1或者17
C_Octet String
短消息的有效期限,可以是绝对时间或相对时间。如果使用SMSC的默认有效期限,设置为NULL
registered_delivery
1
integer
注册短消息标志
0:不需要状态报告
1:需要状态报告
>1:保留定义见5.5.4.1
replace_if_present_flag
1
integer
替换短消息标志。指示是否用已提交的短消息来替代现有的短消息。
0:不替换(缺省)
1:替换
data_coding
1
integer
数据编码方案
sm_default_msg_id
1
integer
预定义短消息标识
sm_length
1
integer
短消息长度
short_message
最大254
Octet String
短消息内容
目的地址定义
字段
长度(字节)
数据类型
说明
dest_flag
1
Integer
指示目的地址是发布列表的名字还是SME地址。
1:SME地址
2:发布列表的名字
SME Address
or
Distribution List Name
见下表
见下表
根据dest_flag标志位的不同,或者是一个SME地址,或者是一个发布列表的名字。
字段
长度(字节)
数据类型
说明
dest_addr_ton
1
Integer
SME地址类型
dest_addr_npi
1
Integer
SME地址编码方案
destination_addr
最大21
C-Octet String
目的地址
发布列表定义
字段
长度(字节)
数据类型
说明
dl_name
最大21
C-Octet String
发布列表的名字
5.5.5.2 SUBMIT_MULTI_RESP语法
此命令是SUBMIT_MULTI的响应消息。
消息头中的command_id是“submit_multi_resp”。消息体定义如下:
字段
长度(字节)
数据类型
说明
message_id
最大9
C-Octet String
短消息标识
no_unsuccess
1
Integer
发送未成功的数目
unsuccess_sme(s)
7-27
见下表
发送未成功的SME地址和发布列表的名字。
字段
长度(字节)
数据类型
说明
Dest_addr_ton
1
Integer
SME地址编码类型
Dest_addr_npi
1
Integer
SME地址编码方案
dstination_addr
最大21
C-Octet String
SME地址
error_status_code
4
Integer
发送到该SME地址是否成功
5.5.6 DELIVER_SM命令
5.5.6.1 DELIVER_SM语法
此命令由SMSC产生,SMSC通过此命令发送短消息到目的ESME,也可用于发送状态报告消息。
消息头中的command_id是“deliver_sm”。消息体定义如下:
字段
长度(字节)
数据类型
说明
service_type
最大6
C-Octet String
短消息服务类型,不使用置为NULL。
source_addr_ton
1
Integer
源地址编码类型。如果不知道源地址的编码类型,设置为0。
source_addr_npi
1
Integer
源地址编码方案。如果不知道源地址的编码方案,设置为0。
source_addr
最大21
C-Octet String
源地址
Dest_addr_ton
1
Integer
目的地址编码类型。
Dest_addr_npi
1
Integer
目的地址编码方案。
destination_addr
最大21
C-Octet String
目的地址
Esm_class
1
Integer
短消息类型
xx0000xx:普通短消息
xx0001xx:此消息为状态报告消息
其它:保留
protocol_id
1
Integer
协议类型
priority_flag
1
Integer
发送优先级(从0到3)3为最高级
schedule_delivery_time
1或者17
C-Octet String
计划下发短消息的时间。可以是绝对时间或相对时间,如果立即发送,设置为NULL。时间格式参照SMPP协议。
validity_period
1或者17
C-Octet String
短消息的有效期限,可以是绝对时间或相对时间,如果使用SMSC的默认有效期限,设置为NULL。时间格式参照SMPP协议。
registered_delivery_flag
1
Integer
注册短消息标志
xxxxxx00:不需要状态报告
xxxxxx01:需要状态报告(缺省)
其他:保留
replace_if_present_flag
1
Integer
保留,应设为0
Data_coding
1
Integer
数据编码方案
sm_default_msg_id
1
Integer
保留,应设为0
sm_length
1
Integer
短消息长度
short_message
最大254
Octet String
短消息内容
5.5.6.2 DELIVER_SM_RESP语法
此命令是DELIVER_SM的响应消息。
消息头中的command_id是“deliver_sm_resp”。消息体定义如下:
字段
长度(字节)
数据类型
说明
message_id
最大9
C-Octet String
短消息标识
5.5.7 DATA_SM命令
5.5.7.1 DATA_SM语法
此消息用于在ESME和SMSC之间传递消息,SMSC和ESME都可以使用此消息。ESME可以使用此消息请求SMSC发送短消息到用户终端,SMSC也可用此消息将用户终端发送的短消息传递到ESME。DATA_SM可用来传递状态报告。
消息头中的command_id是“data_sm”。消息体定义如下:
字段
长度(字节)
数据类型
说明
service_type
最大6
C-Octet String
短消息服务类型
source_addr_ton
1
Integer
源地址编码类型,不使用设为0
source_addr_npi
1
Integer
源地址编码方案,不使用设为0
source_addr
最大65
C-Octet String
源地址
dest_addr_ton
1
Integer
源地址编码类型,不使用设为0
dest_addr_npi
1
Integer
源地址编码方案,不使用设为0
destination_addr
最大65
C-Octet String
目的地址
esm_class
1
Integer
短消息类型
xx0000xx:普通短消息
xx0001xx:此消息为状态报告消息
其它:保留
registered_delivery
1
Integer
注册短消息标志
xxxxxx00:不需要状态报告
xxxxxx01:需要状态报告(缺省)
其他:保留
data_coding
1
Integer
数据编码方案
set_dpf
TLV
发送挂起标志,当发送失败时,可将此标志置位
qos_time_to_live
TLV
生存时长,提交后的时间长度,以秒为单位。
payload_type
TLV
用户数据类型
message_payload
TLV
用户数据,最大64K
5.5.7.2 DATA_SM_RESP语法
此消息为
展开阅读全文