外部接口((smppsmppsmpp)) 描述手册 -...

36
描述手册 描述手册 描述手册 描述手册 核心子系统 核心子系统 核心子系统 核心子系统 外部接口 外部接口 外部接口 外部接口(SMPP SMPP SMPP SMPP)

Upload: others

Post on 21-Sep-2019

29 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

册册册册 核核核核

外部外部外部外部 ))))

描述手描述手描述手描述手

心子系统心子系统心子系统心子系统

接口接口接口接口((((SMPPSMPPSMPPSMPP

Page 2: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

内容介绍

核心子系统外部接口 SMPP 描述手册 对SMSC的SMPP接口进行了详细的说

明 规定了SMSC和ESME之间通信的数据格式 包括SMPP与ESME的消息参数结构和

说明 本手册分为以下几个章节

第一章 概述

对SMPP的功能进行简单描述

第二章 SMPP消息结构

说明了SMPP消息流类型 消息头和消息体结构说明

第三章 返回错误代码

说明SMSC返回给ESME的错误代码及意义

核心子系统外部接口 SMPP 描述手册

撰 稿 高 飞

责任审阅 吴 俊 易 滨

Page 3: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

I

目目目目 录录录录

1 概述概述概述概述 ........................................................................................................................................................................................................................................ 1111----1111

2 SMPPSMPPSMPPSMPP消息结构消息结构消息结构消息结构............................................................................................................................................................................................................2222----1111

2.1 SMSC和ESME连接消息流................................................ 2-1

2.2 类型说明............................................................ 2-3

2.3 消息头结构.......................................................... 2-4

2.4 SMPP命令码.......................................................... 2-4

2.5 SMPP消息体结构...................................................... 2-6

2.5.1 BIND_RECEIVER................................................ 2-6

2.5.2 BIND_RECEIVER_RESP........................................... 2-6

2.5.3 BIND_TRANSMITTER............................................. 2-7

2.5.4 BIND_TRANSMITTER_RESP........................................ 2-7

2.5.5 UNBIND....................................................... 2-7

2.5.6 UNBIND_RESP.................................................. 2-8

2.5.7 SUBMIT_SM.................................................... 2-8

2.5.8 SUBMIT_SM_RESP............................................... 2-9

2.5.9 DELIVER_SM.................................................. 2-10

2.5.10 DELIVER_SM_RESP............................................. 2-12

2.5.11 QUERY_SM.................................................... 2-12

2.5.12 QUERY_SM_RESP............................................... 2-12

2.5.13 CANCEL_SM................................................... 2-13

2.5.14 CANCLE_SM_RESP.............................................. 2-14

2.5.15 ENQUIRE_LINK................................................ 2-14

2.5.16 ENQUIRE_LINK_RESP........................................... 2-15

2.5.17 GENERIC_NAK................................................. 2-15

2.5.18 ADD_SUB..................................................... 2-15

Page 4: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

II

2.5.19 ADD_SUB_RESP................................................ 2-16

2.5.20 DEL_SUB..................................................... 2-16

2.5.21 DEL_SUB_RESP................................................ 2-17

2.5.22 MOD_SUB..................................................... 2-17

2.5.23 MOD_SUB_RESP................................................ 2-17

2.5.24 ENQUIRE_SUB................................................. 2-18

2.5.25 ENQUIRE_SUB_RESP............................................ 2-18

2.6 SMPP消息体参数含义................................................. 2-20

3 返回错误代码返回错误代码返回错误代码返回错误代码............................................................................................................................................................................................................3333----1111

Page 5: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

III

插插插插 图图图图 目目目目 录录录录

图2-1 使用两条虚连接的方式的SMPP会话消息流.................................. 2-1

图2-2 使用一条虚连接的方式的SMPP会话消息流.................................. 2-2

Page 6: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

IV

列列列列 表表表表 目目目目 录录录录

表2-1 17个字节的时间字符串.................................................. 2-3

表2-2 SMPP消息头结构........................................................ 2-4

表2-3 SMPP命令码............................................................ 2-4

表2-4 BIND_RECEIVER消息体结构............................................... 2-6

表2-5 BIND_RECEIVER_RESP消息体结构.......................................... 2-6

表2-6 SUBMIT_SM消息体结构................................................... 2-8

表2-7 SUBMIT_SM_RESP消息体结构.............................................. 2-9

表2-8 DELIVER_SM消息体结构................................................. 2-10

表2-9 短消息内容字节定义................................................... 2-11

表2-10 QUERY_SM消息体结构.................................................. 2-12

表2-11 QUERY_SM_RESP消息体结构............................................. 2-13

表2-12 CANCEL_SM消息体结构................................................. 2-13

表2-13 ADD_SUB消息体结构................................................... 2-15

表2-14 DEL_SUB消息体结构................................................... 2-16

表2-15 ENQUIRE_SUB消息体结构............................................... 2-18

表2-16 ENQUIRE_SUB_RESP消息体结构.......................................... 2-18

表2-17 GSM_code............................................................ 2-21

表3-1 返回错误代码.......................................................... 3-1

Page 7: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第一章 概述

1-1

1 概述概述概述概述

SMPP协议规定了SMSC和ESME之间通信的数据格式 提供了TCP/IP接口 与SMSC建

立连接 并进行相关操作如提交短消息 查询短消息和删除短消息等等 通过本

接口 其他应用可以将信息以SM的形式发送给相关用户

所有的消息 不管是从ESME到SMSC 还是从SMSC到ESME的消息 都必须产生一个

响应 acknowledge

从ESME到SMSC发送提交短消息的消息 可能有两种响应

!" SMSC收到消息的响应 ACK

!" 如果这条短消息设置了需要状态报告 那么当这条短消息到达目标地之后

SMSC会产生一个状态报告的消息下发给ESME

Page 8: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-1

2 SMPPSMPPSMPPSMPP消息结构消息结构消息结构消息结构

2.1 SMSCSMSCSMSCSMSC和和和和ESMEESMEESMEESME连接消息流连接消息流连接消息流连接消息流

下面以例图来说明绑定后进行的会话过程 绑定后可进行任意多次会话

使用两条虚连接的方式见图2-1

图2-1 使用两条虚连接的方式的SMPP会话消息流

Page 9: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-2

使用一条虚连接的方式见图2-2

图2-2 使用一条虚连接的方式的SMPP会话消息流

Page 10: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-3

2.2 类型说明类型说明类型说明类型说明

在SMPP类型中 可能用到以下定义

!" integer 一定字节数所组成的整数 高位在前 低位在后 例如 1字节

BYTE 2字节 WORD 4字节 DWORD 6字节等等

!" C_String 以NULL结束的ASCII字符串

!" C_DecString 以NULL结束的ASCII字符串 它由一系列的10进制字符组成

(‘0’#’9’).

!" C_OctetString 由任意8位字节组成数据流串

!" C_HexString:以NULL结束的ASCII字符串 它由一系列的16进制字符组成

(‘0’#’9’,‘A’(‘a’)#‘F’(‘f’))

!" C_UnicodeString 以NULL结束的Unicode编码的字符串

!" C_StringTime:表示时间的字符串 格式为 YYMMDDhhmmsstnnp" 长度定

为17个字节或1个字节 最后一个字节值必须为NULL 1个字节表示使用缺省

的时间定义 由短消息中心实现时具体设置 17个字节的具体格式如下表

2-1

表2-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.

Page 11: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-4

对于千年问题 采用时间窗口的方法来解决 具体方法为YY>90解释为19YY 否

则解释为20YY

2.3 消息头结构消息头结构消息头结构消息头结构

SMPP消息结构见表2-2所示

表2-2 SMPP消息头结构

字 段 长度 字节 类 型 描 述

Command_Length 4 Integer 消息包的长度 包括此字段

Command_ID 4 Integer

这个字段表明此条短消息的类型 例

如 ESME_SUB_SM表示此消息为 ESME向

SMSC提交短消息

Command_status 4 Integer

此字段表示一个命令的成功与失败

如失败 指示引起失败的错误类型等

信息 它在请求中必须设为0

Sequence_No 4 Integer

此字段表示消息的序列号 它由ESME

产生 它是消息和它的应答之间的对

应标志 它的数值在0到0XFFFFFFFF间

必须保证严格单调的递增 当达到

0XFFFFFFFF时 从0开始下一循环

Optional

Message Body 可变 混合

此字段表示短消息的消息体部分 具

体定义参见2.6节

2.4 SMPPSMPPSMPPSMPP命令码命令码命令码命令码

SMPP命令码定义如表2-3所示

表2-3 SMPP命令码

命令码宏定义 数 值 描 述

ESME_BNDRCV 0X00000001 ESME要求连接到SMSC

ESME_BNDRCV_RESP 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下发此短消

息到特定的用户

Page 12: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-5

命令码宏定义 数 值 描 述

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_QRYLINK 0X00000015 询问扩展短消息实体与短消息中心的连接情况

ESME_QRYLINK_RESP 0X80000015 询问扩展短消息实体与短消息中心的连接情况

的响应

ESME_NACK 0X80000000 接收消息头错误的响应

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 查询用户的信息的响应

注 如果 ESME_QRYLINK 无响应 则应重新连接

Page 13: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-6

2.5 SMPPSMPPSMPPSMPP消息体结构消息体结构消息体结构消息体结构

通过SMPP协议 ESME 能连接或断连 UNBIND SMSC 提交 SUBMIT 替换

REPLACE 取消 CANCEL 查询 QUERY 短消息 SMSC能下发

DELIVERY 短消息到ESME

在 传 递 短 消 息 之 前 必 须 先 建 立 虚 连 接 bind_transmitter

bind_receiver 之后才能够进行短消息传递

2.5.1 BIND_RECEIVERBIND_RECEIVERBIND_RECEIVERBIND_RECEIVER

此命令在扩展短消息实体和短消息中心之间产生虚连接 该连接支持所有的协议

命令 可以接收DELIVER及短消息送达状态报告

消息头中的Command_ID是 ESME_BNDRCV" 消息体结构见表2-4所示

表2-4 BIND_RECEIVER消息体结构

字 段 长度(字节) 类 型 描 述

System_id 最大 16 C_String 接口ID

Password 最大 9 C_String 密码

System_type 最大 13 C_String 保留 应设为NULL

Interface_version 1 Integer 接口版本号

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

Address_range 最大 41 C_DecString 保留 应设为NULL

2.5.2 BIND_RECEIVER_RESPBIND_RECEIVER_RESPBIND_RECEIVER_RESPBIND_RECEIVER_RESP

消息头中的Command_ID 是 ESME_BNDRCV_RESP"

该命令消息体结构见表2-5所示

表2-5 BIND_RECEIVER_RESP消息体结构

字 段 大小(字节) 类 型 描 述

System_id 最大 16 C_String 接口ID

Page 14: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-7

状态取值范围

ESME_ROK

ESME_RUNKNOWNERR

ESME_RUNKNOWNERR

ESME_RINVBNDSTS

ESME_RINVSYSIDSRV

ESME_RINVSYSIDSRV

ESME_RINVPASWDLEN

ESME_RINVSYSTYP

ESME_RUNKNOWNERR

ESME_RUNKNOWNERR

ESME_RINVMSGLEN

ESME_RINVSYSIDSRV

ESME_RSYSERR

ESME_RLIMITEXCEED

2.5.3 BIND_TRANSMITTERBIND_TRANSMITTERBIND_TRANSMITTERBIND_TRANSMITTER

此命令在扩展短消息实体和短消息中心之间产生虚连接 和BIND_RECEIVER的语

法一样 只是在消息头里的Command_ID为"ESME_BNDTRN"

此命令建立的连接ESME用于发送短消息 不接收短消息

2.5.4 BIND_TRANSMITTER_RESPBIND_TRANSMITTER_RESPBIND_TRANSMITTER_RESPBIND_TRANSMITTER_RESP

此命令和BIND_RECEIVER_RESP的语法一样 只是在消息头里的Command_ID为

"ESME_BNDTRN_RESP"

状态取值范围同BIND_RECEIVER_RESP

2.5.5 UNBINDUNBINDUNBINDUNBIND

此命令用于断开ESME和SMSC之间的连接

此消息只有消息头 没有消息体 消息头中的Command_ID是 ESME_UBD"

Page 15: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-8

2.5.6 UNBIND_RESPUNBIND_RESPUNBIND_RESPUNBIND_RESP

此消息只有消息头 没有消息体 消息头中的Command_ID是 ESME_UBD_RESP"

状态取值范围

ESME_ROK

ESME_RINVBNDSTS

2.5.7 SUBMIT_SMSUBMIT_SMSUBMIT_SMSUBMIT_SM

此命令用于ESME提交短消息到SMSC 以便SMSC把此短消息发给特定的移动台

注 提交预定义短消息时 短消息内容长度以及短消息内容字段无效

该命令消息头中的Command_ID是"ESME_SUB_SM" 消息体结构见表2-6所示

表2-6 SUBMIT_SM消息体结构

字 段 大小(字节) 类 型 描 述

Service_type 最大6 C_DecString

短消息服务的类别

如果为NULL 或’0’系统自动使用当前systemID代替

Source_address_to

n 1 integer 保留 应设为0

Source_address_np

i 1 integer 保留 应设为0

Source_address 最大21 C_DecString 源地址

Dest_address_ton 1 integer 保留 应设为0

Dest_address_npi 1 integer 保留 应设为0

Destination_addre

ss 最大21 C_DecString 目的地址

Esm_class 1 Integer 短消息类型

Protocol_ID 1 Integer PAS协议类型

Priority_flag 1 integer 优先级

Schedule_delivery

_time 最大17 C_StringTime

计划下发短消息的时间

(当提交预定义短消息时无效)

Validity_peroid 最大17 C_StringTime 短消息的最后生存期限

(当提交预定义短消息时无效)

Page 16: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-9

字 段 大小(字节) 类 型 描 述

Registered_delive

ry_flag 1 integer

注册短消息标志

0:不需要status report

1:需要status report

Replace_if_presen

t_flag 1 integer

替换短消息标志

0:替换

1:不替换

Data_coding 1 integer 数据编码方案 参见2.6节

(当提交预定义短消息时无效)

Sm_default_msg_id 1 integer 预定义短消息ID

Sm_length 1 integer 短消息的长度

Short_message_tex

t 最大120 C_OctetString 短消息数据内容

2.5.8 SUBMIT_SM_RESPSUBMIT_SM_RESPSUBMIT_SM_RESPSUBMIT_SM_RESP

该命令消息头中的Command_ID是"ESME_SUB_SM_RESP" 消息体结构见表2-7

表2-7 SUBMIT_SM_RESP消息体结构

字 段 大小(字节) 类 型 描 述

Message_id 最大9 C_HexString 短消息ID

状态取值范围

ESME_ROK

ESME_RSERNOTSUP

ESME_RLIMITEXCEED

ESME_RINVBNDSTS

ESME_RINVSRCADR

ESME_RINVDSTADDRLEN

ESME_RINVDSTADR

ESME_RINVSCHED

Page 17: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-10

ESME_RINVEXPIRY

ESME_RUNKNOWNERR

ESME_RCUSTNOTEXIST

ESME_RINVSYSIDSRV

ESME_RINVMSGLEN

ESME_RSYSERR

2.5.9 DELIVER_SMDELIVER_SMDELIVER_SMDELIVER_SM

此命令由SMSC产生 SMSC通过此命令发送短消息到目的ESME 它也可用于发送送

达状态报告 DELIVERY RECEIPT 消息 ESME只有在由bind_receiver建立的虚

连接中接收此消息

此消息结构中有一些字段是无效的 注意表2-8中的 描述 部分

消息头中的Command_ID是 ESME_DELIVER_SM" 消息体结构见表2-8所示

表2-8 DELIVER_SM消息体结构

字 段 长度(字节) 类 型 描 述

Service_type 最大6 C_DecString 保留 应设为NULL

Source_address_to

n 1 integer 保留 应设为0

Source_address_np

i 1 integer 保留 应设为0

Source_address 最大21 C_DecString 源地址

Dest_address_ton 1 integer 保留 应设为0

Dest_address_npi 1 integer 保留 应设为0

Destination_addre

ss 最大21 C_DecString 目的地址

Esm_class 1 integer

短消息类型

对 于 DELIVER_SM 命 令

esm_class BIT2为1表示此条消

息为送达状态报告消息 为0表

示普通消息

Protocol_ID 1 integer 保留 应设为0

Priority_flag 1 integer 优先级

Page 18: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-11

字 段 长度(字节) 类 型 描 述

Schedule_delivery

_time 最大17 C_StringTime 保留 应设为NULL

Validity_peroid 最大17 C_StringTime 保留 应设为NULL

Registered_delive

ry_flag 1 integer 保留 应设为0

Replace_if_presen

t_flag 1 integer 保留 应设为0

Data_coding 1 integer 数据编码方案

Sm_default_msg_id 1 integer 保留 应设为0

Sm_length 1 integer 短消息的长度

Short_message_tex

t 最大120 可变 短消息数据内容

状态报告的数据包含在短消息内容字段中 短消息内容的长度是固定值 为66个

字节 具体定义请参考表2-9

表2-9 短消息内容字节定义

字 段 长度(字节) 类 型 描 述

Id 10 数值字符串 上次提交到短消息中心的短消

息编号

Sub 3 数值字符串 保留 未用

Dlvrd 3 数值字符串 保留 未用

Submit date 10 日期字符串 提交短消息时间

时间格式为 YYMMDDhhmm

Done date 10 日期字符串 短消息产生状态报告时间

时间格式为 YYMMDDhhmm

Stat 7 字符串

定义如下

DELIVRD 发送成功

EXPIRED 过期

DELETED 删除

UNDELIV 未发送

REPLACE 被替换

UNKNOWN 未知状态

Page 19: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-12

字 段 长度(字节) 类 型 描 述

Err 3 数值字符串 GSM errcode,保留

Text 20 八位组 短消息内容前20字节 保留

注 以上字段均为固定长度的字符串 对于数值字符串 如果不足 前面

补’0’ 字段不是以’\0’结尾的

2.5.10 DELIVER_SM_RESPDELIVER_SM_RESPDELIVER_SM_RESPDELIVER_SM_RESP

它的语法和 SUBMIT_SM_RESP的语法消息体是一样的 只是在消息头中的

Command_ID是 ESME_DELIVER_SM_RESP"

2.5.11 QUERY_SMQUERY_SMQUERY_SMQUERY_SM

此命令用于ESME向SMSC查询以前所提交的短消息的状态

查询短消息时 如果此消息在发送消息队列中 Command_status(参见2.4节)将

返回E_SUCCESS QUERY_SM_RESP的GSM_code的有效值 参见2.6节 消息体参数说

明#GSM_code 中有 * 的部分 ;如果此消息已经转存到 CDR 中

Command_status(参见2.4节)返回E_OTHERERR

消息头中的Command_ID是"ESME_QUERY_SM" 消息体结构见表2-10

表2-10 QUERY_SM消息体结构

字 段 长度(字节) 类 型 描 述

Message_id 最大9 C_HexString 短消息ID

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

Address 最大21 C_DecString 地址

2.5.12 QUERY_SM_RESPQUERY_SM_RESPQUERY_SM_RESPQUERY_SM_RESP

消息头中的Command_ID是"ESME_QUERY_SM_RESP" 消息体结构见表2-11

Page 20: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-13

表2-11 QUERY_SM_RESP消息体结构

字 段 长度(字节) 类 型 描 述

Message_id 最大9 C_HexString 短消息ID

Final_date 最大17 C_StringTime 短消息生命周期终止时间

Message_status 1 Integer 短消息当前的状态

GSM_code 1 Integer PAS 错误码 参见2.6节

状态取值范围

ESME_ROK

ESME_RUNKNOWNERR

ESME_RINVDSTADDRLEN

ESME_RINVDSTADR

ESME_RINVMSGID

ESME_RSYSERR

ESME_RINVBNDSTS

ESME_RINVMSGLEN

ESME_RLIMITEXCEED

2.5.13 CANCEL_SMCANCEL_SMCANCEL_SMCANCEL_SM

此命令用于取消ESME以前所提交的短消息 能取消指定短消息ID的短消息

消息头中的Command_ID是"ESME_CANCEL_SM" 消息体结构见表2-12

表2-12 CANCEL_SM消息体结构

字 段 长度(字节) 类 型 描 述

Service_type 最大6 C_DecString 短消息服务的类别

Message_id 最大9 C_HexString

短消息ID 设置为NULL时表示

取消所有当前短消息实体所发

出的与目标地址相同的短消息

Source_address_to

n 1 integer 保留 应设为0

Page 21: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-14

字 段 长度(字节) 类 型 描 述

Source_address_np

i 1 integer 保留 应设为0

Source_address 最大21 C_DecString 源地址

Dest_address_ton 1 integer 保留 应设为0

Dest_address_npi 1 integer 保留 应设为0

Destination_addre

ss 最大21 C_DecString 目的地址

2.5.14 CANCLE_SM_RESPCANCLE_SM_RESPCANCLE_SM_RESPCANCLE_SM_RESP

此 命 令 只 有 消 息 头 没 有 消 息 体 消 息 头 中 的 Command_ID 是

"ESME_CANCEL_SM_RESP"

状态取值范围

ESME_ROK

ESME_RSERNOTSUP

ESME_RINVBNDSTS

ESME_RINVMSGID

ESME_RINVSRCADDRLEN

ESME_RINVDSTADDRLEN

ESME_RINVDSTADR

ESME_RINVMSGLEN

ESME_RSYSERR

ESME_RCNTCANMSG

ESME_RLIMITEXCEED

2.5.15 ENQUIRE_LINKENQUIRE_LINKENQUIRE_LINKENQUIRE_LINK

此命令用于ESME确认和SMSC之间的连接 ESME发送一条ENQUIRE_LINK命令 SMSC

响应一条ENQUIRE_LINK_ACK命令 表示ESME和SMSC之间的连接存在

此命令只有消息头 没有消息体 消息头中的Command_ID是"ESME_QRYLINK"

Page 22: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-15

2.5.16 ENQUIRE_LINK_RESPENQUIRE_LINK_RESPENQUIRE_LINK_RESPENQUIRE_LINK_RESP

此 命 令 只 有 消 息 头 没 有 消 息 体 消 息 头 中 的 Command_ID 是

"ESME_QRYLINK_RESP"

状态取值范围

ESME_ROK

2.5.17 GENERIC_NAKGENERIC_NAKGENERIC_NAKGENERIC_NAK

此命令用于当接收消息头有错误的时候的响应 该响应只能由收到请求方发出

此命令只有消息头 没有消息体 消息头中的Command_ID是"ESME_NACK"

状态取值范围

ESME_RINVMSGLEN

ESME_RINVCMDID

2.5.18 ADD_SUBADD_SUBADD_SUBADD_SUB

此命令用于在SMSC数据库中增加一个用户

消息头中的Command_ID是"ESME_ADD_SUB" 消息体结构见表2-13

表2-13 ADD_SUB消息体结构

字 段 长度(字节) 类 型 描 述

Sub_ID 最大21 C_DecString 用户ID(手机号码)

Sub_name 最大21 C_String 用户名

Sub_address 最大42 C_String 用户通信地址

MS_type 1 Integer 手机类型 参见2.6节

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

SM_allowed 1 Integer 是否提供短消息

参见2.6节

OCOS 1 Integer 保留 应设为0

TCOS 1 Integer 保留 应设为0

Password 最大9 C_String 密码

PSNumber 最大21 C_String PS号码

Page 23: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-16

字 段 长度(字节) 类 型 描 述

Def_dcs 2 Integer 手机用户的默认数据编码方案

高字节设置为0

2.5.19 ADD_SUB_RESPADD_SUB_RESPADD_SUB_RESPADD_SUB_RESP

此 命 令 只 有 消 息 头 没 有 消 息 体 消 息 头 中 的 Command_ID 是

"ESME_ADD_SUB_RESP".

状态取值范围

ESME_ROK

ESME_RINVCUSTNAMLEN

ESME_RINVCUSTADRLEN

ESME_RINVPASWDLEN

ESME_RUNKNOWNERR

ESME_RINVCUSTIDLEN

ESME_RINVCUSTID

ESME_RINVSRCADR

ESME_RINVMSGLEN

ESME_RSYSERR

ESME_RLIMITEXCEED

2.5.20 DEL_SUBDEL_SUBDEL_SUBDEL_SUB

此命令用于删除一个用户

消息头中的Command_ID是"ESME_DEL_SUB" 消息体结构见表2-14

表2-14 DEL_SUB消息体结构

字 段 长度(字节) 类 型 描 述

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

Sub_ ID 最大 21 C_DecString 用户ID(手机号码)

Page 24: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-17

2.5.21 DEL_SUB_RESPDEL_SUB_RESPDEL_SUB_RESPDEL_SUB_RESP

此命令只有消息头 没有消息体 消息头中的Command_ID是"DEL_SUB_RESP"

状态取值范围

ESME_ROK

ESME_RUNKNOWNERR

ESME_RINVCUSTIDLEN

ESME_RINVCUSTID

ESME_RINVSRCADDRLEN

ESME_RINVMSGLEN

ESME_RSYSERR

ESME_RLIMITEXCEED

2.5.22 MOD_SUBMOD_SUBMOD_SUBMOD_SUB

此命令用于修改用户信息

此命令的数据结构与ADD_SUB的结构一致 只是Command_ID为"ESME_MOD_SUB"

2.5.23 MOD_SUB_RESPMOD_SUB_RESPMOD_SUB_RESPMOD_SUB_RESP

此 命 令 的 数 据 结 构 与 ADD_SUB_RESP 的 结 构 一 致 只 是 Command_ID 为

"ESME_MOD_SUB_RESP"

状态取值范围

ESME_ROK

ESME_RINVCUSTNAMLEN

ESME_RINVCUSTADRLEN

ESME_RINVPASWDLEN

ESME_RUNKNOWNERR

ESME_RINVCUSTIDLEN

ESME_RINVCUSTID

ESME_RINVSRCADR

Page 25: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-18

ESME_RINVMSGLEN

ESME_RSYSERR

ESME_RLIMITEXCEED

2.5.24 ENQUIRE_SUBENQUIRE_SUBENQUIRE_SUBENQUIRE_SUB

此命令用于查询用户的详细信息

消息头中的Command_ID是"ESME_QRY_SUB" 消息体结构见表2-15

表2-15 ENQUIRE_SUB消息体结构

字段 长度(字节) 类型 描述

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

Sub_ID 最大21 C_DecString 用户ID(手机号码)

2.5.25 ENQUIRE_SUB_RESPENQUIRE_SUB_RESPENQUIRE_SUB_RESPENQUIRE_SUB_RESP

消息头中的Command_ID是"ESME_QRY_SUB_RESP" 消息体结构见表2-16

表2-16 ENQUIRE_SUB_RESP消息体结构

字段 长度(字节) 类型 描述

Sub_ID 最大 21 C_DecString 用户ID(手机号码)

Sub_name 最大 21 C_String 用户名

Sub_address 最大 42 C_String 用户通信地址

MS_type 1 Integer 手机类型

Ton 1 Integer 保留 应设为0

Npi 1 Integer 保留 应设为0

SM_allowed 1 Integer 是否提供短消息

参见2.6节

OCOS 1 Integer 保留 应设为0

TCOS 1 Integer 保留 应设为0

Password 最大 9 C_String 密码

Reg_datetime 最大17 C_StringTime 用户注册时间

Page 26: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-19

字段 长度(字节) 类型 描述

PSNumber 最大21 C_String PS号码

Def_dcs 2 Integer 手机用户的默认数据编码方案

高字节设置为0

状态取值范围

ESME_ROK

ESME_RINVCUSTIDLEN

ESME_RINVCUSTID

ESME_RCUSTNOTEXIST

ESME_RINVMSGLEN

ESME_RSYSERR

ESME_RLIMITEXCEED

Page 27: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-20

2.6 SMPPSMPPSMPPSMPP消息体参数含义消息体参数含义消息体参数含义消息体参数含义

!" address

地址号码

!" address_range

地址范围

!" data_coding

数据编码方案

- 0__ASCII

- 1__GB2312

- 2__UNICODE

- 3__BIG5

!" def_dcs

手机用户的默认数据编码方案

高字节设置为0 低字节取值与 data_coding 相同

!" dest_address_npi

目的地址编码方案 同npi

!" dest_address_ton

目的地址编码类型 同ton

!" destination_address

目的地址 同address

!" esm_class

短消息类型

对于SUBMIT_SM DELIVER_SM 命令 其余BIT值为0

对于DELIVER_SM命令 BIT 2为1表示此条消息为送达状态报告消息 为0表

示普通消息 其余BIT值为0

!" final_date

Page 28: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-21

短消息的生命期终止的实际时间 如果此短消息已从SMSC的等待发送队列中

删除 即为删除时间 否则为SMSC当前的时间

!" GSM_code

PAS错误码 见表2-17所示

表2-17 GSM_code

错 误 码 值 描 述

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 内存不足

表2-17中标有 * 的部分请参考2.5.12 QUERY_SM_RESP

!" interface_version

用来描述本协议的版本号

现约定interface_version=10

!" message_id

短消息ID 它由SMSC设置 用于查询以及替换短消息等操作时使用

!" message_status

短消息当前的状态

- 0 工作状态

- 1 发送成功

Page 29: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-22

- 2 发送失败

- 3 因下发失败而等待

- 4 因定时消息而等待

- 5 短消息被删除

- 6 短消息超时删除

- 7 无效状态

- 8到127 保留

!" MS_type

手机类型标识码

类型定义及其含义在SMSC数据库中定义 在网管前台可以进行配置

例如

- 100 支持ASCII

- 101 支持BIG5

- 102 支持 ASCII 及 BIG5

!" npi

地址编码方案(系统保留)

!" OCOS

最大提交短消息 某移动台提交到SMSC的等待下发的短消息的最大数目(系

统保留)

!" password

用来登录的密码

!" priority_flag

优先级

- 1 高优先级

- 0 普通优先级

- 其它 保留

!" protocol_ID

Page 30: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-23

PAS协议类型(系统保留 设置为0)

!" registered_delivery_flag

注册短消息标志 它表示当此短消息到达最后的目的地后 是否需要送达状

态报告 DELIVERY RECEIPT

- 0 不需要

- 1 需要

- 其它 保留

!" reg_datetime

用户注册登记时间

!" replace_if_present_flag

替换标志

在当前连接中 SUBMIT命令中指示的目的地址和业务类型 Service_type

与等待下发的短消息的目的地址及业务类型都相同时 是否替换这些等待下

发的短消息 在DELIVERY命令中该参数无效 需置为0

- 0 不替换

- 1 替换

- 其它 保留

!" schedule_delivery_time

对于SUBMIT命令 该参数指计划下发短消息的时间 对于DELIVERY命令 该

参数指SMSC收到要下发到ESME的短消息的时间

!" service_type

短消息服务的类别

!" short_message_text

短消息数据内容 类型为 C_OctetString 最长为120字节

!" SM_allowed

支持两种方式 使用哪一种方式可根据实际项目需要确定

- 用一个字节表示sm_allowed 表示MT MO是否提供短消息业务

0: 不提供

Page 31: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-24

1: 提供

其余值保留

- 分高四位和低四位

高四位表示mt_allowed 即是否允许mt服务 其中

0 表示禁止

1 表示开通

低四位表示mo_allowed 即是否允许mo服务 其中

0 表示禁止

1 表示开通

其余值保留

!" sm_default_msg_id

预定义短消息ID 不是预定义短消息时应设为0 预定义短消息ID值从0x01

到0xff 其值的具体含义由特定的ESME和SMSC约定

!" sm_length

短消息的数据长度 以字节计算

!" source_address

源地址编号 同address

!" source_address_npi

源地址编码方案 同npi(系统保留)

!" source_address_ton

源地址编码类型 同ton(系统保留)

!" sub_address

用户通信地址

!" sub_ID

用户ID 电话号码

!" sub_name

用户名

Page 32: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第二章 SMPP消息结构

2-25

!" system_id

接口ID 用来描述虚拟连接的用户名 即ESME登录SMSC使用的帐号

!" system_type

用来描述用户的类型

!" TCOS

最大下发数 指等待下发到某移动台的最大短消息数目(系统保留)

!" ton

地址编码类型(系统保留)

!" validity_peroid

短消息的最后生存期限

Page 33: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第三章 返回错误代码

3-1

3 返回错误代码返回错误代码返回错误代码返回错误代码

SMSC返回ESME的错误代码见表3-1

表3-1 返回错误代码

返 回 信 息 值 描 述

ESME_ROK 0x00000000 成功

ESME_RINVMSGLEN 0x00000001 消息长度错误

ESME_RINVCMDLEN 0x00000002 命令长度错误

ESME_RINVCMDID 0x00000003 消息ID无效

ESME_RINVBNDSTS 0x00000004 无效的BIND状态

ESME_RSYSERR 0x00000008 SMSC 系统错误

ESME_RINVSRCADR 0x0000000A 源地址错误

ESME_RINVDSTADR 0x0000000B 目的地址错误

ESME_RINVMSGID 0x0000000C 无效的消息ID

ESME_RINVPASWD 0x0000000D 无效的密码

ESME_RINVPASWDLEN 0x0000000E 密码长度错误

ESME_RINVSYSIDSRV 0x0000000F 无效的SYSTEMID

ESME_RCNTCANMSG 0x00000011 不能取消此消息

ESME_RMSGQFUL 0x00000014 超过最大下发数

ESME_RSERNOTSUP 0x00000015 不支持此服务类型

ESME_RINVCUSTID 0x0000001D 用户ID错误

ESME_RINVCUSTIDLEN 0x0000001E 用户ID长度错误

ESME_RINVCUSTNAMLEN 0x0000001F 用户名长度错误

ESME_RINVCUSTADRLEN 0x00000021 用户地址长度错误

ESME_RCUSTEXIST 0x00000023 指定用户已经存在

ESME_RCUSTNOTEXIST 0x00000024 指定用户不存在

ESME_RINVSRCADDRLEN 0x00000046 源地址长度错误

ESME_RINVDSTADDRLEN 0x00000047 目的地址长度错误

ESME_RINVSYSTYP 0x00000053 无效的SYSTEMTYPE

ESME_RLIMITEXCEED 0x00000056 消息提交速度超过限定 注1

ESME_RINVSCHED 0x00000061 无效的定时时间

Page 34: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 第三章 返回错误代码

3-2

返 回 信 息 值 描 述

ESME_RINVEXPIRY 0x00000062 无效的超时时间

ESME_RUNKNOWNERR 0x000000FF 未知错误

注 如果ESME 端发送短消息过快 SMSC 将返回ESME_RLIMITEXCEED 此时ESME

端应在延时后重发此短消息

Page 35: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

核心子系统外部接口(SMPP)描述手册 缩写术语

缩写术语缩写术语缩写术语缩写术语

ESMEESMEESMEESME Extended Short Message Entity 外部短消息实体

MOMOMOMO PS Originated(short message is

submitted from a PS)

PS 发起的短消息

MTMTMTMT PS Terminated( A short message is

delivered to a PS)

PS 终止的短消息

PASPASPASPAS Personal Access System 无线市话系统

SMSMSMSM Short Message 短消息

SMPPSMPPSMPPSMPP Short Message Peer to Peer 短消息SMPP协议

SMSMSMSMSSSS Short Message Service 短消息服务

SMSCSMSCSMSCSMSC Short Message Service Center 短消息中心

Page 36: 外部接口((SMPPSMPPSMPP)) 描述手册 - read.pudn.comread.pudn.com/downloads3/doc/10942/SMPP协议.pdf内容介绍 核心子系统外部接口 smpp 描述手册 对smsc的smpp接口进行了详细的说

�����������������������������

� ���� ���� �� � ������ � ����������� ��

� !"#$%&�'()*+,�-.(/ 0#�$123�!"456789:; <

<��=>?@( �

���������������� ������������������

��� ��������� �� ��

� � � � ���� � � � � � ���� � � � � � ���� � � � � � �����

�� ���������������������������

����� � � � � � � � � � � � � � � � � � � ���������

���������� � � � � � � � � � � � � � � � ����� !"�#�

�$%&'(� � � � � � � )*+,-./�

�01�

2345678�9:;<=+, �

�� ������ !"�#$� �

��� %�&'���( )*+,-��./ �01./2��34567 �

��� )�89:�;< �=>? �

�$@A��BC �D���EFGH �

>? � � � � � � @A � � � � � BC � � � � � �

�D � � � � � � � � � � � � ������ � � � � � �

EF � � � � � � � � � � � � G� � � � � � �

HI8JKLMN �

��O�PQR�STUVWX�

EFEFEFEF QRY�Z [\] ^_`aAb \^cdefghd

BCBCBCBC ijkl[mnnno\pq\rnknod

stststst ijkl[mnn][q[old

G�G�G�G� p[jj[\d