短信发送状态报告(Status Report)的处理

短信发送状态报告 (Status Report) 的处理
作者:刘涛
(原创,未经允许请勿转载)
术语:

MS: Mobile Station

SC: Service Centre (used for SMS)

SMS: Short Message Service
SMSC: Short Message Service - Service Centre

SRStatus Report Message storage

 
       SMS 作为一种信息载体,不仅仅可以用来传输文本信息,还有很多别的用法,例如使用8 位元传输push 、铃声、乃至图片,甚至可以于其上构建专属TCP/IP WAP 协议栈(事实上很少有人这么去做)。按照ETSI GSM 03.40 规范规定,SMS 具有下面几种类型:

1)         SMS-DELIVER

2)         SMS-DELIVER-REPORT

3)         SMS-SUBMIT

4)         SMS-SUBMIT-REPORT,

5)         SMS-STATUS-REPORT

6)         SMS-COMMAND

可以看出,短信的发送状态报告( SMS-STATUSREPORT )是一种特定格式的短信,被用来从SC MS 传送状态报告。下面我们以一条中国移动实际的状态报告获得过程为例分析其组成元素。
第一步:发送短信前的准备工作
执行下列 AT 指令进行发送准备

1)        AT+CNMI=2,1,0,1,1

设置新消息到达时的指示方式,注意红色字体 1 表示位代表状态报告到达时进行提示,一般的模块默认都是 0 ,不提示状态报告。

2)        AT+CMGF=0

设置 PDU 模式

3)        AT+CSCS=”UCS2”

设置 UCS2 字符集
第二步:发送短信
AT+CMGS=38
> 0031000B913158136777F70008FF18003C0030003000300031003E6D4B8BD577ED4FE156DE9988
+CMGS: 8
OK
注意 :红色字体部分 31 表示需要状态报告,相应的 11 表示不需要状态报告。
第三步:串口读取到回馈
+CDS: 26
00 06 08 0D91683158136777F7 60207041653000 60207041653000 00
八位元
描述
00
SMSC 长度,此处为零,表示不含短消息中心号码
06
First octet 字节,即000001 10B ,表示这是一个status report
08
引用消息号码,就是使用 AT+CMGS 发送短信成功时返回的那个 +CMGS 值,可以一一对应检索状态
0D91683158136777F7
对应短信接受方手机号码 13853167777
60207041653000
SMSC 接收到所发送短信的时间
60207041653000
SMSC 处理并给出状态的时间
00
对应发送短信的状态, 00 表示成功
第四步:一点点拓展
到这里我们已经成功的发送了一条要求状态报告的短信,并且成功地收取到了它的状态报告,告诉我们已经成功送达收信人。实际应用中,大部分的手机模块对于状态报告和普通短信的处理是有所不同的。按照协议的规定,状态报告必须存放在可变内存(volatile memory )中,随着SIM 卡的更换进行清除。这样限定了状态报告无法和普通短信一样存放在SIM 中,这样对我们有什么影响哪?
大家知道,我们从手机(注意这里不是SIM 卡的提法)模块中读取短信时,一般使用三种方式:
1)  使用 AT+CMGL 进行列表
2)  使用 AT+CMGR 读取指定短信
3)  实时监听串口,直接获得新短信内容
这样,如果一个手机模块本身不具备可变内存,也就意味着无法再使用1 2 中的方法读取状态报告。反之手机模块具备可变内存,那么可以使用AT+CPMS 设置CMGL CMGR 操作的当前存储空间后使用1 2 中的方法,对于WAVECOM 的模块还需要使用AT+CNMI=2,1,0, 2,1 先设置状态报告保存到专属“SR ”空间(不同厂家的模块对于AT+CPMS 使用的mem1 mem2 空间的定义名称一般是不同的)。例如:

1)        AT+CNMI=2,1,0,2,1

2)        AT+CPMS=”SR”,”SM”

3)        … …


A :一个根据网上流传较广的短信解码程序修改后的解析代码片断

        switch(getMaskByte(pDst->TP_FIRSTOCT, FOD_TP_MTI))

        {

            case SMS_STATUS_REPORT:

                gsmString2Bytes(pCloneSrc, &tmp, 2);    //TP-Message-Reference

                pDst->TP_MR = tmp;

                  pCloneSrc += 2;                // 指针后移

 

                gsmString2Bytes(pCloneSrc, &tmp, 2);       // 取长度

                if(tmp & 1) tmp += 1;       // 调整奇偶性

                pCloneSrc += 4;                          // 指针后移,忽略了回复地址(TP-RA)格式

                gsmSerializeNumbers(pCloneSrc, pDst->TPA, tmp);    // TP-RA号码

                pCloneSrc += tmp;            // 指针后移

 

                gsmSerializeNumbers(pCloneSrc, pDst->TP_SCTS, 14);                 // 服务时间戳字符串(TP_SCTS)

                pCloneSrc += 14;              // 指针后移

                gsmSerializeNumbers(pCloneSrc, pDst->TP_DT, 14);            // 处理时间戳字符串(TP_DT)

                pCloneSrc += 14;              // 指针后移

 

                  gsmString2Bytes(pCloneSrc, &tmp, 2);       // TP-Status

                pDst->TP_ST = tmp;

                break;

            case SMS_DELIVER:

            default:

                … …

}
 
一、系统概述 本工具包包含中国移动、中国联通、中国电信、中国网通及短信中心短信网关模拟器及用于测试用途的手机终端模拟器. 二、功能介绍 中国移动CMPP模拟器 概述:基于CMPP v3.0 v2.0协议开发的,具有方便易用图形化的界面,专业级协议分析工具,是中国移动SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行含有逻辑的压力测试,充分检验短信平台的正确性、稳定性。 功能:1.按照CMPPv3.0 ,CMPPv2.0协议实现,支持CONNECT,SUBMIT,DELIVER(含状态报告),ACTIVE_TEST,TERMINATE消息。2、根据客户端登录提交的版本号自动识别CMPP协议版本。3.手动设置CMPP协议版本。4.支持多个客户端登录,支持长连接和短连接类型,支持标准CMPP和华为、亚信接口 5.服务端自动生成信息标识(Msgid) 6.全中文解析及二进制格式包内容显示 中国联通SGIP模拟器 概述:基于SGIP v1.2协议开发的,具有方便易用图形化的界面,专业级协议分析工具,是中国联通SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行含有逻辑的压力测试,充分检验短信平台的正确性、稳定性。 功能:1.按照SGIP v1.2协议实现,支持BIND,SUBMIT,DELIVER,UNBIND,REPORT消息。2.支持多个客户端登录,支持长连接和短连接类型,支持标准SGIP接口 3.服务端自动生成序列号(SequenceNumber) 4.全中文解析及二进制格式包内容显示 中国电信小灵通SMGP模拟器: 概述:基于最新的SMGP v3.0 v2.0协议开发,增加了对交易请求消息的支持,具有方便易用图形化的界面,专业级协议分析工具,是中国电信SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行含有逻辑的压力测试,充分检验短信平台的正确性、稳定性。 功能:1.基于SMGP v2.0协议实现,支持LOGIN,SUBMIT,DELIVER(含状态报告)消息。2.支持多个客户端登录,支持长连接和短连接类型,支持标准SMGP和中兴接口 3.服务端自动生成短信标识 4.全中文解析及二进制格式包内容显示 中国网通CNGP模拟器: 概述:基于CNGP v2.0协议开发,具有方便易用图形化的界面,专业级协议分析工具,是中国网通SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行含有逻辑的压力测试,充分检验短信平台的正确性、稳定性。 功能:1.基于CNGP 2.0协议实现,支持LOGIN,SUBMIT,DELIVER(含状态报告),ACTIVETEST,EXIT消息。2.支持多个客户端登录,支持长连接和短连接类型,支持标准CNGP和华为接口 3.服务端自动生成短信标识 4.全中文解析及二进制格式包内容显示 短信中心SMPP模拟器: 概述:基于SMPP v3.4协议开发,具有方便易用图形化的界面,专业级协议分析工具,是SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可进行含有逻辑的压力测试,充分检验短信平台的正确性、稳定性。 功能:1.基于SMPP v3.4协议实现,支持ESME_BNDRCV,ESME_BNDTRN,ESME_UBD,ESME_SUB_SM,ESME_DELIVER_SM(含状态报告)消息。2.支持多个客户端登录,支持长连接和短连接类型,支持标准SMPP和华为接口 3.服务端自动生成短信标识 4.全中文解析及二进制格式包内容显示
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值