MacroDroid 短信转发三种方案对比

使用MacroDroid实现短信自动转发功能

家里如果有一部专门用来接收验证码的备用机,最常遇到的麻烦就是:短信到了那部手机上,人却在用另一台。要解决这个问题,不用 root、配置也不复杂的工具是 MacroDroid。下面把它的三种短信转发方式整理一下——内置转发、Telegram Bot、ntfy 推送——各自的优缺点和适用场景,方便按自己的习惯挑选。

MacroDroid 是什么

详细介绍参见:使用 MacroDroid 实现自动解锁手机的操作教程

MacroDroid 是一款 Android 自动化工具,跟 Tasker 是同一类东西,但配置界面更直观,上手门槛低不少。它能监听手机上的各种事件——收到短信、网络状态变化、到了固定时间等等——一旦条件满足就执行设定好的动作。「收到短信就转发」这种流程,配置起来只需要几分钟。免费版就足够用了,不用买高级版。

https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid

在 Google Play 下载 MacroDroid Android 自动化 App

基本流程:两步走

整套自动化只需要两步,没什么复杂的机制:

  1. 触发器:收到短信(SMS Received)
  2. 动作:把短信内容转发到指定的平台

MacroDroid 短信自动转发宏的触发器与动作设置界面截图

转发动作本身支持很多种方式,这里挑三种最常用的来说。

方案一:MacroDroid 自带的转发功能

这是最省事的方案,不需要任何外部配置。MacroDroid 的动作列表里直接就有这几个选项:

  • 发送短信:转发到另一个号码,注意这个会产生短信费用
  • 发送电子邮件:授权 Gmail 之后就能用,实测稳定
  • WhatsApp:转发到 WhatsApp 联系人(这个我没实测过)

MacroDroid 内置短信转发动作选项:短信、电子邮件、WhatsApp

如果只是想把短信转到邮箱,又不想折腾 Bot 或者自己搭服务,这个方案最合适——授权一次 Gmail,剩下的就不用管了。

方案二:用 Telegram Bot 转发

如果平时就常用 Telegram,这个方案体验会很顺:短信直接出现在 Telegram 对话里,实时推送,不用额外装别的 App。比较适合 Telegram 的活跃用户,或者只想接收某些号码发来的验证码这类场景。

有一点要先说清楚:这个方案是把短信内容塞进 URL 参数里传过去的,不支持换行,长一点的短信会全部挤在一行显示。如果在意格式,建议直接跳到方案三。

配置步骤

第一步:申请一个 Telegram Bot,拿到 Token 和 chat_id。具体方法可以参考:在甲骨文云搭建 Telegram RSS 机器人教程

第二步:在浏览器里测试下面这个 URL,确认 Bot 能正常收到消息:

https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=测试消息

各参数含义:

  • <TOKEN>:申请 Bot 时拿到的那串长字符
  • <CHAT_ID>:数字格式的 chat id
  • text=:要发送的消息内容

第三步:在 MacroDroid 里添加「HTTP 请求」这个动作。

MacroDroid 动作列表中选择 HTTP 请求选项的界面截图

在 HTTP 请求的配置页面填入对应内容:

MacroDroid HTTP 请求配置界面,填写 Telegram Bot API 地址和短信变量

URL 的格式如下,把 {sms_message} 作为短信正文变量插进去:

https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text={sms_message}

点 URL 输入框旁边的「…」按钮,还能插入别的变量,比如 {sms_sender_number}(发信号码)、{time}(时间)等。

实际效果

MacroDroid 转发短信到 Telegram Bot 的实际效果截图,显示短信内容但不支持换行

效果如上图,内容完整、推送及时,唯一的限制就是换行不生效,所有内容会连在一起显示成一行。

方案三:通过 ntfy 推送转发(格式最完整)

https://tzang.net/ios-sms-forward-2-android-ntfy/

ntfy 自托管推送通知服务 Logo 与简介

ntfy 是一个开源的推送通知服务,支持自托管,在任何设备上订阅一个主题就能接收推送。跟 Telegram 方案比,ntfy 的优势是支持换行,可以把发信号码、时间、短信正文分行排好,格式更整齐。比较适合不用 Telegram、或者本身就有自托管需求、希望数据不经过第三方服务器的人,也适合需要从多个号码接收短信、并且关注完整信息(时间、发信人)的场景。

配置步骤

第一步:准备好 ntfy 服务(可以直接用官方的 ntfy.sh,也可以参考下面的教程自己搭)。

参考:使用自搭建的 ntfy 同步 iOS 的短信到 Android

第二步:在 MacroDroid 里添加「HTTP 请求」动作,分两部分配置。

URL 部分:填入 ntfy 订阅主题的完整地址。如果你的 ntfy 开启了 Basic Auth 认证,这里也要填上授权信息。

MacroDroid HTTP 请求设置 ntfy 订阅主题 URL 与 Basic Auth 基本授权配置截图

正文(Body)部分:切到正文标签页,这里可以自由定义转发消息的格式,支持换行,可以插入 {sms_sender_number}{sms_message}{time} 等变量。

MacroDroid ntfy HTTP 请求正文配置,插入短信变量并支持换行格式设置截图

实际效果

MacroDroid 通过 ntfy 转发短信的实际推送效果截图,显示发信人、时间、正文并支持换行

效果很完整:发信号码、接收时间、短信正文分行清楚显示,格式还能自己随意定义,是三种方案里信息最丰富的一种。

三种方案怎么选

方案配置难度支持换行适合场景
① 内置转发(邮箱)最简单支持只需转到邮箱,不想额外配置
② Telegram Bot较简单不支持Telegram 用户,仅需接收验证码
③ ntfy 推送需要自托管支持需要完整格式、多号码、自托管

整理到这里,之前一直在用的旧方案就可以正式退休了。MacroDroid 把短信转发这件事从一个独立 App 整合进了自动化工具里,配合手机上其他的宏一起管理,省心不少。

分享或订阅:
🧡 喜欢我的内容?欢迎点击 订阅 RSS Feed 获取最新文章更新。