...

OpenWRT 接收的短信转发到微信

点击 https://sct.ftqq.com/ 进入 Server酱,点击网页右上角的登录按钮,用微信扫描二维码登录,就获得了一个 SendKey,保存下来,在浏览器地址栏填入以下内容进行测试,把 <SendKey>替换为自己的 SendKey,<title>替换为自己想要的标题, <content>替换为自己想要输入的内容

https://sctapi.ftqq.com/<SendKey>.send?title=<title>&desp=<content>

改好的样子大概是这样

https://sctapi.ftqq.com/SCT325519TyMYyVJYJdPuzzJtBeUgB7gnl.send?title=hello&desp=world

如果微信可以接收到到消息,再接着往下。在OpenWRT软件包里安装 iconv ,这个插件用来解决中文乱码问题。输入以下命令,编写把新接收的短信发送到微信的脚本

vim /root/pushsms.sh

输入以下内容,把下面的 SendKey 改成自己的

#!/bin/sh
# 把刚接收的短信转换为文本
if [ "$1" == "RECEIVED" ]; then
    from=`grep "From:" $2 | awk -F ': ' '{printf $2}'`
    #sent=`grep "Sent:" $2 | awk -F ': ' '{printf $2}'`
    #received=`grep "Received:" $2 | awk -F ': ' '{printf $2}'`
    alphabet=`grep "Alphabet:" $2 | awk -F ': ' '{printf $2}'`

    if [ "$alphabet" = "UCS2" ]; then
        content=$(sed -e '1,/^$/ d' < "$2" | iconv -f UNICODEBIG -t UTF-8)
    else
        content=$(sed -e '1,/^$/ d' < "$2")
    fi

text=$(cat <<EOF
$from:
$content
EOF
)

# 配置微信API
sendkey=<SendKey>

# 把短信发送到微信
curl -d "title=$from&desp=$content" -X POST https://sctapi.ftqq.com/$sendkey.send
fi

输入以下内容给 pushsms.sh 授权,这一步很重要,如果没执行一下命令,可能会导致无法发送邮件

chmod +x /root/pushsms.sh

在 OpenWRT 软件包里安装 smstools3,输入以下命令,配置 smstool3

vim /etc/smsd.conf

填写以下内容

#
# Description: Main configuration file for the smsd
#

devices = GSM1
incoming = /var/spool/sms/incoming
outgoing = /var/spool/sms/outgoing
checked = /var/spool/sms/checked
failed = /var/spool/sms/failed
sent = /var/spool/sms/sent
receive_before_send = no
autosplit = 3

# 设置接收短信的编码格式为 utf8,不然会出现乱码
incoming_utf8 = yes
loglevel = notice
#delaytime = 0

# 这里链接刚才编写的脚本,意思是如果有新的短信就触发该脚本
eventhandler = /root/pushsms.sh

[GSM1]
# ME模式(将短信保存在上网卡中,更快,不支持的话请使用下面的 SM模式)
init = AT+CPMS="ME","ME","ME"
# SM模式(将短信保存在 USIM 卡中)
# init = AT+CPMS="SM","SM","SM"

# 这里要修改成你对应的端口号
device = /dev/ttyUSB2
incoming = yes
#pin = 0000

# 波特率一般都是115200,如果不对修改成你自己的
baudrate = 115200
signal_quality_ber_ignore = yes
detect_unexpected_input = no
memory_start = 0

重启 smsd 进程

/etc/init.d/smstools3 restart

最后用自己的手机给软路由的手机号发送短信,就可以微信里收到短信了。

参考文献

[1] 设置微信接受消息 API.
[2] 把接收的短信转换为文本.
[3] 解决乱码问题

0 评论
内联反馈
查看所有评论

网站运营需要成本,可以给我充电吗?

相似文章

Seraphinite AcceleratorOptimized by Seraphinite Accelerator
Turns on site high speed to be attractive for people and search engines.