CMPP3.0实现物联网卡发短信遇到的问题

当下物联网发展迅猛,物联网卡可以接受短信指令,实现千里之外尽可掌控。本人做过一个这类项目,把相关经验记录下来,分享给需要的人。
物联网卡通讯其实跟电话卡一样,可以使用CMPP协议。不过由于物联网卡位数为13位,未测试CMPP2.0是否支持,直接保险一点用的CMPP3.0协议。

因为CMPP3.0中号码字段增加到32位,还增加了号码类型字段,可能是为了扩展不同类型的卡。

Dest_terminal_Id 32*DestUsr_tl Octet String 接收短信的MSISDN号码
Dest_terminal_type 1 Unsigned Integer 接收短信的用户的号码类型,0:真实号码;1:伪码。

关于编码格式,一开始尝试了5种常用的编码,短信接收到中文还是乱码,解决方法如下:

*目前物联网卡通讯,如果是英文内容,则只支持Ascii码,也就是Msg_Fmt必须设置成0
如果是发送中文内容,则只支持UCS2编码,即Msg_Fmt必须设置成8
另外有个特别费解的问题是,如果是发中文内容,短信网关会自动在短信后面加上一串尾巴,类似【ayf】等。这个问题在开发的时候必须注意,以免发送的指令不能解析,需要做一些逻辑处理把尾巴去掉。*

关于号码选择类型:
物联网的用户号码类型选择Dest_terminal_type=0即可。若选择1会报错。

其他:
如遇到短信网关返回码,可查询以下网址看返回码解释

http://www.cnblogs.com/tuyile006/p/5849722.html

常见返回码:173 是物联网卡没开通短信功能造成的。

你可能感兴趣的:(java)