当前位置: 首页 > >

中国电信集团公司技术标准_短信息网关协议(SMGP)规范(V3.1)

发布时间:

中国电信〔2008〕1451 号
关于印发中国电信短消息 网关协议规范(V3.1)的通知
集团公司各省级分公司,股份公司并转各省级分公司: 为更好地适应全业务经营的需要,集团公司组织上海研究
院对 2005 年下发的中国电信短消息网关协议规范(V3.0)(中 国电信〔2005〕240 号)进行了修订,形成了《中国电信短消息 网关协议(SMGP)规范(V3.1),现印发你们,请参照执行。
二○○八年十二月五日

保密等级:公开发行
中国电信集团公司技术标准
Q/CT 2069-2008
中国电信短消息网关协议(SMGP)规范
(V3.1)

2008-12-10 发布

2008-12-10 实施

中国电信集团公司 发布

目录
目 录..................................................................... I 前 言................................................................... III 1 范围 ...................................................................... 1 2 规范性引用文件............................................................. 1 3 名词术语和缩略语........................................................... 1 3.1 名词术语................................................................. 1 3.2 缩略语................................................................... 1 4 SMGP 协议概述 .............................................................. 1 4.1 定义..................................................................... 1 4.2 通信方式................................................................. 1 4.2.1 长连接................................................................. 1 4.2.2 短连接................................................................. 2 4.3 协议应用及涉及的端口号................................................... 3 4.3.1 固定网短消息业务....................................................... 3 4.3.2 移动网短消息业务....................................................... 5 4.3.3 基于短消息的电子商务业务............................................... 5 5 SMGP 协议 .................................................................. 6 5.1 数据类型................................................................. 6 5.1.1 基本数据类型........................................................... 6 5.1.2 可选参数............................................................... 6 5.2 消息结构................................................................. 6 5.2.1 消息头结构............................................................. 6 5.2.2 消息体结构............................................................. 6 6 SMGP 扩展协议 ............................................................. 12 6.1 SMGP 协议扩展计费接口 ................................................... 12 6.1.1 消息头扩展............................................................ 12 6.1.2 消息体扩展............................................................ 12 6.2 SMGP 协议扩展电子商务接口 ............................................... 15 6.2.1 消息头扩展............................................................ 15 6.2.2 消息体扩展............................................................ 15 7 参数定义.................................................................. 18 7.1 消息头参数描述.......................................................... 18 7.2 消息体必选参数描述...................................................... 19 7.3 消息体可选参数描述...................................................... 32 8 基于 SMGP 协议的 API 函数................................................... 37 附 录 A 基于 SMGP 协议的 API 函数说明....................................... 38 A.1 基本要求................................................................ 38 A.1.1 安装.................................................................. 38 A.1.2 例子程序.............................................................. 38 A.1.3 操作系统*台要求...................................................... 38 A.2 API 数据结构说明(以 C 语言为例) ........................................ 38 A.2.1 接收短消息的返回数据结构(DeliverResp) ............................... 38 A.2.2 获取群发短消息的返回数据结构(SendBatchResp) ......................... 39 A.2.3 查询短消息网关的返回数据结构(QueryResp 可选) ........................ 39 A.3 API 函数说明 ............................................................ 39
I

A.3.1 初始化 API(InitSMGPAPI) ............................................. 39 A.3.2 发送单条短消息(SMGPSendSingle)...................................... 40 A.3.3 群发短消息(SMGPSendBatch)........................................... 40 A.3.4 获取群发短消息的结果(GetSendBatchResp) .............................. 41 A.3.5 接收短消息(SMGPDeliver)............................................. 42 A.3.6 检查短消息网关是否能够提供服务(CMMPActiveTest) ...................... 42 A.3.7 查询短消息流量(SMGPQuery 可选) ...................................... 42 A.4 配置 SMGP API ........................................................... 42 A.5 短消息的自动分割功能.................................................... 43 A.6 错误代码含义............................................................ 43 附 录 B 短消息群发功能的实现.............................................. 45
II

前言
本规范是依据 SMGP 协议 V3.0 的相关内容,结合中国电信 C 网业务网络 SMS 的特点 进行编写,随着中国电信业务网络 SMS 的发展完善,还将制定后续的相关规范要求。
本规范规定了短消息网关与其它网元之间进行短消息传输的接口协议。 本标准共包含 3 部分:1、SMGP 基本协议;2、SMGP 协议扩展计费接口;3、SMGP 协议扩展电子商务接口。本文只描述了第 1 部分 SMGP 基本协议,第 2 部分和第 3 部分同 SMGP 协议 V2.0。 本标准由中国电信集团公司提出并归口。 本标准起草单位:中国电信股份有限公司上海研究院 本标准主要起草人:蒋力 施唯佳 葛敏 顾丽丽 周文君 王建
III

1 范围
本协议适用于短消息网络上(固定网、移动网)短消息网关与其它网元之间进行短消息 的传输。
本协议适用于短消息网关、相关网元设备开发商及内容提供商。
2 规范性引用文件
下列文件通过本文的参考而成为本规范的条款。凡是注日期的参考文件,其随后所有的 修改单(不包括勘误的内容)或修订版均不适用于本文,凡是不注日期的参考文件,其最新 版本适用于本文。
【1】 中国电信短消息网关协议(SMGP)V3.0 【2】 中国电信 CDMA 业务网络设备技术规范-短消息业务网关(SMSGW)设备
技术规范
3 名词术语和缩略语
3.1 名词术语 ESME:外部短消息实体,通常通过 SMPP 协议接入到短消息中心。 SMSC:短消息业务中心,提供短消息的存储、转发等功能。 SMGW:短消息业务接入网关,提供短消息与外部网络的互通和短信增值业务的接入
等功能。 3.2 缩略语

缩略语 ESME SP SMSC SMGP SMGW SMPP

英文解释

中文解释

External Short Message Entity

外部短消息实体

Service Provider

服务提供商

Short Message Service Center

短消息业务中心

Short Message Gateway Protocol

短消息网关协议

Short Message Gateway

短消息网关

Short Message Point to Point Protocol 短消息点到点协议

4 SMGP 协议概述

4.1 定义 SMGP 协议是 SMGW 与其它网元设备(除 SMC 外)进行短消息传输的接口协议。 非 SMC 网元设备向 SMGW 发送或从 SMGW 接收短消息,这些非 SMC 网元设备称为
ESME。 4.2 通信方式 SMGW 与 ESME 之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个
TCP 连接上可以连续发送多个数据包,在 TCP 连接保持期间,如果没有数据包发送,需要 双方发链路检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个 TCP 连 接,数据发送完成后,则断开此 TCP 连接,即每次 TCP 连接只完成一对 SMGP 消息的发送。 4.2.1 长连接
通信双方以客户-服务器方式建立 TCP 连接,用于双方信息的相互提交。当信道上没有 数据传输时,通信双方应每隔时间 C 发送链路检测包以维持此连接,当链路检测包发出超 过时间 T 后未收到响应,应立即再发送链路检测包,再连续发送 N-1 次后仍未得到响应则 断开此连接。
参数 C、T、N 原则上应可配置,现阶段建议取值为:C=3 分钟,T=60 秒,N=3。 通信双方之间的消息如果不能成功发送,应隔时间 R 进行重发,再连续发送 N-1 次后 仍未发送成功则停发。现阶段建议取值为:R=60 秒,N=3。 通信双方之间的消息发送后等待 T 秒后未收到响应,应立即重发,再连续发送 N-1 次 后仍未得到响应则停发。现阶段建议取值为:T=60 秒,N=3。

中国电信短消息网关 SMGP 接口协议规范(V3.1)

1

消息采用并发方式发送,加以滑动窗口流量控制,窗口大小参数 W 可配置,现阶段建 议为 16,即接收方在应答前一次收到的消息最多不超过 16 条。
长连接的操作流程举例如图 4.1 所示:

客户端

建立 TCP 连接

服务器端

SMGP 消息 1

SMGP 消息 2

对 SMGP 消息 1 的响

对 SMGP 消息 2 的响

滑动窗口不大于

...... 链路检测包
链路检测包响应

链路检测包

链路检测包响应 ...... 拆除 TCP 连接
图 4.1 长连接操作流程

4.2.2 短连接 通信双方以客户-服务器方式建立 TCP 连接,应答与请求在同一个连接中完成。系统采

2

中国电信短消息网关 SMGP 接口协议规范(V3.1)

用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。 通信双方之间的消息发送后等待 T 秒后未收到响应,应立即重发,再连续发送 N-1 次
后仍未得到响应则停发。现阶段建议取值为:T=60 秒,N=3。 短连接的操作流程举例如图 4.2 所示:

客户端

建立 TCP 连接

服务器端

SMGP 消息 1 对 SMGP 消息 1 的响应
拆除 TCP 连接

建立 TCP 连接 SMGP 消息 2
对 SMGP 消息 2 的响应 拆除 TCP 连接 ......

图 4.2 短连接操作流程
4.3 协议应用及涉及的端口号 SMGP 协议在中国电信中的应用主要体现在两类短消息业务上:一类是固定网短消息
业务,另一类是移动网短消息业务。 4.3.1 固定网短消息业务

中国电信短消息网关 SMGP 接口协议规范(V3.1)

3

SMGP
SP

SMGP 及 SMGP 扩展计费接口

SMGP
SP
SMGP 扩展 计费接口

二级 SMGW

预付费* 台

SMC

一级 SMGW

固定网 (PHS,PSTN)

固定终端 (PHS,”家加 e”)

SMGP 及 SMGP 扩展计费接口

二级 SMGW

SMGP SP
SMGP 扩展 计费接口

SMC

预付费 *台

固定网 (PHS,PSTN)

固定终端 (PHS,”家加 e”)

图 4.3 固定网短消息业务系统结构简图
固定网短消息业务系统结构简图如图 4.3 所示。SMGP 协议在固网短消息系统中应用情 况如下:
(1) 二级 SMGW 与 SP 二级 SMGW 与 SP 之间采用 SMGP 协议进行短消息的传输,端口号为 8890,二级 SMGW 为服务器端,SP 为客户端;
(2) 二级 SMGW 与一级 SMGW 二级 SMGW 与一级 SMGW 之间采用 SMGP 协议进行短消息的传输,端口号为 8900,二级 SMGW 与一级 SMGW 互为客户/服务器端; 二级 SMGW 与一级 SMGW 之间采用 SMGP 协议扩展计费接口(参见 SMGP V2.0) 进行计费信息的传输,端口号为 8900,二级 SMGW 作为服务器端,一级 SMGW 作为客户端;
(3) 一级 SMGW 与 SP 一级 SMGW 与 SP 之间采用 SMGP 协议进行短消息的传输,端口号为 8890,一级 SMGW 为服务器端,SP 为客户端;
(4) 二级 SMGW 和 PHS 预付费*台 二级 SMGW 与 PHS 预付费*台之间采用 SMGP 协议扩展计费接口(参见 SMGP V2.0)进行计费信息的传输,端口号为 9100,预付费*台作为服务器端,二级 SMGW 作为客户端。

4

中国电信短消息网关 SMGP 接口协议规范(V3.1)

4.3.2 移动网短消息业务 SP
SMGP
SMGW

SMGP

SP SMGP
SMGW

SMC 移动网

SMC 移动网

移动网终端

移动网终端

图 4.4 移动网短消息业务系统结构简图
移动网短消息业务系统结构简图如图 4.4 所示。SMGP 协议在移动网短消息系统中应用 情况如下:
(1) SMGW 与 SP SMGW 与 SP 之间采用 SMGP 协议进行短消息的传输,端口号为 8890,SMGW 为 服务器端,SP 为客户端;
(2) SMGW 与 SMGW SMGW 与 SMGW 之间采用 SMGP 协议进行短消息的传输,端口号为 8900,SMGW 与 SMGW 互为客户/服务器端;
4.3.3 基于短消息的电子商务业务

SMC

信息 终端

扩展 CTSI FSK 接入 服务器

CTSI 服务器
交易 模块

扩展 SMPP

SMGP 扩展电子

二级短信综 商务接口

合网关 交易模块

专业 SP

(业务网关

模块)

SMGP 扩展电子 商务接口

AAA 服务器

交易 模块
一级短信 综合网关

图 4.5 基于短消息的电子商务业务系统结构简图

中国电信短消息网关 SMGP 接口协议规范(V3.1)

5

基于短消息的电子商务业务系统结构简图如图 4.5 所示。SMGP 协议在基于短消息的电 子商务业务中应用情况如下:
(1) 二级短信综合网关与专业 SP 二级短信综合网关与专业 SP 之间通过 SMGP 协议扩展电子商务接口开展基于短消 息的电子商务业务,端口号为 9001,二级短信综合网关为服务器端,SP 为客户端;
(2) 二级短信综合网关与一级短信综合网关 二级短信综合网关与一级短信综合网关之间通过 SMGP 协议扩展电子商务接口开 展基于短消息的电子商务业务,端口号为 9001,二级短信综合网关与一级短信综 合网关互为客户/服务器端;

5 SMGP 协议

5.1 数据类型 5.1.1 基本数据类型
Integer

无符号整数

Octet String

不强制以 0x00 结尾的定长字符串。当位数不足时,在不明 确注明的情况下,应左对齐,右补 0x00。在明确注明的情况 下,以该字段的明确注明为准。

5.1.2 可选参数

可选参数采用 TLV(Tag、Length、Value)形式定义,每个可选参数的 Tag、Length、 Value 的定义见 6.3 节。

字段 Tag

长度(字节) 2

Length Value

2 可变长度

5.2 消息结构

项目

Message Header

Message Body

数据类型 Integer
Integer 可变类型

说明 字段的标签,用于唯一标识可选 参数 字段的长度 字段内容

说明 消息头(所有消息公共包头) 消息体

5.2.1 消息头结构

字段

长度(字节) 数据类型 说明

参考

PacketLength 4

Integer

数据包长度

7.1.1

RequestID

4

Integer

请求标识

7.1.2

SequenceID 4

Integer

消息流水号

7.1.3

5.2.2 消息体结构

5.2.2.1 登录操作(Login)

Login 操作的目的是客户端向服务器端注册作为一个合法客户端身份,若注册成功后即 建立了应用层的连接,此后客户端可以与此服务器端进行消息的接收和发送。

服务器端以 Login_Resp 消息响应客户端的请求。

5.2.2.1.1 Login
字段
必 ClientID 选

长度(字节)数据类型

8

Octet String

说明

参考

客 户 端 用 来 登 录 服 务 7.2.1 器端的用户账号。

6

中国电信短消息网关 SMGP 接口协议规范(V3.1)

参 数

AuthenticatorClie nt

16

LoginMode

1

TimeStamp

4

ClientVersion

1

Octet String Integer Integer Integer

5.2.2.1.2 Login_Resp

字段

长度(字节) 数据类型

Status

4



选 参

AuthenticatorSer ver

16

数 ServerVersion 1

Integer Octet String
Integer

客户端认证码,用来鉴 7.2.2 别客户端的合法性。

客 户 端 用 来 登 录 服 务 7.2.3 器端的登录类型。

时间戳

7.2.4

客 户 端 支 持 的 协 议 版 7.2.5 本号

说明

参考

请求返回结果

7.2.6

服 务 器 端 返 回 给 客 7.2.7 户端的认证码

服 务 器 端 支 持 的 最 7.2.8 高版本号

5.2.2.2 SP 向 SMGW 提交短消息的操作(Submit) 5.2.2.2.1 Submit

字段

长度(字节) 数据类型

必 MsgType

1

Integer

NeedReport

1



Priority

1

Integer Integer

参 ServiceID

10

Octet String

FeeType

2

数 FeeCode

6

Octet String Octet String

FixedFee

6

Octet String

MsgFormat

1

Integer

ValidTime

17

Octet String

AtTime

17

Octet String

SrcTermID

21

Octet String

ChargeTermID 21

Octet String

DestTermIDCoun 1 t

Integer

说明

参考

短消息类型

7.2.9

SP 是否要求返回状态报 7.2.10 告

短消息发送优先级

7.2.11

业务代码

7.2.12

收费类型

7.2.13

资费代码

7.2.14

包月费/封顶费 短消息格式

7.2.15 7.2.16

短消息有效时间

7.2.17

短消息定时发送时间 7.2.18

短信息发送方号码

7.2.19

计费用户号码

7.2.20

短消息接收号码总数 7.2.21

中国电信短消息网关 SMGP 接口协议规范(V3.1)

7

DestTermID MsgLength

21*DestTer mCount
1

Octet String* Integer

短消息接收号码 短消息长度

7.2.22 7.2.23

MsgContent

MsgLength Octet String 短消息内容

7.2.24

Reserve

8

Octet String 保留

7.2.25

字段

数据类型

说明

参考

TP_pid TP_udhi LinkID

TLV

GSM 协议类型

7.3.2

TLV

GSM 协议类型

7.3.3

TLV

交易标识

7.3.4

MsgSrc

TLV

信息内容的来源

7.3.17

ChargeUserType

TLV

计费用户类型

7.3.5

ChargeTermType
可 ChargeTermPseudo 选 参 DestTermType 数
DestTermPseudo

TLV

计费用户的号码类型 7.3.6

TLV

计费用户的伪码

7.3.7

TLV

短消息接收方号码的类 7.3.8



TLV

短消息接收方的伪码 7.3.9

PkTotal

TLV

相同 MsgID 的消息总条 7.3.10



PkNumber

TLV

相同 MsgID 的消息序号 7.3.11

SubmitMsgType

TLV

SP 发送的消息类型

7.3.12

SPDealResult

TLV

SP 对消息的处理结果 7.3.13

MServiceID

TLV

业务代码(用于移动网 7.3.19

业务)

短信*台支持短信的群发功能,关于短信群发功能的实现请参阅“附录 B 短消息群发 功能的实现”。

5.2.2.2.2 Submit_Resp

字段

长度(字节) 数据类型

说明

参考

必 MsgID

10



参 Status

4



Octet String Integer

短消息流水号 请求返回结果

7.2.26 7.2.6

5.2.2.3 SMGW 向 SP 下发短消息的操作(Deliver) 5.2.2.3.1 Deliver

字段

长度(字节) 数据类型 说明

MsgID

10

必 IsReport

1

Octet String 短消息流水号

Integer

是否为状态报告

MsgFormat 1

Integer

短消息格式

参考 7.2.26 7.2.27 7.2.16

8

中国电信短消息网关 SMGP 接口协议规范(V3.1)

选 RecvTime 14

SrcTermID 21 参 DestTermID 21

MsgLength 1 数 MsgContent MsgLength

Reserve

8

Octet String 短消息接收时间

Octet String 短消息发送号码

Octet String 短消息接收号码

Integer

短消息长度

Octet String 短消息内容

Octet String 保留

7.2.28 7.2.19 7.2.22 7.2.23 7.2.24 7.2.25

字段
TP_pid
TP_udhi 可 选 LinkID 参 SrcTermType 数
SrcTermPseudo
SubmitMsgType
SPDealResult

数据类型 TLV TLV TLV TLV TLV TLV TLV

说明 GSM 协议类型 GSM 协议类型 交易标识 短消息发送方的号码类型 短消息发送方的伪码 SP 发送的消息类型 SP 对消息的处理结果

参考 7.3.2 7.3.3 7.3.4 7.3.14 7.3.15 7.3.12 7.3.13

5.2.2.3.2 Deliver_Resp

字段

长度(字节)

必 MsgID 10



参 Status

4



数据类型 说明

Octet String 短消息流水号

Integer

请求返回结果

参考 7.2.26 7.2.6

5.2.2.4 源 SMGW 向目的 SMGW 转发短消息的操作(Forward) 5.2.2.4.1 Forward

字段

长度(字节) 数据类型

说明

必 MsgID

10

Octet String

短消息流水号

DestSMGWNo 6 选 SrcSMGWNo 6

SMCNo

6

参 MsgType

1

Octet String Octet String Octet String Integer

目的 SMGW 代码 源 SMGW 代码 短消息中心代码 短消息类型

ReportFlag

1



Priority

1

Integer Integer

状态报告标志 短消息发送优先级

ServiceID

10

Octet String

业务代码

FeeType

2

Octet String

资费类型

FeeCode

6

Octet String

资费代码

参考 7.2.26 7.2.29 7.2.30 7.2.31 7.2.9 7.2.32 7.2.11 7.2.12 7.2.13 7.2.14

中国电信短消息网关 SMGP 接口协议规范(V3.1)

9

FixedFee

6

MsgFormat

1

ValidTime

17

AtTime

17

SrcTermID

21

Octet String Integer Octet String Octet String Octet String

包月费/封顶费

7.2.15

短消息格式

7.2.16

有效时间

7.2.17

定时发送时间

7.2.18

短 消 息 发 送 用 户 号 7.2.19 码

DestTermID

21

Octet String

ChargeTermID 21

MsgLength

1

MsgContent

MsgLength

Reserve

8

字段

TP_pid

TP_udhi

LinkID

ChargeUserType

NodesCount

MsgSrc

ChargeTermPseudo

SrcTermPseudo
可 选 DestTermPseudo 参 数
SrcType

Octet String Integer Octet String Octet String 数据类型 TLV TLV TLV TLV TLV TLV TLV TLV
TLV
TLV

PkTotal

TLV

PkNumber

TLV

SubmitMsgType

TLV

SPDealResult

TLV

MServiceID

TLV

5.2.2.4.2 Forward_Resp

短 消 息 接 收 用 户 号 7.2.22 码

计费用户号码

7.2.20

短消息长度

7.2.23

短消息内容

7.2.24

保留

7.2.25

说明

参考

GSM 协议类型 GSM 协议类型 交易标识

7.3.2 7.3.3 7.3.4

计费用户类型

7.3.5

经过的网关数量

7.3.16

信息内容的来源

7.3.17

计费用户的伪码

7.3.7

短 消 息 发 送 方 的 伪 7.3.14 码

短 消 息 接 收 方 的 伪 7.3.15 码

传递给 SP 的源号码 7.3.18 的类型

相同 MsgID 的消息 7.3.10 总条数

相同 MsgID 的消息 7.3.11 序号

SP 发送的消息类型 7.3.12
SP 对消息的处理结 7.3.13 果

业务代码(用于移动 7.3.19 网业务)

10

中国电信短消息网关 SMGP 接口协议规范(V3.1)

字段
必 MsgID 选 参 Status 数
可 字段 选 PkTotal 参 数 PkNumber

长度(字节)数据类型 说明

参考

10

Octet String SMGW 产生的短消息流水号 7.2.26

4

Integer

请求返回结果

7.2.6

数据类型 TLV TLV

说明 相同 MsgID 的消息总条数 相同 MsgID 的消息序号

参考 7.3.10 7.3.11

5.2.2.5 链路检测操作(Active_Test) 本操作仅适用于通信双方采用长连接通信方式时用于保持连接。
5.2.2.5.1 Active_Test 无消息体。
5.2.2.5.2 Active_Test_Resp 无消息体。
5.2.2.6 请求关闭连接的操作(Exit) Exit 操作的目的是客户端或服务器端基于某些原因决定拆除当前的应用层连接而发起
的操作。此操作完成后客户端与服务器端的应用层连接被释放,此后通信时应由客户端重新 发起 Login 操作。 5.2.2.6.1 Exit
无消息体。 5.2.2.6.2 Exit_Resp
无消息体。 5.2.2.7 SP 向 SMGW 查询短消息发送状态的操作(Query,可选) 5.2.2.7.1 Query

字段

长度 数据类型
(字节)

说明

参考

必 QueryTime

8

选 QueryType

1



数 QueryCode

10

Octet String 查询时间

Integer

查询类别

Octet String 查询码

7.2.33 7.2.34 7.2.35

5.2.2.7.2 Query_Resp

字段

长度 数据类型
(字节)

说明

必 QueryTime

8



参 QueryType

1

数 QueryCode

10

Octet String 查询时间

Integer

查询类别

Octet String 查询码(业务类型)

MT_TLMsg

4

Integer

接收短消息总数

参考
7.2.33 7.2.34 7.2.35 7.2.36

中国电信短消息网关 SMGP 接口协议规范(V3.1)

11

MT_Tlusr

4

MT_Scs

4

MT_WT

4

MT_FL

4

MO_Scs

4

MO_WT

4

MO_FL

4

Reverse

8

Integer

接收用户总数

Integer

成功转发数量

Integer

待转发数量

Integer

转发失败数量

Integer

成功送达数量

Integer

待送达数量

Integer

送达失败数量

Octet String 保留

6 SMGP 扩展协议
6.1 SMGP 协议扩展计费接口 SMGP 协议扩展计费接口在 SMGP 协议的基础上扩展了三种操作: (1) Payment_Request 扣款请求 (2) Payment_Affirm 扣款确认 (3) Query_UserState 查询用户状态
6.1.1 消息头扩展 消息头部分主要扩展了请求标识(RequestID),参考 7.1.2。
6.1.2 消息体扩展 6.1.2.1 扣款请求(Payment_Request) 6.1.2.1.1 Payment_Request

7.2.37 7.2.38 7.2.39 7.2.40 7.2.41 7.2.42 7.2.43 7.2.25

字段
必 PayMsgID PayMsgType
选 ChargeTermID
参 SPCode
数 SrcTermID DestTermID
ServiceID

长度 数据类型
(字节)

说明

参考

20

Octet String 短消息流水号

7.2.45

2

Integer

短消息类型,用来表示短消息 7.2.46

的消息流向

21

Octet

计费用户号码

String

8

Octet String SP 服务代码

21

Octet String 短信息发送方号码

7.2.20
7.2.58 7.2.19

21

Octet

短消息接收号码

String

10

Octet

业务代码

String

7.2.22 7.2.12

12

中国电信短消息网关 SMGP 接口协议规范(V3.1)

FeeType

2

FeeCode

6

FixedFee

6

Priority

1

MsgLength

1

AreaCode

4

SMGNo

6

NxtNwkNd

6

PreNwkNd

6

RecvTime

14

DoneTime

14

CdrType

1

Reserve

8

Octet

对计费用户采取的资费类型 7.2.13

String

Octet String

资费代码,每条短消息的信息 7.2.14 费

Octet

包月费/封顶费

7.2.15

String Integer

短消息发送优先级

7.2.11

Integer

短消息长度

7.2.23

Octet

计费用户归属地的区号

7.2.44

String

Octet

产生本条消息的 SMGW 代码 7.2.47

String

Octet

下级网元代码

7.2.48

String

Octet

上级网元代码

7.2.67

String Octet

短消息接收时间

7.2.27

String Octet

短消息处理完成的时间

7.2.49

String

Integer

话单类型。该字段保留

7.2.50

Octet String 保留

7.2.28

注: (1)
(2)

Payment_Request 指令中,FeeType,FeeCode,FixedFee 字段表示信息费的资费, 预付费*台应根据 FeeType,FeeCode,FixedFee 字段对用户进行信息费扣费; 预付费*台应根据 PayMsgType 字段确定短消息的消息流向,如果是 MO 消息, 则对用户进行通信费扣费。

6.1.2.1.2 Payment_Request_Resp

字段

长度 数据类型
(字节)

必 ResultNotifyCode 1

Integer

选 Status 参

4

Integer



说明
计费确认标识码 请求返回结果

6.1.2.2 扣款确认(Payment_Affirm)

参考
7.2.51 7.2.6

中国电信短消息网关 SMGP 接口协议规范(V3.1)

13

6.1.2.2.1 Payment_Affirm

字段

长度 数据类型
(字节)

说明

必 PayMsgID

20

选 ReportStatus

1

参 FeeAddr

21

数 Reserve

8

Octet String 短消息流水号

Integer

消息状态

Octet String 计费用户地址

Octet String 保留

参考
7.2.45 7.2.52 7.2.53 7.2.28

6.1.2.2.2 Payment_Affirm _Resp

字段

长度 数据类型
(字节)

必 Status 选

4

Integer





说明 请求返回结果

参考 7.2.6

6.1.2.3 查询用户状态(Query_UserState) 6.1.2.3.1 Query_UserState

字段

长度 数据类型
(字节)

说明

参考

必 QueryUserAddr 21

选 SMGNo

6

参 Reserve

8



Octet String 查询用户号码 Octet String 产生本条消息的 SMGW 代码 Octet String 保留

7.2.54 7.2.47 7.2.28

6.1.2.3.2 Query_UserState_Resp

字段

长度 数据类型
(字节)

说明

UserStatus

1

Octet String 用户状态

Count

4

Reserve

8

Integer

预付费帐户上的余额

Octet String 保留

参考
7.2.55 7.2.56 7.2.28

字段
必 UserStatus 选 Count

长度 数据类型
(字节)

说明

1

Octet String 用户状态

4

Integer

预付费帐户上的余额

参考
7.2.55 7.2.56

14

中国电信短消息网关 SMGP 接口协议规范(V3.1)

参 Reserve 数

8

Octet String 保留

7.2.28

6.2 SMGP 协议扩展电子商务接口 为了实现电子商务实时交易,对 SMGP 协议的消息体进行了扩展,增加了 Transaction
操作及 TranFwd 操作,本部分主要对这两个消息体进行具体定义。 6.2.1 消息头扩展
SMGP 协议扩展电子商务接口在 SMGP 协议的基础上扩展了请求标识(RequestID), 参考 7.1.2。 6.2.2 消息体扩展 6.2.2.1 交易操作(Transaction) 6.2.2.1.1 Transaction

字段

长度 数据类型
(字节)

说明

参考

Status

4

PayMsgID

20

MsgType

1

Integer

对下发指令执行的状态报告 7.2.6

Octet String 短消息流水号

7.2.45

Integer

短消息类型,用来表示短消息 7.2.9 的消息流向

MsgFormat

1

Integer

短消息编码格式

7.2.16

SrcTermID

21

DestTermID

21

SessionID

20

必 ServiceID

10

选 SPCode

8

参 DesMode

1



Octet String 短信息发送方号码

7.2.19

Octet String 短消息接收号码

7.2.22

Octet String 由 CTSI 服务器产生的会话号 7.2.57

Octet String 业务代码

7.2.12

Octet String SP 服务代码

7.2.58

Integer

加密设置,表示对 ReqMsgCont 7.2.59 数据域的加密方式

TermID

9

Integer

终端序列号

7.2.60

ICCardID

15

KeySerialNo

1

Octet String IC 卡序列号

Integer

密钥代码

7.2.61 7.2.62

IIType

1

Integer

信息交互类型

7.2.63

MsgLength ReqMsgCont
Reserve

2
Var max 254 8

Integer

短消息长度

Octet String 请求消息体

Octet String 保留

7.2.23 7.2.65
7.2.28

6.2.2.1.2 Transaction_resp

字段

长度 数据类型
(字节)

说明

参考

中国电信短消息网关 SMGP 接口协议规范(V3.1)

15

Status

4

PayMsgID

20

MsgType

1

Integer

请求返回结果

7.2.6

Octet String 短消息流水号

7.2.45

Integer

短消息类型,用来表示短消息 7.2.9 的消息流向

NeedReport

1

Integer

是否要求返回状态报告

7.2.10

FeeType

2

Octet String 对计费用户采取的资费类型 7.2.13

FeeCode

6

Octet String 资费代码,每条短消息的信息 7.2.14



FixedFee

6

MsgFormat

1

SrcTermID

21

ChargeTermID 21 必

选 DestTermID

21

参 SessionID

20

数 ServiceID

10

SPCode

8

DesMode

1

Octet String 包月费/封顶费

7.2.15

Integer

短消息编码格式

7.2.16

Octet String 短信息发送方号码

7.2.19

Octet String 计费用户号码

7.2.20

Octet String 短消息接收号码

7.2.22

Octet String 由 CTSI 服务器产生的会话号。 7.2.57

Octet String 业务代码

7.2.12

Octet String SP 服务代码

7.2.58

Integer

加密设置,表示对 RspMsgCont 7.2.59 数据域的加密方式

AckDesMode

1

Integer

应答信息的加密模式

7.2.59

TermID

9

ICCardID

15

KeySerialNo

1

Integer

终端序列号

Octet String IC 卡的序列号

Integer

密钥代码

7.2.60 7.2.61 7.2.62

IIType

1

Integer

信息交互类型

7.2.63

MsgLength

2

Integer

短消息长度

RspMsgCont

MsgLengt Octet String 响应消息体 h

Reserve

8

6.2.2.2 转发交易(TranFwd)

6.2.2.2.1 TranFwd

Octet String 保留

7.2.23 7.2.66
7.2.28

字段

长度 数据类型
(字节)

说明

参考

必 Status

4

选 DestSMGWNo 6

参 SrcSMGWNo

6

数 SMCNo

6

PayMsgID

20

Integer

对下发指令执行的状态报告

Octet String 目标 SMGW 代码

Octet String 源 SMGW 代码

Octet String 发送方短消息中心代码

Octet String 短消息流水号

7.2.6 7.2.29 7.2.30 7.2.31 7.2.45

16

中国电信短消息网关 SMGP 接口协议规范(V3.1)

MsgType
MsgFormat SrcTermID DestTermID SessionID ServiceID SPCode DesMode
TermID ICCardID KeySerialNo IIType MsgLength ReqMsgCont
Reserve

1
1 21 21 20 10 8 1
9 15 1 1 2 Var max 254 8

Integer

短消息类型,用来表示短消息 7.2.9 的消息流向

Integer

短消息编码格式

7.2.16

Octet String 短信息发送方号码

7.2.19

Octet String 短消息接收号码

7.2.22

Octet String 由 CTSI 服务器产生的会话号。 7.2.57

Octet String 业务代码

7.2.12

Octet String SP 服务代码

7.2.58

Integer

加密设置,表示对 ReqMsgCont 7.2.59 数据域的加密方式

Integer

终端序列号

7.2.60

Octet String IC 卡的序列号

7.2.61

Integer

密钥代码

7.2.62

Integer

交互信息类型

7.2.63

Integer

短消息长度

7.2.23

Octet String 请求消息体

7.2.65

Octet String 保留

7.2.28

6.2.2.2.2 TranFwd_resp

字段

长度 数据类型
(字节)

说明

参考

必 Status

4

选 DestSMGWNo 6

参 SrcSMGWNo

6

数 SMCNo

6

Integer

请求返回结果

Octet String 目标 SMGW 代码

Octet String 源 SMGW 代码

Octet String 发送方短消息中心代码

7.2.6 7.2.29 7.2.30 7.2.31

PayMsgID

20

Octet String 短消息流水号

7.2.45

MsgType

1

Integer

短消息类型,用来表示短消息 7.2.9 的消息流向

NeedReport

1

FeeType

2

Integer

是否要求返回状态报告(0=不 7.2.10 要求,1=要求)

Octet String 对计费用户采取的资费类型 7.2.13

FeeCode

6

Octet String 资费代码,每条短消息的信息 7.2.14



FixedFee

6

MsgFormat

1

Octet String 包月费/封顶费

Integer

短消息编码格式

7.2.15 7.2.16

中国电信短消息网关 SMGP 接口协议规范(V3.1)

17

SrcTermID ChargeTermID DestTermID SessionID ServiceID SPCode DesMode
AckDesMode TermID ICCardID KeySerialNo IIType MsgLength RspMsgCont
Reserve

21

Octet String 短信息发送方号码

7.2.19

21

Octet String 计费用户号码

7.2.20

21

Octet String 短消息接收号码

7.2.22

20

Octet String 由 CTSI 服务器产生的会话号。 7.2.57

10

Octet String 业务代码

7.2.12

8

Octet String SP 服务代码

7.2.58

1

Integer

加密设置,表示对 ReqMsgCont 7.2.59

数据域的加密方式

1

Integer

应答信息加密模式

7.2.59

9

Integer

终端序列号

7.2.60

15

Octet String IC 卡的序列号

7.2.61

1

Integer

密钥代码

7.2.62

1

Integer

交互信息类型

7.2.63

2

Integer

短消息长度

7.2.23

MsgLengt h
8

Octet String Octet String

响应消息体 保留

7.2.66 7.2.28

7 参数定义

7.1 消息头参数描述 7.1.1 PacketLength
SMGP 数据包长度,指包头和包体的长度之和。单位是“字节”。 7.1.2 RequestId
请求标识表示 SMGP 数据包的类型,请求包的请求标识和应答包的请求标识一一对应。 SMGP 协议的请求标识定义如下:

请求名称

请求标识

说明

Login

0x00000001 客户端登录

Login_Resp

0x80000001 客户端登录应答

Submit

0x00000002 提交短消息

Submit_Resp

0x80000002 提交短消息应答

Deliver

0x00000003 下发短消息

Deliver_Resp

0x80000003 下发短消息应答

Active_Test

0x00000004 链路检测

Active_Test_Resp

0x80000004 链路检测应答

Forward

0x00000005 短消息前转

Forward_Resp

0x80000005 短消息前转应答

Exit

0x00000006 退出请求

18

中国电信短消息网关 SMGP 接口协议规范(V3.1)

Exit_Resp

0x80000006

Query

0x00000007

Query_Resp

0x80000007

Query_TE_Route

0x00000008

Query_TE_Route_Re sp
Query_SP_Route

0x80000008 0x00000009

Query_SP_Route_Re sp
Payment_Request

0x80000009 0x0000000A

Payment_Request_Re 0x8000000A sp

Payment_Affirm

0x0000000B

Payment_Affirm_Res 0x8000000B p

Query_UserState

0x0000000C

Query_UserState_Res 0x8000000C p

Get_All_TE_Route 0x0000000D

Get_All_TE_Route_ Resp
Get_All_SP_Route

0x8000000D 0x0000000E

Get_All_SP_Route_R 0x8000000E esp
其它

退出应答 SP 统计查询 SP 统计查询应答 查询 TE 路由 查询 TE 路由应答
查询 SP 路由 查询 SP 路由应答
扣款请求(用于预付费系统,参见增值业务计费方案) 扣款请求响应(用于预付费系统,参见增值业务计费 方案,下同) 扣款确认(用于预付费系统,参见增值业务计费方案) 扣款确认响应(用于预付费系统,参见增值业务计费 方案) 查询用户状态(用于预付费系统,参见增值业务计费 方案) 查询用户状态响应(用于预付费系统,参见增值业务 计费方案) 获取所有终端路由 获取所有终端路由应答
获取所有 SP 路由 获取所有 SP 路由应答
保留

7.1.3 SequenceId SMGP 消息流水号,用来匹配请求数据包和应答数据包。 应答数据包的流水号字段必须与请求包的流水号字段一致。 流水号字段由请求包发起方分配,取值范围为 0x00000000-0xFFFFFFFF,顺序累加,
步长为 1,循环使用。 7.2 消息体必选参数描述
7.2.1 ClientID 客户端用来登录服务器端的用户账号。 当客户端为 SP 时,用户帐号为 SP 服务代码;当客户端为 SMGW 时,用户帐号为 SMGW
代码。 7.2.2 AuthenticatorClient
客户端认证码,用来鉴别客户端的合法性。 其值通过单向 MD5 hash 计算得出,表示如下: AuthenticatorClient =MD5 ( ClientID+7 字 节 的 二 进 制 0 ( 0x00 ) + Shared secret+Timestamp)

中国电信短消息网关 SMGP 接口协议规范(V3.1)

19

Shared secret 由服务器端与客户端事先商定,最长 15 字节。 此处 Timestamp 格式为:MMDDHHMMSS(月日时分秒),经 TimeStamp 字段值转换 成字符串,转换后右对齐,左补 0x30 得到。 例如 3 月 1 日 0 时 0 分 0 秒,TimeStamp 字段值为 0x11F0E540,此处为 0301000000。 7.2.3 LoginMode 客户端用来登录服务器端的登录模式。 0=发送短消息(send mode); 1=接收短消息(receive mode); 2=收发短消息(transmit mode); 其它保留。 7.2.4 TimeStamp 时间戳。 例如 3 月 1 日 0 时 0 分 0 秒,用于 MD5 计算时为 0301000000,此处转换为整型数即 为 11F0E540。 7.2.5 ClientVersion 客户端支持的协议版本号。 高 4bit 表示主版本号,低 4bit 表示次版本号。 例如 0x13,表示协议版本号为 1.3。 7.2.6 Status 请求返回结果。响应包用来向请求包返回成功信息或者失败原因。 SMGP 协议的结果码定义如下:

代码

含义

0

成功

1

系统忙

2

超过最大连接数

3-9

保留

10

消息结构错

11

命令字错

12

序列号重复

13-19 20 21

保留 IP 地址错 认证错

22 23-29 30 31 32 33 34 35 36

版本太高 保留 非法消息类型(MsgType) 非法优先级(Priority) 非法资费类型(FeeType) 非法资费代码(FeeCode) 非法短消息格式(MsgFormat) 非法时间格式 非法短消息长度(MsgLength)

20

中国电信短消息网关 SMGP 接口协议规范(V3.1)

37 38 39 40 41 42 43 44 45 46 47 48 49 50~55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

有效期已过 非法查询类别(QueryType) 路由错误 非法包月费/封顶费(FixedFee) 非法更新类型(UpdateType) 非法路由编号(RouteId) 非法服务代码(ServiceId) 非法有效期(ValidTime) 非法定时发送时间(AtTime) 非法发送用户号码(SrcTermId) 非法接收用户号码(DestTermId) 非法计费用户号码(ChargeTermId) 非法 SP 服务代码(SPCode) 其它用途 非法源网关代码(SrcGatewayID) 非法查询号码(QueryTermID) 没有匹配路由 非法 SP 类型(SPType) 非法上一条路由编号(LastRouteID) 非法路由类型(RouteType) 非法目标网关代码(DestGatewayID) 非法目标网关 IP(DestGatewayIP) 非法目标网关端口(DestGatewayPort) 非法路由号码段(TermRangeID) 非法终端所属省代码(ProvinceCode) 非法用户类型(UserType) 本节点不支持路由更新 非法 SP 企业代码(SPID) 非法 SP 接入类型(SPAccessType) 路由信息更新失败 非法时间戳(Time) 非法业务代码(MServiceID) SP 禁止下发时段

中国电信短消息网关 SMGP 接口协议规范(V3.1)

21

75

SP 发送超过日流量

76

SP 帐号过有效期

112~116

其它用途

128-255

厂家自定义

其它

保留

7.2.7 AuthenticatorServer

Login 服务器端返回给客户端的认证码,当客户端认证出错时,此项为空。 其值通过单向 MD5 hash 计算得出,表示如下: AuthenticatorServer =MD5(Status+AuthenticatorClient + Shared secret) Shared secret 由服务器端与客户端事先商定,最长 15 字节 AuthenticatorClient 为客户端 发送给服务器端的 Login 中的值。参见 7.2.2 节。 7.2.8 ServerVersion

服务器端支持的最高版本号。

高 4bit 表示主版本号,低 4bit 表示次版本号。 例如 0x13,表示协议版本号 1.3。 7.2.9 MsgType

短消息类型。

对于回执消息该字段无效;对于文本短消息,该字段表示短消息的消息流向:

0=MO 消息(终端发给 SP); 6=MT 消息(SP 发给终端,包括 WEB 上发送的点对点短消息); 7=点对点短消息; 其它保留。

7.2.10 NeedReport

是否要求返回状态报告。

0=不要求返回状态报告; 1=要求返回状态报告; 其它保留。

7.2.11 Priority

短消息发送优先级。

0=低优先级; 1=普通优先级; 2=较高优先级; 3=高优先级; 其它保留。

7.2.12 ServiceID

业务代码,用于固定网业务。

对于 MO 消息或点对点短消息,该字段无效; 对于 MT 消息,该字段表示业务代码,是该条短消息所属的业务类别,由数字、字母 和符号组合而成。对于从 WEB 上发送的点对点短消息,要求业务代码为 “PC2P”,其它业 务代码由 SP 自定义。 7.2.13 FeeType

对计费用户采取的收费类型。
对于 MO 消息或点对点短消息,该字段无效。对于 MT 消息,该字段用法如下: 00=免费,此时 FixedFee 和 FeeCode 无效; 01=按条计信息费,此时 FeeCode 表示每条费用,FixedFee 无效; 02=按包月收取信息费,此时 FeeCode 无效,FixedFee 表示包月费用; 03=按封顶收取信息费,若按条收费的费用总和达到或超过封顶费后,则按照封顶费 用收取信息费;若按条收费的费用总和没有达到封顶费用,则按照每条费用总和收取信息费。

22

中国电信短消息网关 SMGP 接口协议规范(V3.1)

FeeCode 表示每条费用,FixedFee 表示封顶费用。 其它保留。
7.2.14 FeeCode 每条短消息费率,单位为“分”。 对于 MO 消息或点对点短消息,该字段无效;对于 MT 消息,该字段具体使用方法参
见 7.2.13 节。 7.2.15 FixedFee
短消息的包月费/封顶费,单位为“分”。 对于 MO 消息或点对点短消息,该字段无效;对于 MT 消息,该字段具体使用方法参 见 7.2.13 节。 7.2.16 MsgFormat 短消息内容体的编码格式。 0=ASCII 编码; 3=短消息写卡操作; 4=二进制短消息; 8=UCS2 编码; 15=GB18030 编码; 246(F6)=UIM 相关消息 UIM 相关消息,用于与 UIM 卡相关的 OTA 等业务,终端 收到该类型消息直接转发给 UIM 卡,由 UIM 卡来处理该类型消息; 其它保留。 对于文字短消息,要求 MsgFormat=15。对于回执消息,要求 MsgFormat=0。 7.2.17 ValidTime 短消息有效时间,格式遵循 SMPP3.3 以*姹拘椤 短消息有效时间在转发过程中保持不变。 7.2.18 AtTime 短消息定时发送时间,格式遵循 SMPP3.3 以*姹拘椤 短消息定时发送时间在转发过程中保持不变。 7.2.19 SrcTermID 短消息发送方号码。 对于 MT 消息,SrcTermID 格式为“118+SP 服务代码+其它(可选)”,例如 SP 服务 代码为 1234 时,SrcTermID 可以为 1181234 或 118123456 等。 对于 MO 消息,固定网中 SrcTermID 格式为“区号+号码(区号前添零)”,例如 02087310323,07558780808,移动网中 SrcTermID 格式为 MSISDN 号码格式。 对于固定网点对点消息,主叫号码为普通终端时,SrcTermID 格式为“区号+号码(区 号前添零)”;主叫号码为爱因*台时,SrcTermID 格式为“10631+区号+号码(区号前添零)”。 7.2.20 ChargeTermID 计费用户号码。 ChargeTermID 为空时,如果是 MT 消息,则表示对被叫用户号码计费;如果是 MO 或 点对点消息,则表示对主叫用户号码计费。 ChargeTermID 为非空时,表示对计费用户号码计费。 7.2.21 DestTermIDCount 短消息接收号码总数(≤100),用于 SP 实现群发短消息。 7.2.22 DestTermID 短消息接收号码。 对于 MT 消息,DestTermID 连续存储 DestTermIDCount 个号码,每一个接收方号码为 21 位,固定网中 DestTermID 格式为“区号+号码(区号前添零)”,移动网中 DestTermID 格 式为 MSISDN 号码格式,不足 21 位时应左对齐,右补 0x00。 对于 MO 消息,DestTermID 格式为“118+SP 服务代码+其它(可选)”。对于点对点 短消息,DestTermID 格式为“区号+号码(区号前添零)” ,不足 21 位时应左对齐,右补 0x00。

中国电信短消息网关 SMGP 接口协议规范(V3.1)

23

对于固定网点对点消息,被叫号码为普通终端时,SrcTermID 格式为“区号+号码(区 号前添零)”;被叫号码为爱因*台时,SrcTermID 格式为“10631+区号+号码(区号前添零)”。
7.2.23 MsgLength 短消息长度。指 MsgContent 域的长度,取值大于或等于 0。 对于 MT 消息,取值应小于或等于 140。
7.2.24 MsgContent 短消息内容。 当 IsReport=1 时,MsgContent 中内容为状态报告,其格式遵循 7.2.87 节描述。
7.2.25 Reserve 保留字段。
7.2.26 MsgID 短消息流水号,用来唯一标识一条短消息。 该字段在短消息的转发处理流程中保持唯一。 MsgId 字段包含以下三部分内容: SMGW 代码:3 字节(BCD 码) 编码规则如下: 3 位区号(不足前添 0)+2 位设备类别+1 位序号 区号:所在省长途区号 设备类别:SMGW 取 06 序号:所在省的设备编码,例如第一个网关编号为 1 时间:4 字节(BCD 码),格式为 MMDDHHMM(月日时分) 序列号:3 字节(BCD 码),取值范围为 000000~999999,从 0 开始,顺序累加,步
长为 1,循环使用。 例如某 SMGW 的代码为 010061,在 2003 年 1 月 16 日下午 5 时 0 分收到一条短消息,
这条短消息的 MsgID 为:0x01006101161700012345,其中 010061 表示 SMGW 代码,01161700 表示接收时间,012345 表示消息序列号。 7.2.27 IsReport
是否为状态报告。 0=不是状态报告; 1=是状态报告; 其它保留。 7.2.28 RecvTime SMGW 接收到短消息的时间。格式为 YYYYMMDDHHMMSS(年年年年月月日日时 时分分秒秒)。 7.2.29 DestSMGWNo 目的 SMGW 代码,指短消息前转的下一个 SMGW 代码。 7.2.30 SrcSMGWNo 源 SMGW 代码,指短消息前转的本 SMGW 代码。 7.2.31 SMCNo 发送方短消息中心代码。 7.2.32 ReportFlag 状态报告标志。 0=是状态报告; 1=要求状态报告; 2=不要求状态报告; 其它保留。 7.2.33 QueryTime 查询时间。 格式:YYYYMMDD(年年年年月月日日),精确到日。 7.2.34 QueryType

24

中国电信短消息网关 SMGP 接口协议规范(V3.1)

查询类别。 0:总数查询 1:按业务代码查询 其它保留 7.2.35 QueryCode 查询码(业务类型)。 当 Query_Type 为 0 时,此项无效;当 Query_Type 为 1 时,此项填写业务代码 Service_id。 7.2.36 MT_TLMsg 接收短消息总数。 7.2.37 MT_TLUsr 接收用户总数。 7.2.38 MT_Scs 成功转发数量。 7.2.39 MT_WT 待转发数量。 7.2.40 MT_FL 转发失败数量。 7.2.41 MO_Scs 成功送达数量。 7.2.42 MO_WT 待送达数量。 7.2.43 MO_FL 送达失败数量。 7.2.44 AreaCode 终端所属区号或计费用户归属地的区号(前添零),例如 020,0755。 7.2.45 PayMsgID 短消息流水号,用来唯一标识一条短消息。 PayMsgID 字段包含以下三部分内容: SMGW 代码:6 字节 时间:8 字节,格式为 MMDDHHMM(月日时分) 序列号:6 字节,取值范围为 000000~999999,从 0 开始,顺序累加,步长为 1,循环 使用。 7.2.46 PayMsgType 短消息类型,用来表示短消息的消息流向。 0=MO 消息(终端发给 SP); 6=MT 消息(SP 发给终端); 其它保留。 7.2.47 SMGNo 产生本条消息的 SMGW 代码。 7.2.48 NxtNwkNd 下级网元代码。 7.2.49 DoneTime 记录短消息处理完成的时间,格式:yyyymmddhhmmss。 7.2.50 CdrType 话单类型。该字段保留。 7.2.51 ResultNotifyCode 计费确认标识码。 0x00:不管短消息发送成功或失败都发送计费确认; 0z01:仅当短消息发送失败时发送计费确认; 0x02:仅当短消息发送成功时发送计费确认;

中国电信短消息网关 SMGP 接口协议规范(V3.1)

25

0x03:不管短消息发送成功或失败都不发送计费确认; 其它保留。 7.2.52 ReportStatus 消息状态: 0: 表示短消息发送失败; 1: 表示短消息发送成功; 其它保留。 7.2.53 FeeAddr 计费用户地址。 7.2.54 QueryUserAddr 查询用户号码。 7.2.55 UserStatus 用户状态: 0:正常状态; 1:非注册用户:属于预付费用户,但该号码还未被注册 2:余额不足; 3:帐号不可用:属于预付费用户,但该帐号处于不可用状态,如已冻结等 4:非预付费用户; 5:预付费*台无连接; 6:消息转发超时; 7:系统错误; 其它保留; 7.2.56 Count 预付费帐户上的余额,单位:人民币(分)。非正常状态时,填为 0。 7.2.57 SessionID 由 CTSI 服务器产生的会话号。 对应于一次用户的交易请求,CTSI 服务器分配一个唯一的会话号。消息请求与应答包 中的会话号应一一对应。Session_ID 可以实现象信息的实时刷新,画图等一次用户交易请求, 多次信息下发的业务。 20 位的会话号由三部分组成: CTSI 服务器代码:6 字节 时间 :8 字节(MMDDHHMM) 序列号 :6 字节 7.2.58 SPCode SP 服务代码。代码分配方案参见相关文档。 7.2.59 DesMode/ AckDesMode 加密模式。

内容

说明

Bit7-bit4

MAC 校验标志 0000:不需要 MAC 校验 0001:需要 MAC 校验 其它:保留

Bit3-bit0

数据加密标志

0000:不加密 0001:DES 加密 0010:3DES 加密

26

中国电信短消息网关 SMGP 接口协议规范(V3.1)

0011:RSA 加密
其它:保留
本数据域主要表示对数据域的加密设置,设明文数据为 P,加密算法为 E,密钥为 K。 当 MAC 校验标志为不需要 MAC 校验,而数据加密标志为不需要加密时,数据域的内 容为 P。 当 MAC 校验标志为不需要 MAC 校验,而数据加密标志为需要加密时,数据域的内容 为 E(P,K)。 当 MAC 校验标志为需要 MAC 校验,而数据加密标志为不需要加密时,数据域的内容 为 (P+MAC)。 当 MAC 校验标志为需要 MAC 校验,而数据加密标志为需要加密时,数据域的内容为 D(P+MAC,KEY)。 注: 1.采用 DES 算法加密,建议密钥长度为 56bit。 2.采用 3DES 算法加密,建议密钥长度为 112bit。设明文数据为 P,密文数据为 C, 加 密 算 法 为 E , 解 密 算 法 为 D , 密 钥 为 K , K=K1+K2 , K1 、 K2 均 为 56bit 。 则 C=EK1[DK2[EK1[P]]],即先使用密钥 K1 对明文 P 加密,得到密文 P',再使用密钥 K2 对 P'解密,得到密文 P'',然后再使用密钥 K1 对 P''加密,得到最终的密文 C。 7.2.60 TermID 终端序列号。终端序列号的长度为 9 字节,由五个部分组成,终端序列号=厂家代码+ 类型+生产年月+版本号+序列号

字段

长度

数据类型 说明

(字节)

厂家代码

1

Integer

由中国电信集团统一编制

类型

1

Integer

0x01:标准型

0x02:增强型

其它:保留

生产年月

3

Integer

用 BCD 编码方式,高位的 2 字节表 示年,低位的 1 字节表示月。如 2019 年 11 月的值为 0x201911

版本号

1

Integer

厂家自定义

序列号

3

Integer

厂家自定义

如果*台不知道终端的序列号,此域可以为 NULL。

7.2.61 ICCardID

IC 卡序列号。

字段

长度

数据类型 说明

(字节)

地区号

3

Octet String 用 3 位区号表示发卡地区,如果不 足 3 位则前面补 0

类型

2

Octet String 1 位字母+1 位数字组成,由中国电

信集团统一编制,表示 IC 卡的类

型,如“A0”表示“家家 e 业务电

子商务卡”。

中国电信短消息网关 SMGP 接口协议规范(V3.1)

27

序列号

8

厂家代码

2

Octet String 厂家自定义 Octet String 由中国电信集团统一编制

7.2.62 KeySerialNo 密钥代码。

内容

说明

Bit7-bit3

表示密钥的组号,一个内容提供商可以提供多种业务,每种业务 可以有不同的密钥,因此,对应一个内容提供商,最多可存储 15 组密钥

Bit2-bit0

用于标示密钥的类型,每一组密钥可以由不同种类的密钥组成, 序号就是用来标志不同种类的密钥:

001:交易密钥
010:传输密钥
011:内容提供商的公钥
100:终端的私钥(在终端需进行 RSA 算法解密,以及使用数字签 名时有用,目前为保留)
其它:保留 注:无密钥传输或加密操作时,该字节填为全 0。 7.2.63 IIType 交互信息类型。

代码

含义

0x00

密钥的传输

0x01

菜单交互

0x02

文本信息输出

0x03

图形信息输出

0x04

信息下载类服务

0x05

信息上传类服务

0x0e

快捷方式

0x0f

系统操作

其它

保留

7.2.64 ICode

交互码。

根据不同的交互信息类型,具有不同的交互码。

交互信息内容

对应的交互码

说明

密钥的传输

0x00

密钥的下传

0x01

密钥的上传

菜单交互

0x01

菜单询问或单项询问方式

0x02

确认询问

28

中国电信短消息网关 SMGP 接口协议规范(V3.1)

文本信息输出

0x03 0x04 0x05 0x00 0x01
0x02 0x03

图形信息输出 信息下载

0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C

多项选择 非选择性数据输入 多项非选择性数据输入 表示用户按[确认]键返回 表示用户按[确认]键返回或持续 5 秒 后 CPE 自动返回 CPE 不需要返回响应信息 表示用户按[退出]键、[取消]键退出业 务,按[确认]键请求或某指定时间自 动请求新信息。 清屏命令 作图定位命令 画点命令 画线命令 画矩形图命令 画 K 线图 画模式图 画顺序点 画椭圆 画多边形 屏幕信息输出 非选择性数据输入 信息动态刷新指令 普通短消息下载 订阅及点播信息下载 MEMORY 数据下载 IC 卡数据下载 常用语下载 特色铃声下载 话费帐单 话费详单 软件升级 图形及动画下载 密钥下载

中国电信短消息网关 SMGP 接口协议规范(V3.1)

29

F0~FF

厂家自定义

信息上传

0x02

普通短消息上传

0x03

订阅及点播信息上传

0x04

MEMORY 数据上传

0x05

IC 卡数据上传

0x06

常用语

0x07

特色铃声上传

0x08

话费帐单

0x09

话费详单

0x0A

终端软件

0x0B

图形及动画

0x0C

密钥上传

F0~FF

厂家自定义

系统操作

0x00

结束动态菜单,返回主菜单

0x01

返回动态菜单入口

0x02

用户退出交互式菜单

0x03

用户进入交互式菜单

0x04

退出当前交互,进入其它交互菜单

快捷键

0x00

买入(证券)

0x01

卖出(证券)

0x02

撤单(证券)

0x03~0x09

证券交易厂家自定义

0x90

返回主菜单

0x91

返回上一级菜单

0x92

保留

0x93

支付

其它

保留

7.2.65 ReqMsgCont

ReqMsgCont 的具体数据格式参见《电子商务规范》11.9 节。

7.2.66 RspMsgCont

RspMsgCont 具体数据格式参见《电子商务规范》11.8 节。

7.2.67 PreNwkNd

上级网元代码,如果上级网元为 SP,则本字段为空。

7.2.68 状态报告格式 注:“状态报告格式”采用 SMPP V3.4 中的规定,即“id:IIIIIIIIII sub:SSS dlvrd:DDD
Submit date:YYMMDDhhmm done date: YYMMDDhhmm stat:DDDDDDD err:E Text:……”。

30

中国电信短消息网关 SMGP 接口协议规范(V3.1)

字段

长度 (字节)

数据类型

说明

Id

10

sub

3

Dlvrd

3

Submit_date

10

done_date

10

Stat

7

Octet String Octet String Octet String Octet String
Octet String
Octet String

状态报告对应原短消息的 MsgID
取缺省值 001
取缺省值 001
短消息提交时间(格式:年年月月日日时 时分分,例如 010331200000)
短消息下发时间(格式:年年月月日日时 时分分,例如 010331200000)
短消息的最终状态(参见第 7.2.87.1 节短 消息状态表)

Err

3

Txt

20

7.2.68.1 短消息状态表

Octet String Octet String

参见第 7.2.87.2 节错误代码表
前 3 个字节,表示短消息长度(用 ASCII 码表示),后 17 个字节表示短消息的内 容(保证内容不出现乱码)

状态名

状态值(字符串)

说明

DELIVERED EXPIRED DELETED

DELIVRD EXPIRED DELETED

短消息转发成功 短消息超过有效期 短消息已经被删除

UNDELIVERABLE UNDELIV

ACCEPTED

ACCEPTD

UNKNOWN REJECTED

UNKNOWN REJECTD

7.2.68.2 Err 错误代码表

短消息是不可转发的 短消息已经被最终用户接收 (为保持与 SMPP 兼容,保留) 未知短消息状态 短消息被拒绝 (为保持与 SMPP 兼容,保留)

状态值(字符串)

说明

对应状态

000

成功

DELIVRD

001

用户不能通信

EXPIRED

002

用户忙

EXPIRED

003

终端无此部件号

UNDELIV

004

非法用户

UNDELIV

005

用户在黑名单内

UNDELIV

006

系统错误

UNDELIV

中国电信短消息网关 SMGP 接口协议规范(V3.1)

31

007

用户内存满

008

非信息终端

009

数据错误

010

数据丢失

999

未知错误

7.3 消息体可选参数描述 7.3.1 可选参数标签定义

标签名称

标签值

TP_pid TP_udhi LinkID ChargeUserType ChargeTermType ChargeTermPseudo DestTermType DestTermPseudo PkTotal PkNumber SubmitMsgType SPDealReslt SrcTermType SrcTermPseudo NodesCount MsgSrc SrcType MServiceID 7.3.2 TP_pid

0x0001 0x0002 0x0003 0x0004 0x0005 0x0006 0x0007 0x0008 0x0009 0x000A 0x000B 0x000C 0x000D 0x000E 0x000F 0x0010 0x0011 0x0012

字段

长度 数据类型
(字节)

Tag

2

Integer

Length Value

2

Integer

1

Integer

7.3.3 TP_udhi

字段

长度 数据类型
(字节)

EXPIRED UNDELIV UNDELIV UNDELIV UNKNOWN
说明 TP_pid 标签值 Value 部分的长度 GSM 协议类型。详细解释请参考 GSM03.40 中的 9.2.3.9。 说明

32

中国电信短消息网关 SMGP 接口协议规范(V3.1)

Tag

2

Length

2

Value

1

7.3.4 LinkID

Integer Integer Integer

TP_udhi 标签值
Value 部分的长度
GSM 协议类型。详细解释请参考 GSM03.40 中的 9.2.3.23,仅使用 1 位,右对齐。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

20

7.3.5 ChargeUserType

Integer

LinkID 标签值

Integer

Value 部分的长度

Octet String 交易标识,用于唯一标识一次交易

字段

长度 数据类型
(字节)

说明

Tag Length Value

2

Integer

2

Integer

1

Integer

7.3.6 ChargeTermType

ChargeUserType 标签值 Value 部分的长度 计费用户类型。 0=对短消息接收方计费; 1=对短消息发送方计费; 2=对 SP 计费; 3=表示本字段无效,对谁计费参见 ChargeTermID 或 ChargeTermPseudo 字段。

字段

长度 数据类型
(字节)

说明

Tag Length Value

2

Integer

2

Integer

1

Integer

7.3.7 ChargeTermPseudo

ChargeTermType 标签值 Value 部分的长度 计费用户的号码类型。 0=真实号码; 1=伪码; 其它保留。

字段

长度 数据类型
(字节)

说明

Tag Length

2

Integer

ChargeTermPseudo 标签值

2

Integer

Value 部分的长度

中国电信短消息网关 SMGP 接口协议规范(V3.1)

33

Value

Length Octet String 计费用户的伪码

7.3.8 DestTermType

字段

长度 数据类型
(字节)

说明

Tag Length Value

2

Integer

2

Integer

1

Integer

7.3.9 DestTermPseudo

DestTermType 标签值 Value 部分的长度 短消息接收方的号码类型。 0=真实号码; 1=伪码; 其它保留。

字段

长度 数据类型
(字节)

说明

Tag Length Value

2 2 Length

7.3.10 PkTotal

Integer

DestTermPseudo 标签值

Integer

Value 部分的长度

Octet String 短消息接收方的伪码,当有多个接收方伪码 时,要求每个接收方伪码的长度一样。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

1

7.3.11 PkNumber

Integer Integer Integer

PkTotal 标签值 Value 部分的长度 相同 Msg_Id 的消息总条数。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

1

7.3.12 SubmitMsgType

Integer Integer Integer

PkNumber 标签值 Value 部分的长度 相同 Msg_Id 的消息序号,从 1 开始。

字段

长度 数据类型
(字节)

说明

Tag Length

2

Integer

SubmitMsgType 标签值

2

Integer

Value 部分的长度

34

中国电信短消息网关 SMGP 接口协议规范(V3.1)

Value

1

Integer

SP 发送的消息类型。

0=普通短消息;

1=WEB 方式订阅通知消息;

2=WEB 方式取消订阅通知消息;

3=终端方式订阅通知消息;

4=终端方式取消订阅通知消息;

5=包月扣费通知消息;

其它保留。

7.3.13 SPDealResult

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

1

7.3.14 SrcTermType

Integer Integer Integer

SPDealResult 标签值 Value 部分的长度 SP 对消息的处理结果 0=订阅/取消订阅/扣费成功; 1=订阅/取消订阅/扣费失败; 其它保留。 该字段在 SubmitMsgType 为 0 时无效。

字段

长度 数据类型
(字节)

说明

Tag Length Value

2

Integer

2

Integer

1

Integer

7.3.15 SrcTermPseudo

SrcTermType 标签值
Value 部分的长度 短消息发送方的号码类型。 0=真实号码; 1=伪码; 其它保留。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

Length

7.3.16 NodesCount

Integer

SrcTermPseudo 标签值

Integer

Value 部分的长度

Octet String 短消息发送方的伪码

中国电信短消息网关 SMGP 接口协议规范(V3.1)

35

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

1

7.3.17 MsgSrc

Integer Integer Integer

NodesCount 标签值
Value 部分的长度 经过的网关数量。该字段的初始值为 1。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

8

7.3.18 SrcType

Integer

MsgSrc 标签值

Integer

Value 部分的长度

Octet String 信息内容的来源。

在固定网短消息业务中,MsgSrc 填写 SP 的服 务代码。在移动网短消息业务中,MsgSrc 填 写 SP 的企业代码。

字段

长度 数据类型
(字节)

说明

Tag

2

Length

2

Value

1

7.3.19 MServiceID

Integer Integer Integer

SrcType 标签值 Value 部分的长度 传递给 SP 的源号码的类型。 0=真实号码; 1=伪码; 其它保留。

字段

长度 数据类型
(字节)

说明

Tag Length Value

2

Integer

MServiceID 标签值

2

Integer

Value 部分的长度

21

Octet String 业务代码。用于移动网业务。要求填写产品 ID

(Productid,PID)。Serviceid 和 Productid 是包

含关系,一个 Serviceid 可以有多个 Productid,

电信仅向 CP/SP 开放 Productid,Serviceid 用

于内部管理使用,Serviceid 不开放给 CP/SP

使用。目前 SMGW 和 CP/SP 的 SMGP 接口只

有 Serviceid 字段而没有 productid 字段,为继

承以前版本,要求 CP/SP 在和引擎接口的

Serviceid 字段里填写 Productid 内容,引擎透

传此内容到 ISMAP 接口的 PID 字段里,ISMP

获取到的是 Productid 内容。

36

中国电信短消息网关 SMGP 接口协议规范(V3.1)

8 基于 SMGP 协议的 API 函数 详见附录 A。

中国电信短消息网关 SMGP 接口协议规范(V3.1)

37

附 录 A 基于 SMGP 协议的 API 函数说明 (规范性附录)

A.1 基本要求

A.1.1 安装 网关需要提供 API 软件包,解压到指定目录下后可以修改配置文件,配置参数至少包
括 SPId(SP 编号)、SPShareKey(SP 密码)、ClientIP(客户主机的 IP 地址)和 ServerIP(短 消息网关地址)。 A.1.2 例子程序
网关至少应该提供以下例程,供 SP 调试使用,分别为: (1) Connect(参数),检查是否能够成功登录短消息网关; (2) TestAPI(参数),检查是否能够成功连接短消息网关。 (3) SetKey (参数),修改 SP 密码。 (4) SendSM(参数)尝试发送短消息。 (5) RecvSM(参数)尝试接收短消息等。 (6) RecvSMReport(参数),尝试接收短消息状态报告。 A.1.3 操作系统*台要求 网关提供的 API 软件包至少要求支持以下操作系统*台: (1) Free BSD 3.x, 4.2 (2) Solaris 5.6, 5.7, 5.8(包含 x86) (3) Linux(Redhat 和 Slack 等主流产品) (4) Windows NT/2000 等 网关提供的 API 软件包至少要求支持以下编程语言: (1) C/C++ (2) JAVA
A.2 API数据结构说明(以C语言为例)

A.2.1 接收短消息的返回数据结构(DeliverResp) (1) 用途 保存 SMGPDeliver 函数返回的短消息内容。 (2) 字段说明

字段名

数据类型

说明

SMsgID

Char(21)

短消息标识

NMsgFormat

Int

短消息格式(参照短消息格式代码表)。网关不做

判定, 透明传输。

SSrcTermID

Char(22)

短消息发送用户号码

NIsReport
NMsgLen sMsgContent sDestTermID sRecvTime
sReserved
38

Int
Int Char(253) Char(22) char(15)
Char(9)

是否为状态报告。代码含义:非状态报告(0); 状态报告(1) 消息长度 消息内容 SP 的接入代码 短消息接收时间(格式:yyyymmddhhmiss,例如 20010301200000) 保留

中国电信短消息网关 SMGP 接口协议规范(V3.1)

A.2.2 获取群发短消息的返回数据结构(SendBatchResp)
(1) 用途 使用 SMGPSendBatch 群发短消息后,每条短消息的“消息标识”和“错误代码”保存 在文件里。SMGP API 提供 GetSendBatchResp 函数获取每一条短消息返回信息,保存在 SendBatchResp 中。 (2) 字段说明

字段名

数据类型

说明

sMsgID

Char(21)

短消息标识

nErrorCode

Int

错误代码(参照错误代码表)

sPhoneNo

Char(22)

发送号码

A.2.3 查询短消息网关的返回数据结构(QueryResp可选) (1) 用途 保存 SMGPQuery 函数返回的查询结果。 (2) 字段说明

字段名

数据类型

说明

nMT_TLMsg

Int

接收短消息总数

nMT_TLusr

Int

接收用户总数

nMT_Scs

Int

成功转发数量

nMT_WT

Int

待转发数量

nMT_FL

Int

转发失败数量

nMO_Scs

Int

成功送达数量

nMO_WT

Int

待送达数量

nMO_FL

Int

送达失败数量

A.3 API函数说明

A.3.1 初始化API(InitSMGPAPI) (1) 作用 初始化 SMGP API,应用程序只需要调用一次此函数。 (2) 参数

参数名

数据类型 说明

SiniFile

Char(100) SMGPAPI 配置文件名,

缺省值是:”../config/smgpc.ini”。

如果应用程序的执行目录不在 smgpapi/bin 下,就需要通 过绝对或相对路径指定 sINIFile。

例如:

(3) 返回

InitSMGPAPI(“/opt/smgpapi/config/smgpc.ini”)

0=成功

中国电信短消息网关 SMGP 接口协议规范(V3.1)

39

1=失败

A.3.2 发送单条短消息(SMGPSendSingle)
(1) 作用 向短消息网关发送 1 条短消息到 1 个终端用户。短消息长度最长为 200, SMGP API 在发送时自动建立 Connection Pool,采用长连接或者短连接发送短消息。当 Cache 的 connection 中断时,API 能够自动重新连接短消息网关。如果应用程序采用多线程发送短消 息,多个线程共享同一个 Connection Pool。在发送过程中,如果因为通信原因导致发送失败, API 能够自动重新发送,重试的次数在配置文件设置。 (2) 参数

参数名

数据类型 说明

nNeedReport

Int

是否要求返回状态报告(0=不要求,1=要求)

nMsgLevel

Int

信息级别(0-9,0=最低优先级)

sServiceID

Char(11) 业务代码

nMsgFormat

Int

短消息格式(参照短消息格式表)。网关不做判定, 透明传 输。

sFeeType

Char(3) 资费类别

sFeeCode

Char(7) 资费代码(以分为单位)

sFixedfee

Char(7) 包月费/封顶费(以分为单位)

sValidTime

Char(18) 存活有效期,格式遵循 SMPP3.3 协议

sAtTime

Char(18) 定时发送时间,格式遵循 SMPP3.3 协议

sSrcTermId

Char(22) 发送号码

sChargeTermID Char(22) 计费号码

sDestTermID

Char(22) 短消息接收号码

nMsgLen

Int

短消息长度

sMsgContent

Char(*) 短消息内容(nMsgLen=0 时表示存放短消息的文件名)

sMsgID

Char(11) 返回的短消息标识

nErrorCode

Int*

错误代码(参照错误代码表)。

sMsgType

Char(2) 短消息类型

sReserved

Char(9) 保留

(3) 返回
0=成功 1=失败

A.3.3 群发短消息(SMGPSendBatch) (1) 作用 向短消息网关发送 1 条短消息到多个终端用户。短消息长度最长为 200,此函数使用文
件传递短消息内容。SMGP API 在发送时自动建立 Connection Pool,采用长连接或者短连接

40

中国电信短消息网关 SMGP 接口协议规范(V3.1)

发送短消息。当 Cache 的 connection 中断时,API 能够自动重新连接短消息网关。如果应用 程序采用多线程发送短消息,多个线程共享同一个 Connection Pool。在发送过程中,如果因 为通信原因导致发送失败,API 能够自动重新发送,重试的次数在配置文件设置。
(2) 参数

参数名

数据类型 说明

nNeedReport

Int

是否要求返回状态报告(0=不要求,1=要求)

nMsgLevel

Int

优先级别,(0-9,0 表示最低优先级)

sServiceID

Char(11) 业务代码

nMsgFormat

Int

短消息格式(参照短消息格式表)。网关不做判定, 透 明传输。

sFeeType

Char(3) 资费类别

sFeeCode

Char(7) 资费代码(以分为单位)

sFixedfee

Char(7) 包月费/封顶费(以分为单位)

sValidTime

Char(18) 存活有效期,格式遵循 SMPP3.3 协议

sAtTime

Char(18) 定时发送时间,格式遵循 SMPP3.3 协议

sSrcTermID

Char(22) 短消息发送用户号码(当为 SP 代码时须在前面加 118)

sChargeTermID Char(22) 计费号码(若为空,则对被叫计费)

sDestTermIDFile Char(100) 保存所有目的号码的文件名

nMsgLen

Int

消息长度

sMsgContent

Char(*) 短消息内容(nMsgLen=0 时表示存放短消息的文件名)

sMsgIDFile

Char(100) 保存所有短消息的返回 MsgID 和 ErrorCode 的文件名

sMsgType

Char(2) 短消息类型

sReserved

Char(9) 保留

(3) 返回 0=成功

1=失败
A.3.4 获取群发短消息的结果(GetSendBatchResp) (1) 作用 从文件里读取群发的某一个短消息的标识、发送结果和发送号码。 (2) 参数

参数名

数据类型 说明

sMsgIDFile

Char(100) 保存所有短消息的返回 MsgID 和 ErrorCode 的文件名

nPos

Int

短消息位置,从 0 开始

pSendBatchResp SendBatch Resp *
(3) 返回

用于保存结果的 SendBatchResp 结构指针

中国电信短消息网关 SMGP 接口协议规范(V3.1)

41

0=成功

1=失败
A.3.5 接收短消息(SMGPDeliver) (1) 作用 连接短消息网关,等待接收属于本 SP 的短消息。 (2) 参数

参数名

数据类型 说明

nTimeout

Int*

等待时间,单位:秒。0 表示永远等待。

pDeliverResp DeliverRe sp *
(3) 返回
0=成功

保存短消息的 DeliverResp 结构指针

1=失败
A.3.6 检查短消息网关是否能够提供服务(CMMPActiveTest) (1) 作用 检查短消息网关是否能够提供服务。 (2) 参数

参数名

数据类型 说明

nErrorCode

Int

(3) 返回

0=成功

错误代码(参照错误代码表)。

1=失败
A.3.7 查询短消息流量(SMGPQuery可选) (1) 作用 向短消息网关查询某天的短消息流量。 (2) 参数

参数名

数据类型

说明

sDate

Char(10)

查询日期,格式:yyyymmdd

nQueryType

Int

查询类型,0=总数查询;1=按业务代码查询

sServiceID

Char(11)

查询码1(业务类型)

pQueryResp

QueryResp *

(3) 返回 0=成功 1=失败

A.4 配置SMGP API

保存查询结果的 QueryResp 结构指针

配置文件在 smgpapi/config/smgpc.ini,以下是配置项的说明:

名称

说明

SPId

SP 编号,必须与 License 的一致。

SPShareKey

SP 的密码,如果填写不正确会导致应用程序不能通过 SMGP 用

42

中国电信短消息网关 SMGP 接口协议规范(V3.1)

户认证。

WithPrevPage

第 1 个以后的分割短消息的前置说明文字,可以为空。

例如(第 2 个分割短消息):(2/3)(continue)xxxxxx

“(continue)”是前置说明文字

WithNextPage

分割短消息的后置说明文字,可以为空,最后一个短消息不带 后置说明文字。

例如(第 1 个分割短消息):(1/3)xxxxxx(to be continued)

“(to be continued)”是前置说明文字

PageSpaceAscii

AscII 短消息的最大长度

PageSpaceGB

中文短消息的最大长度

PageSpaceBinary

二进制短消息的最大长度

WithPageIndex

在分割短消息时是否附加页号,0=否,1=是。

MaxPage

最大分割页数,最大是 99 页。

ClientIP

客户主机的 IP 地址,必须填写接入 Internet 的公网地址。如 果主机是通过 Gateway 接入 Internet,就填写 Gateway 地址。 如果客户主机的 IP 地址填写错误会导致应用程序不能通过 SMGP 用户认证。

ServerIP

短消息网关的 IP 地址

ServerPort

短消息网关的端口

SubmitRetry

发送短消息自动重试次数(1 表示只发送 1 次,不重新发送)

RequestTimeout

发送请求超时时间,单位:秒

A.5 短消息的自动分割功能

SMGPSendSingle 和 SMGPSendBatch 提供自动分割短消息的功能,分割的效果由 smgpc.ini 的配置控制。 当参数 nMsgFormat 等于 0 或 15 时,API 就提供分割短消息功能。API 扫描短消息的 内容,把短消息分段,根据每一段的短消息内容设置 nMsgFormat。如果某一段短消息含有 中文,就把那一段短消息的发送格式设为 15,取 PageSpaceGB 为最大长度;如果不含中文, 就把那一段短消息的发送格式设为 0,取 PageSpaceAscii 为最大长度。这样,可以充分利用 短消息的最大发送长度,减少分割数量。如果 WithPrevPage 或者 PageSpaceGB 含有汉字, 所有分割短消息的发送格式都设为 15。 当参数 nMsgFormat 等于 4 时,API 根据 PageSpaceBinary 配置分割短消息。 当参数 nMsgFormat 等于 0 并且长度小于 PageSpaceGB,API 扫描短消息内容是否含有 中文。如果发现中文,就自动把发送格式变为 15。
A.6 错误代码含义

编号 0 1 2

含义 成功 保留 保留

中国电信短消息网关 SMGP 接口协议规范(V3.1)

43

3

消息格式错

4

非法短消息长度(MsgLength)

5

非法资费代码(FeeCode)

6

保留

7

非法业务代码(ServiceId)

8

系统忙

9

保留

10

非法 SP 编号

11

非法信息格式(MsgFormat)

12

非法资费类别(FeeType)

13

非法存活有效期(ValidTime)

14

非法定时发送时间(AtTime)

15

非法计费号码(ChargeTermId)

16

非法目标号码(DestTermId)

17

不能打开目标号码文件(DestTermIdFile)

18

不能打开短消息内容文件(MsgFile)

19

保留

20

连接短消息网关失败

21

认证错

22

保留

23

发送队列满

24

保留

25

命令字错

26

序列号错

27

保留

28

保留

29

版本号不匹配

30

非法消息类型(MsgType)

31

非法优先级(Priority)

32

保留

33

保留

34

保留

35

非法时间格式

36

保留

44

中国电信短消息网关 SMGP 接口协议规范(V3.1)

37 38 39 40 41 42 43 44 45 46 47 48 99 其它

保留 非法查询类型(QueryType) 路由错误 非法包月/封顶费(FixedFee) 保留 保留 保留 保留 保留 非法发送用户号码(SrcTermId) 保留 保留 系统错误 保留

附 录 B 短消息群发功能的实现
(规范性附录)
MT 短信的群发功能的实现: SMGW 接收到来自 SP 的 SMGP_Submit 消息后,判断是否为群发的 MT 短信。如果是 群发的 MT 短信(假设群发目的号码数为 n),则将该消息拆包为 n 条 SMGP_Forward 消息 发送给其它网关或 SMPP_Submit 消息发给 SMC,其中计费规则(对谁计费和计费多少)与 单条 MT 短信的计费规则相同。返回给 SP 的 SMGP_Submit_Resp 消息中的 Msg_ID 则暗示 一个范围,即 Msg_ID ~ Msg_ID+(n-1)分别对应 n 个目的终端用户的信息标识,那么 在返回的状态报告中可以依据 Msg_ID ~ Msg_ID+(n-1)范围内的数字匹配出群发短信 中的每一个短信发送请求。需要注意的是,Msg_ID ~ Msg_ID+(n-1)范围内的信息标 识不能被随后的其它 SMGP_Submit_Resp 消息使用。 在 Msg_ID 中的“序列号”如下定义:“序列号:000000~999999,顺序增加,步长为 1,循环使用。”,那么在 Msg_Id ~ Msg_Id+(n-1)范围中仍然依据此规则,如果其中“序 列号”到达最大值,则从 0 开始循环使用。 增加此短信群发功能,实际上等同于 SP 把以前分为 n 次发送的短信合并到一条消息中, 但是 SP 仍然应该把此一条消息当作 n 条短信提交请求,并相应记录 n 条话单,SP 拿 n 条话 单与电信公司进行对帐和结算。
接入 SMGW 对 SP 下发的短信的流量具有限制功能,对 SP 流量的统计对短信群发来 说,应该计算为 n 条短信。

中国电信短消息网关 SMGP 接口协议规范(V3.1)

45

抄送:股份公司并转北京、上海、广州研究院。

公司内部:集团公司市场部、网络发展部、监管事务

部、国际部、政企客户事业部、家庭客户

事业部、个人客户事业部、网络运行维护

事业部。

拟文部门:技术部

会签部门:家庭客户事业部、个人客户事业部。

中国电信集团公司综合部

2008 年 12 月 5 日印发




友情链接: