须知:
本方案需要手机有 root 权限, 并依赖 Synapse; curl 及 Tasker (MacroDroid 亦可).
向服务器发送请求由 curl 完成, 如果 Tasker 支持 POST 方法 (我还没来得及测试, Tasker 就再也不能试用了, 不过已知 MacroDroid 不支持 POST 但支持 GET) 可以不用 curl.
你可以按自己的需要魔改本方案.
大概流程 (因为 Tasker 无法使用已卸载, 我现在改用 MacroDroid):
手机安装 MacroDroid;
新建一个宏, 触发器选择 "短信来自", 发送者选择 "任何号码";
添加一个局部变量;
添加动作:
a) 动作 1: 添加 Shell 脚本, 发送一个 POST 请求 (由于我使用的是 Synapse, 此处我给出的是 Synapse 允许的请求方式):
curl -H "Content-Type: application/json" -H "Authorization: Bearer <access_token>" -s -X POST -k -d '{"msgtype": "m.text", "body": "短信转发. 发送者: [sms_number]\u000a\u000a[sms_message]"}' "https://example.com:[port]/_matrix/client/r0/rooms/%21room_id:example.com/send/m.room.message"
# 请求需要提供一个账号的访问 token 及目标房间 ID, 建议针对短信转发用途新建一个专用账号.
# [sms_message] 及 [sms_number] 是 MacroDroid 的内置变量, 分别表示短信正文及发送者号码.
# 选中 "将输出保存为字符串变量", 并选择步骤 3 新建的变量.
# 选中 "完成后此案后续动作".
# 这里有个大坑, 如果转发的内容需要换行, 必须使用 "\u000a" 而不是 "\n".
b) 动作 2: 添加 "如果条件", 在其中添加条件: "MacroDroid 特定" -> "MacroDroid 变量", 选择步骤 3 新建的变量. 运算符选择 "不包括", 值填写
{"event_id":
// 用于判断服务器是否返回了 json, 因为 json 的格式固定就没用正则表达式, 反正无脑判断前几个字符就足够了.
c) 动作 2-1: 添加 toast 用于提示短信自动转发失败后自动打开 Element;
d) 动作 2-2: 添加 Shell 脚本:
am start -a "android.intent.action.SEND" --es "android.intent.extra.TEXT" "短信补转发. 发送者: [sms_number]\n\n[sms_message]" -t "text/plain" im.vector.app.debug
# 命令可能需要 root 权限.
e) 动作 3: 继续从 "如果条件" 添加 "else 从句";
f) 动作 3-1: 单击一下 "其他", 此处可以添加一个通知 (或 toast) 用于提示短信自动转发成功;
g) 保存修改.
以上动作的排列顺序:
https://imgur.com/a/y2uqATM
效果:
当收到短信的第一时间会自动转发短信到我自建的 Synapse 服务器 (前提是手机能联网或服务器在线), 其它所有安装了 Element 的终端 (包括备用机; 电脑; 平板电脑等) 都能收到. 灰色为自动发送 (专用账号), 绿色为手动发送 (自己的账号):
https://imgur.com/a/OM9hS9H
https://imgur.com/a/OaM8FXY
缺点:
如果因为各种原因无法与服务器通信, 则自动打开 Element 并选择联系人手动转发收到的短信. 然而这种情况下如果遭遇短信轰炸, 流程上会出现问题. 例如瞬间收到太多短信会导致人工根本忙不过来. 我希望能在没有人工干预的前提下完成发送到 Element, 等联网恢复再由 Element 发送到服务器. 这个目前尚未实现.
1
nolo 2022-02-09 10:11:57 +08:00
推荐绿芽,收到短信自动转发到微信。还可以在微信回复短信。用了好几年挺稳的
|
2
cherbim 2022-02-09 10:14:21 +08:00 via iPhone
tasker 支持 post ,比你这个简单多了,缺点就是应用收费
|
3
Maskeney 2022-02-09 10:17:27 +08:00 1
都用到第三方黑箱软件了,要是我就直接选择 https://github.com/pppscn/SmsForwarder
|
4
huoshen 2022-02-09 10:29:11 +08:00 1
支持这个 https://github.com/pppscn/SmsForwarder, 自用一年多, 因为人在国外手机卡丢了, 所以就补办了一个寄到家里, 然后用旧手机做的短信转发, 配合 bark 到 ios, 而且支持验证码自动复制, 目前来看没丢过任何信息, 非常好用.
|
5
yaoyao1128 2022-02-09 10:33:14 +08:00 via iPhone
如果不担心付费的话 绿芽更方便
短信转发挺容易的,但是国内好多软件奇葩的需要发短信验证……所以我用过的软件几乎没有能做到的 之后绿芽也能转发到自己写的 api 不过按照次数扣费 当然 root 之后可以远程或者 airdroid 也可以…… |
6
V9NN 2022-02-09 12:01:26 +08:00
自己的方案:
类原生系统 + tasker ,自动转发到 Telegram ,目前稳定使用超过 2 年。 |
7
GodD6366 2022-02-09 13:12:26 +08:00
我用的是小转发+webhook ,然后服务器在根据具体内容做二次分发
|
8
wujianxiong 2022-02-09 14:31:37 +08:00
买个多卡宝直接解决所有问题
|
9
efcndi 2022-02-09 14:53:07 +08:00
@wujianxiong #8 这个还真解决不了所有问题。以我个人的情况为例:我办理了副卡给我老爸老妈用,但有时候必须要验证码才能办理业务,老人家年龄大了,根本搞不懂这些,所以也排除了打电话问验证码的方法。目前找到的相对可行的方法,就是把他们手机上的短信都转发到我的邮箱中,我可以在邮箱中查看。
|
10
nathanw 2022-02-09 19:25:09 +08:00 via iPhone
ifttt 了解一下
|
11
mokeduo 2022-02-09 21:17:52 +08:00 via Android
macrodroid 相比 tasker 要更易使用些, 是不错的选择: 更少的应用调用, 更简洁的操作方式。
既然用到了 shell 脚本, 可以考虑一下 Termux 下的自动脚本: 调用 api 来在单一应用内完成操作, 更多正则过滤可以设立等级日志。 ifttt 这种怕是国内不合用。 |
12
pomelo2y 2022-02-10 09:19:52 +08:00
automate 免费的能做到短信收发,
写好规则,如果有网络就转发到邮箱,没网络就转发到短信, 远程发短信可以自定义规则来分割目的号码和短信内容 上述功能稳定使用 1 年多,现在直接放弃手机了,自己搭建 voip 网关,远程短信收发,远程接打电话都 OK |
13
paradox8599 2022-02-12 14:18:45 +08:00 via Android
我用的 push bullet ,免费版功能就够用了
|
14
mrjnamei 2022-07-10 16:00:57 +08:00
云短信验证码在线接收:
无敌云短信地址: https://www.clearcode.cn 有信云短信: https://smswudi.com 极速云短信: https://www.k8s1.com 云际云短信: https://yunjisms.xyz 可以在线接收验证码,接码平台,通过虚拟手机号获取验证码 |