Nodejs 发送短信程序避坑指南
前面的废话
前阵子接了个有意思的活,需求根据模板批量发送短信,在强烈兴趣爱好的驱使下决定研究研究,顺便把钱赚了
找教程的时候发现非常少,视频资源都比较老,中英文短信混合发送没有一个教程提及,调通硬件又发现,nodejs
相关的资源就更少了
折腾了两周多,最开始买的板子只支持 2G
,想着办 2G
卡结果营业厅说没法办,一通找最后又换成现在这个板子,还有发短信各种失败…
总之最后折腾出来这篇,分享一下踩的坑
硬件准备
封装好的 4G 模块 (A7680C)
USB TO TTL (CH340G) 一般会附赠线
接线参考
测试
用串口工具,或者使用 serialport
包写个简单的程序连接并发送指令
但注意甄别,我遇到有些工具不会按你的指令,会给你发一些乱七八糟的短信
发送英文短信
AT
测试命令AT+CMGF=1
设置短信格式AT+CMGS=13000000000
接收手机以上都需要发送新行,也就是回车
>
出现箭头后写上短信内容,去掉发送新行并发送切换到
16进制
新行发送1A
有的教程说的最后发送 Ctrl + Z
其实说的就是 1A
接收成功的短信
发送中文短信
首先要将手机号、短信内容经过一系列处理
801986
+ 发送人手机号 +F
,进行奇偶反转,如80198613012345678F
变为0891683110325476F8
86
+ 收件人手机号 +F
,进行奇偶反转- 短信内容转为 16 进制
11000D91
+ 收件人反转的手机号 +0008AA
+ 16 进制短信内容- 计算上一步字符串长度除以二
- 发件人反转手机号 + 第四步的字符串
- 依次执行
AT+CMGF=0
、AT+CSCS="GSM
、AT+CMGS=字符串长度
、上一步的字符串、1A
避坑
中文短信转 16 进制要 4 位,不足补零,比如
ABC
是不行的,必须是0ABC
,否则会乱码在
nodejs
里1A
的发送方式是1
2serialPort.write(Buffer.from([0x1a]))
serialPort.write("\r")
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 怠惰のコエ - imba久期 BLOG!
评论