CMPP3 消息定义1
来源:互联网 发布:公司取名软件duote 编辑:程序博客网 时间:2024/04/30 20:17
(一) 基本数据类型
Unsigned Integer | 无符号整数 |
Integer | 整数,可为正整数、负整数或零 |
Octet String | 定长字符串,位数不足时,如果左补0则补ASCII表示的零以填充,如果右补0则补二进制的零以表示字符串的结束符 |
(二) 消息结构
项目 | 说明 |
Message Header | 消息头(所有消息公共包头) |
Message Body | 消息体 |
(三) 消息头格式(Message Header)
字段名 | 字节数 | 类型 | 描述 |
Total_Length | 4 | Unsigned Integer | 消息总长度(含消息头及消息体) |
Command_Id | 4 | Unsigned Integer | 命令或响应类型 |
Sequence_Id | 4 | Unsigned Integer | 消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同) |
(四) 业务提供商(SP)与互联网短信网关(ISMG)间的消息定义
SP为客户端,向作为服务器端的ISMG发起连接请求,在通过身份验证之后SP与ISMG之间方可进行数据传输。
1. SP请求连接到ISMG(CMPP_CONNECT)操作
CMPP_CONNECT操作的目的是SP向ISMG注册作为一个合法SP身份,若注册成功后即建立了应用层的连接,此后SP可以通过此ISMG接收和发送短信。
ISMG以CMPP_CONNECT_RESP消息响应SP的请求。
CMPP_CONNECT消息定义(SPàISMG)
字段名 | 字节数 | 属性 | 描述 |
Source_Addr | 6 | Octet String | 源地址,此处为SP_Id,即SP的企业代码。 |
AuthenticatorSource | 16 | Octet String | 用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下: AuthenticatorSource = MD5(Source_Addr+9 字节的0 +shared secret+timestamp) Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。 |
Version | 1 | Unsigned Integer | 双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0 |
Timestamp | 4 | Unsigned Integer | 时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。 |
CMPP_CONNECT_RESP消息定义(ISMG à SP)
字段名 | 字节数 | 属性 | 描述 |
Status | 4 | Unsigned Integer | 状态 0:正确 1:消息结构错 2:非法源地址 3:认证错 4:版本太高 5~ :其他错误 |
AuthenticatorISMG | 16 | Octet String | ISMG认证码,用于鉴别ISMG。 其值通过单向MD5 hash计算得出,表示如下: AuthenticatorISMG =MD5(Status+AuthenticatorSource+shared secret),Shared secret 由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。 认证出错时,此项为空。 |
Version | 1 | Unsigned Integer | 服务器支持的最高版本号,对于3.0的版本,高4bit为3,低4位为0 |
2. SP或ISMG请求拆除连接(CMPP_TERMINATE)操作
CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因决定拆除当前的应用层连接而发起的操作。此操作完成后SP与ISMG之间的应用层连接被释放,此后SP若再要与ISMG通信时应发起CMPP_CONNECT操作。
ISMG或SP以CMPP_TERMINATE_RESP消息响应请求。
CMPP_TERMINATE消息定义(SPàISMG或ISMG à SP)
无消息体。
CMPP_TERMINATE_RESP消息定义(SPàISMG或ISMG à SP)
无消息体。
3. SP向ISMG提交短信(CMPP_SUBMIT)操作
CMPP_SUBMIT操作的目的是SP在与ISMG建立应用层连接后向ISMG提交短信。
ISMG以CMPP_SUBMIT_RESP消息响应。
CMPP_SUBMIT消息定义(SPàISMG)
字段名 | 字节数 | 属性 | 描述 |
Msg_Id | 8 | Unsigned Integer | 信息标识。 |
Pk_total | 1 | Unsigned Integer | 相同Msg_Id的信息总条数,从1开始。 |
Pk_number | 1 | Unsigned Integer | 相同Msg_Id的信息序号,从1开始。 |
Registered_Delivery | 1 | Unsigned Integer | 是否要求返回状态确认报告: 0:不需要; 1:需要。 |
Msg_level | 1 | Unsigned Integer | 信息级别。 |
Service_Id | 10 | Octet String | 业务标识,是数字、字母和符号的组合。 |
Fee_UserType | 1 | Unsigned Integer | 计费用户类型字段: 0:对目的终端MSISDN计费; 1:对源终端MSISDN计费; 2:对SP计费; 3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。 |
Fee_terminal_Id | 32 | Octet String | 被计费用户的号码,当Fee_UserType为3时该值有效,当Fee_UserType为0、1、2时该值无意义。 |
Fee_terminal_type | 1 | Unsigned Integer | 被计费用户的号码类型,0:真实号码;1:伪码。 |
TP_pId | 1 | Unsigned Integer | GSM协议类型。详细是解释请参考GSM03.40中的 |
TP_udhi | 1 | Unsigned Integer | GSM协议类型。详细是解释请参考GSM03.40中的 |
Msg_Fmt | 1 | Unsigned Integer | 信息格式: 0:ASCII串; 3:短信写卡操作; 4:二进制信息; 8:UCS2编码; 15:含GB汉字。。。。。。 |
Msg_src | 6 | Octet String | 信息内容来源(SP_Id)。 |
FeeType | 2 | Octet String | 资费类别: 01:对“计费用户号码”免费; 02:对“计费用户号码”按条计信息费; 03:对“计费用户号码”按包月收取信息费。 |
FeeCode | 6 | Octet String | 资费代码(以分为单位)。 |
ValId_Time | 17 | Octet String | 存活有效期,格式遵循SMPP3.3协议。 |
At_Time | 17 | Octet String | 定时发送时间,格式遵循SMPP3.3协议。 |
Src_Id | 21 | Octet String | 源号码。SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码。 |
DestUsr_tl | 1 | Unsigned Integer | 接收信息的用户数量(小于100个用户)。 |
Dest_terminal_Id | 32*DestUsr_tl | Octet String | 接收短信的MSISDN号码。 |
Dest_terminal_type | 1 | Unsigned Integer | 接收短信的用户的号码类型,0:真实号码;1:伪码。 |
Msg_Length | 1 | Unsigned Integer | 信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节),取值大于或等于0。 |
Msg_Content | Msg_length | Octet String | 信息内容。 |
LinkID | 20 | Octet String | 点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。 |
系统应该支持短信的群发功能,关于短信群发功能的实现请参阅“附录1 短信群发功能的实现”。
CMPP_SUBMIT_RESP消息定义(ISMG à SP)
字段名 | 字节数 | 属性 | 描述 |
Msg_Id | 8 | Unsigned Integer | 信息标识,生成算法如下: 采用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 | Unsigned Integer | 结果: 0:正确; 1:消息结构错; 2:命令字错; 3:消息序号重复; 4:消息长度错; 5:资费代码错; 6:超过最大信息长; 7:业务代码错; 8:流量控制错; 9:本网关不负责服务此计费号码; 10:Src_Id错误; 11:Msg_src错误; 12:Fee_terminal_Id错误; 13:Dest_terminal_Id错误; …… |
4. SP向ISMG查询发送短信状态(CMPP_QUERY)操作
CMPP_QUERY操作的目的是SP向ISMG查询某时间的业务统计情况,可以按总数或按业务代码查询。ISMG以CMPP_QUERY_RESP应答。
CMPP_QUERY消息的定义(SPàISMG)
字段名 | 字节数 | 属性 | 描述 |
Time | 8 | Octet String | 时间YYYYMMDD(精确至日)。 |
Query_Type | 1 | Unsigned Integer | 查询类别: 0:总数查询; 1:按业务类型查询。 |
Query_Code | 10 | Octet String | 查询码。 当Query_Type为0时,此项无效;当Query_Type为1时,此项填写业务类型Service_Id.。 |
Reserve | 8 | Octet String | 保留。 |
CMPP_QUERY_RESP消息的定义(ISMG àSP)
字段名 | 字节数 | 属性 | 描述 |
Time | 8 | Octet String | 时间(精确至日)。 |
Query_Type | 1 | Unsigned Integer | 查询类别: 0:总数查询; 1:按业务类型查询。 |
Query_Code | 10 | Octet String | 查询码。 |
MT_TLMsg | 4 | Unsigned Integer | 从SP接收信息总数。 |
MT_Tlusr | 4 | Unsigned Integer | 从SP接收用户总数。 |
MT_Scs | 4 | Unsigned Integer | 成功转发数量。 |
MT_WT | 4 | Unsigned Integer | 待转发数量。 |
MT_FL | 4 | Unsigned Integer | 转发失败数量。 |
MO_Scs | 4 | Unsigned Integer | 向SP成功送达数量。 |
MO_WT | 4 | Unsigned Integer | 向SP待送达数量。 |
MO_FL | 4 | Unsigned Integer | 向SP送达失败数量。 |
- CMPP3 消息定义1
- CMPP3 消息定义2
- CMPP3 消息定义3
- 中国移动短信网关CMPP3.0 C#源代码:数据包定义
- 消息定义
- 中国移动短信网关CMPP3.0 C#源代码:事件定义及相关工具函数
- cmpp3 模拟器
- Window消息的定义
- DB2 SQLSTATE 消息定义
- Windows消息常量定义
- MFC消息映射定义
- 消息定义问题
- 使用protobuf定义消息
- Windows消息定义大全
- Windows消息宏定义
- 错误消息定义
- 消息内容定义XML
- 消息定义结构详解
- autoconf 和automake生成Makefile文件-Linux频道-中国IT实验室
- ORACLE 建立数据文件WriteWebShell
- 短信平台技术
- TD中回车的困惑
- 买书
- CMPP3 消息定义1
- CMPP3 消息定义2
- Windows 转到linux下C++编程的过程
- ASP获取数据库表名,字段名
- CMPP3 消息定义3
- 最近sql注入数据库被更改泛滥,以下提供一个.net程序防止sql注入的方法
- 错误码说明
- C#基础概念二十五问(转)
- MISC1.6平台介绍