SMIAS系统CMPP30接口使用手册ANSI C.docx
《SMIAS系统CMPP30接口使用手册ANSI C.docx》由会员分享,可在线阅读,更多相关《SMIAS系统CMPP30接口使用手册ANSI C.docx(45页珍藏版)》请在冰点文库上搜索。
![SMIAS系统CMPP30接口使用手册ANSI C.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/1c1ee29d-c943-4d45-9a06-58229e8ba26a/1c1ee29d-c943-4d45-9a06-58229e8ba26a1.gif)
SMIAS系统CMPP30接口使用手册ANSIC
SMIAS短信网关系统
CMPP30接口使用手册
(ANSICV2.1)
东软集团有限公司中间件技术分公司
2003年10月
东软集团有限公司中间件技术分公司
地址:
沈阳市和平区三好街84-2号
电话:
(024)83665567
传真:
(024)23782821
Email:
版权声明
ShortMessageInternetAccessSolution(SMIAS)的版权归东软集团有限公司中间件技术分公司所有。
未经东软集团有限公司中间件技术分公司的书面准许,不得将本规范的任何部分以任何形式、采用任何手段(电子的或机械的,包括照相复制或录制)、或为任何目的,进行复制或扩散。
©Copyright东软集团有限公司中间件技术分公司。
版权所有,翻制必究。
®是东软集团有限公司的注册商标。
前言
ShortMessageInternetAccessSolution(SMIAS)是结合中国移动通信总公司的“梦网计划”应运而生的一套基于短信的移动互联网应用解决方案。
本系统提供了面向服务提供商(ASP或ICP)的开发接口,服务提供商可以使用这些接口API实现与中国移动各省移动通信公司SMIAS系统的接入。
阅读指南
本部分主要讨论本手册的目标、阅读对象、手册的组织结构。
〖手册目标〗
本手册是SMIAS(ShortMessageInternetAccessSolution)短信网关系统SP接入子系统通信接口CAPI的使用指南。
它详细介绍了SP-SMIAS网关之间的通信流程,通信协议,以及通信接口CAPI的数据结构,以及函数调用方法。
SP可以通过本手册的说明,与SMIAS短信网关系统进行正确的通信,以提供服务。
〖阅读对象〗
本手册面向的主要对象是准备接入SMIAS短信网关系统的SP的开发人员。
〖手册构成〗
本手册由如下章节组成:
∙概述
对SMIAS系统的总体概述
∙通信流程
描述了SP接入SMIAS网关的通信流程,以及注意事项
∙通信协议
以表格的方式描述了SP与SMIAS网关通信的各种通信包的包格式,方便与SP在与SMIAS网关通信时的跟踪调试。
∙CAPI使用说明
描述了CAPI的数据结构,数据类型的含义,以及各个接口函数的调用方法。
【注意】的意思是请读者注意那些需要注意的事项。
【警告】的意思是请读者千万注意某些事项,否则将造成错误。
目录
第1章概述1
1.1网关结构1
第2章接口操作1
§2.1SP连接类型1
§2.2操作类型1
§2.2.1SP到SMIAS的操作类型1
§2.2.2SMIAS网关到SP的操作类型2
§2.2.3双向操作类型2
§2.3SP操作流程3
第3章通信协议1
§3.1阅读说明1
§3.2消息体格式2
§3.2.1Login消息体2
§3.2.2LoginResponse消息体2
§3.2.3Logout消息体3
§3.2.4LogoutResponse消息体3
§3.2.5Submit消息体4
§3.2.6SubmitResponse消息体6
§3.2.7Deliver消息体7
§3.2.8DeliverResponse消息体9
§3.2.9Cancel消息体10
§3.2.10CancelResponse消息体10
§3.2.11Active消息体10
§3.2.12ActiveResponse消息体10
第4章ICP接口函数说明11
§4.1接口函数中数据类型的定义11
§4.2ICP接口函数描述11
附录1
附录一应答状态码表及消息命令字表1
附录二代码样例4
修改总结
日期
版本
修改总结
第1章概述
SMIAS短信网关系统是架构于SP与SMSC之间的短信处理网关。
它为SP提供了有效的服务提供接口。
SP通过SMIAS短信网关系统可以获取移动用户发起的短信请求,并为相应的移动用户发送短信应答;亦可以直接向移动用户推送短信服务。
1.1网关结构
第2章接口操作
§2.1SP连接类型
在CMPP30协议中,SP与短信网关建立的连接均是发送接收类型。
【注意】虽然原则上说SP可以与SMIAS短信网关建立多个连接,但为了防止SP无限制的登录网关,SMIAS短信网关可以通过配置对SP的连接数量进行限制,总连接数不能超过运行商为该SP提供的连接数。
§2.2操作类型
§2.2.1SP到SMIAS的操作类型
∙Login(登录)
SP在通过SMIAS短信网关系统提供服务之前,必须连入并正确登录SMIAS短信网关。
∙Logout(退出)
SP在服务完成后,通过Logout退出系统,此后网关会主动关闭网络连接。
SP也可以简单的通过主动关闭网络连接来退出系统。
∙Submit(提交消息)
SP通过Submit操作向网关提交MT消息。
∙Cancel(取消消息)
SP通过Cancel操作要求网关取消过去Submit的某一条MT消息。
∙DeliverResponse(下发应答)
SP通过此操作回应网关的Deliver请求操作。
【警告】为了防止SP的恶意攻击,SP在以同一主机连入SMIAS短信网关系统时,必须在等到SMIAS网关的正确Login应答之后,才可以进行第二次网络连接,否则,网关会主动关闭其后续网络连接。
§2.2.2SMIAS网关到SP的操作类型
∙Deliver(下发消息)
当SP以接收型或发送接收型连接正确登录SMIAS短信网关系统之后,SMIAS网关会通过此操作向SP主动下发MO消息。
∙LoginResponse(登录应答)
SMIAS短信网关使用此操作回应SP的Login请求操作。
∙LogoutResponse(退出应答)
SMIAS短信网关使用此操作回应SP的Logout请求操作。
此项请求完成后,SMIAS短信网关会主动关闭网络连接。
∙CancelResponse(取消应答)
SMIAS短信网关使用此操作回应SP的Cancel请求操作。
【警告】SMIAS短信网关以先进先出的原则将MO消息依次进行下发;SP在得到一条MO消息之后必须回应一个应答;
§2.2.3双向操作类型
∙ActiveTest(连接存活测试)
SP可以通过此操作来检测与SMIAS短信网关系统之间的网络连接是否正常。
SMIAS短信网关也会通过此操作来检测与SP的网络连接是否正常。
∙ActiveTestResponse(连接存活测试应答)
SMIAS短信网关系统或SP使用此操作回应对方的ActiveTest请求操作。
【注意】当SP与SMIAS的某个网络连接在一段设定时间内没有任何消息包的活动,网关会主动下发一个存活测试,如果SP端无应答,SMIAS短信网关系统将会主动关闭此网络连接。
§2.3SP操作流程
ICP与ISMG服务器通信采用长连接方式,登录类型为收发型。
登录到ISMG服务器后,即可以不断接收服务器下发的MO请求数据,又可以不断向ISMG服务器发起提交(Submit)、查询(Query)、删除(Cancel)及活动测试(ActiveTest)请求,直到ICP主动发起退出登录请求。
建立连接(connect)loginoperation(提交、查询、删除、活动测试、接收下发数据)logout(退出登录)断开连接(disconnect);
第3章通信协议
SMIASICP接口采用的是标准的CMPP30协议。
§3.1阅读说明
UnsignedInteger
无符号整数
Integer
整数,可为正整数、负整数或零
OctetString
定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符
项目
说明
MessageHeader
消息头(所有消息公共包头)
MessageBody
消息体
字段名
字节数
类型
描述
Total_Length
4
UnsignedInteger
消息总长度(含消息头及消息体)
Command_Id
4
UnsignedInteger
命令或响应类型
Sequence_Id
4
UnsignedInteger
消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)
§3.2消息体格式
§3.2.1Login消息体
字段名
字节数
属性
描述
Source_Addr
6
OctetString
源地址,此处为SP_Id,即SP的企业代码。
AuthenticatorSource
16
OctetString
用于鉴别源地址。
其值通过单向MD5hash计算得出,表示如下:
AuthenticatorSource=
MD5(Source_Addr+9字节的0+sharedsecret+timestamp)
Sharedsecret由中国移动与源地址实体事先商定,timestamp格式为:
MMDDHHMMSS,即月日时分秒,10位。
Version
1
UnsignedInteger
双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0
Timestamp
4
UnsignedInteger
时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐。
§3.2.2LoginResponse消息体
字段名
字节数
属性
描述
Status
4
UnsignedInteger
状态
0:
正确
1:
消息结构错
2:
非法源地址
3:
认证错
4:
版本太高
5~:
其他错误
AuthenticatorISMG
16
OctetString
ISMG认证码,用于鉴别ISMG。
其值通过单向MD5hash计算得出,表示如下:
AuthenticatorISMG=MD5(Status+AuthenticatorSource+sharedsecret),Sharedsecret由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。
认证出错时,此项为空。
Version
1
UnsignedInteger
服务器支持的最高版本号,对于3.0的版本,高4bit为3,低4位为0
§3.2.3Logout消息体
无消息体
§3.2.4LogoutResponse消息体
无消息体
§3.2.5Submit消息体
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识,由SP接入的短信网关本身产生,本处填空。
Pk_total
1
UnsignedInteger
相同Msg_Id的信息总条数,从1开始
Pk_number
1
UnsignedInteger
相同Msg_Id的信息序号,从1开始
Registered_Delivery
1
UnsignedInteger
是否要求返回状态确认报告:
0:
不需要
1:
需要
Msg_level
1
UnsignedInteger
信息级别
Service_Id
10
OctetString
业务标识,是数字、字母和符号的组合。
Fee_UserType
1
UnsignedInteger
计费用户类型字段
0:
对目的终端MSISDN计费;
1:
对源终端MSISDN计费;
2:
对SP计费;
3:
表示本字段无效,对谁计费参见Fee_terminal_Id字段。
Fee_terminal_Id
32
OctetString
被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_UserType字段,本字段与Fee_UserType字段互斥)
Fee_terminal_type
1
UnsignedInteger
被计费用户的号码类型,0:
真实号码;1:
伪码
TP_pId
1
UnsignedInteger
GSM协议类型。
详细是解释请参考GSM03.40中的9.2.3.9
TP_udhi
1
UnsignedInteger
GSM协议类型。
详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
Msg_Fmt
1
UnsignedInteger
信息格式
0:
ASCII串
3:
短信写卡操作
4:
二进制信息
8:
UCS2编码
15:
含GB汉字。
。
。
。
。
。
Msg_src
6
OctetString
信息内容来源(SP_Id)
FeeType
2
OctetString
资费类别
01:
对“计费用户号码”免费
02:
对“计费用户号码”按条计信息费
03:
对“计费用户号码”按包月收取信息费
04:
对“计费用户号码”的信息费封顶
05:
对“计费用户号码”的收费是由SP实现
FeeCode
6
OctetString
资费代码(以分为单位)
ValId_Time
17
OctetString
存活有效期,格式遵循SMPP3.3协议
At_Time
17
OctetString
定时发送时间,格式遵循SMPP3.3协议
Src_Id
21
OctetString
源号码
SP的服务代码或前缀为服务代码的长号码,网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码
DestUsr_tl
1
UnsignedInteger
接收信息的用户数量(小于100个用户)
Dest_terminal_Id
32*DestUsr_tl
OctetString
接收短信的MSISDN号码
Dest_terminal_type
1
UnsignedInteger
接收短信的用户的号码类型,0:
真实号码;1:
伪码
Msg_Length
1
UnsignedInteger
信息长度(Msg_Fmt值为0时:
<160个字节;其它<=140个字节)
Msg_Content
Msg_length
OctetString
信息内容
LinkID
20
OctetString
点播业务使用的LinkID,非点播类业务的MT流程不使用该字段
§3.2.6SubmitResponse消息体
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识,生成算法如下:
采用64位(8字节)的整数:
(1)时间(格式为MMDDHHMMSS,即月日时分秒):
bit64~bit39,其中
bit64~bit61:
月份的二进制表示;
bit60~bit56:
日的二进制表示;
bit55~bit51:
小时的二进制表示;
bit50~bit45:
分的二进制表示;
bit44~bit39:
秒的二进制表示;
(2)短信网关代码:
bit38~bit17,把短信网关的代码转换为整数填写到该字段中。
(3)序列号:
bit16~bit1,顺序增加,步长为1,循环使用。
各部分如不能填满,左补零,右对齐。
(SP根据请求和应答消息的Sequence_Id一致性就可得到CMPP_Submit消息的Msg_Id)
Result
4
UnsignedInteger
结果
0:
正确
1:
消息结构错
2:
命令字错
3:
消息序号重复
4:
消息长度错
5:
资费代码错
6:
超过最大信息长
7:
业务代码错
8:
流量控制错
9:
本网关不负责服务此计费号码
10:
Src_Id错误
11:
Msg_src错误
12:
Fee_terminal_Id错误
13:
Dest_terminal_Id错误
……
【注意】SP在向SMIAS短信网关发送群发MT包时,若发送成功,SMIAS短信网关将该群发MT包拆分为n个(n表示目的地址的数量)包,每个包有一个唯一的Messageid;当返回应答时,应答包中的Messageid为该群发MT包中的最后一个包的Messageid;
§3.2.7Deliver消息体
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识
生成算法如下:
采用64位(8字节)的整数:
(1)时间(格式为MMDDHHMMSS,即月日时分秒):
bit64~bit39,其中
bit64~bit61:
月份的二进制表示;
bit60~bit56:
日的二进制表示;
bit55~bit51:
小时的二进制表示;
bit50~bit45:
分的二进制表示;
bit44~bit39:
秒的二进制表示;
(2)短信网关代码:
bit38~bit17,把短信网关的代码转换为整数填写到该字段中。
(3)序列号:
bit16~bit1,顺序增加,步长为1,循环使用。
各部分如不能填满,左补零,右对齐。
Dest_Id
21
OctetString
目的号码
SP的服务代码,一般4--6位,或者是前缀为服务代码的长号码;该号码是手机用户短消息的被叫号码。
Service_Id
10
OctetString
业务标识,是数字、字母和符号的组合。
TP_pid
1
UnsignedInteger
GSM协议类型。
详细解释请参考GSM03.40中的9.2.3.9
TP_udhi
1
UnsignedInteger
GSM协议类型。
详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
Msg_Fmt
1
UnsignedInteger
信息格式
0:
ASCII串
3:
短信写卡操作
4:
二进制信息
8:
UCS2编码
15:
含GB汉字
Src_terminal_Id
32
OctetString
源终端MSISDN号码(状态报告时填为CMPP_SUBMIT消息的目的终端号码)
Src_terminal_type
1
UnsignedInteger
源终端号码类型,0:
真实号码;1:
伪码
Registered_Delivery
1
UnsignedInteger
是否为状态报告
0:
非状态报告
1:
状态报告
Msg_Length
1
UnsignedInteger
消息长度
Msg_Content
Msg_length
OctetString
消息内容
LinkID
20
OctetString
点播业务使用的LinkID,非点播类业务的MT流程不使用该字段
当ISMG向SP送交状态报告时,信息内容字段(Msg_Content)格式定义如下:
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识
SP提交短信(CMPP_SUBMIT)操作时,与SP相连的ISMG产生的Msg_Id。
Stat
7
OctetString
发送短信的应答结果,含义与SMPP协议要求中stat字段定义相同,详见表一。
SP根据该字段确定CMPP_SUBMIT消息的处理状态。
Submit_time
10
OctetString
YYMMDDHHMM(YY为年的后两位00-99,MM:
01-12,DD:
01-31,HH:
00-23,MM:
00-59)
Done_time
10
OctetString
YYMMDDHHMM
Dest_terminal_Id
21
OctetString
目的终端MSISDN号码(SP发送CMPP_SUBMIT消息的目标终端)
SMSC_sequence
4
UnsignedInteger
取自SMSC发送状态报告的消息体中的消息标识。
表一Stat字段定义
MessageState
FinalMessageStates
Description
DELIVERED
DELIVRD
Messageisdeliveredtodestination
EXPIRED
EXPIRED
Messagevalidityperiodhas
expired
DELETED
DELETED
Messagehasbeendeleted.
UNDELIVERABLE
UNDELIV
Messageisundeliverable
ACCEPTED
ACCEPTD
Messageisinacceptedstate(i.e.hasbeenmanuallyreadonbehalfofthesubscriberbycustomerservice)
UNKNOWN
UNKNOWN
Messageisininvalidstate
REJECTED
REJECTD
Messageisinarejectedstate
MA:
xxxx
MA:
xxxx
SMSC不返回响应消息时的状态报告
MB:
xxxx
MB:
xxxx
SMSC返回错误响应消息时的状态报告
CA:
xxxx
CA:
xxxx
SCP不返回响应消息时的状态报告
CB:
xxxx
CB:
xxxx
SCP返回错误响应消息时的状态报告
§3.2.8DeliverResponse消息体
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识
(CMPP_DELIVER中的Msg_Id字段)
Result
4
UnsignedInteger
结果
0:
正确
1:
消息结构错
2:
命令字错
3:
消息序号重复
4:
消息长度错
5:
资费代码错
6:
超过最大信息长
7:
业务代码错
8:
流量控制错
9~:
其他错误
§3.2.9Cancel消息体
字段名
字节数
属性
描述
Msg_Id
8
UnsignedInteger
信息标识(SP想要删除的信息标识)
§3.2.10CancelResponse消息体
字段名
字节数
属性
描述
Success_Id
4
UnsignedInteger
成功标识
0:
成功
1:
失败
【注意】对于群发的MT消息,不能够进行cancel操作;
§3.2.11Active消息体
没有消息体
§3.2.12ActiveResponse消息体
字段名