远程控制

远程控制功能允许你从另一部手机发送一条短信到你的手机,让 SmsForwarder 替你执行操作 —— 代替你回复短信、开关转发、查询应用状态、查询手机是否在线、重新与 Google Play 同步订阅状态,或(在拥有 Advanced 订阅时)以自然语言下达指令。

只有你明确加入到允许名单的手机号才能下发指令。没有共用密码 —— 发送方的手机号本身就是身份凭证。

开始之前

  1. 在应用设置中打开 远程控制
  2. 打开 远程控制 总开关。
  3. 至少添加一个 允许的手机号,使用完整的国际格式(例如 +8613800138000)。
  4. 选择你想以哪种方式接收指令执行结果 —— 详见下文 接收回执
  5. 如果计划使用 #REPLY,或者希望以短信方式回执给发送方,请确保已授予 发送短信 权限。

指令的写法

每条指令都是从允许名单中的号码发往你手机的一条普通短信。第一行非空内容必须是指令关键字(以 # 开头)。需要附加信息的指令,每个值各占一行。

指令本身 不会 被作为普通短信转发出去 —— 它会被应用识别并消化掉。

#REPLY —— 替你发送一条短信回复

当你不在手机旁,但需要让你的手机替你给某人发短信时使用。

格式:

#REPLY
<对方手机号>
<回复正文>

指定 SIM 卡 (可选,适用于双卡手机 —— 用于指定使用哪张 SIM 卡发送):

#REPLY
#<本机 SIM 手机号>
<对方手机号>
<回复正文>

SIM 卡指示行以 # 开头,按号码末 8 位匹配。单卡手机或想使用系统默认卡时,直接省略此行。

示例:

#REPLY
+8613800138000
正在赶来,大约 10 分钟到。
#REPLY
#15557654321
+14155550123
用第二张卡发送这条消息。

注意:

  • 接收方看到的发送号码是你手机的号码,而不是原始指令发送方的号码。
  • 需要 发送短信 权限。如果该权限被拒绝或撤回,此指令将无法执行。
  • 回复正文可以是多行。

#CTRL —— 开关规则、通道或总开关

无需触碰手机即可切换某条转发规则、某个发送通道,或某个总开关的状态。

格式:

#CTRL
<目标>
<名称 或 范围>
<ON 或 OFF>
  • 目标 为以下三者之一:RULECHANNELFORWARDING(不区分大小写)。
  • 名称 或 范围 取决于目标:
    • 当目标为 RULE 时 —— 应用中显示的规则名称(区分大小写,且必须唯一)。
    • 当目标为 CHANNEL 时 —— 应用中显示的通道名称(区分大小写,且必须唯一)。
    • 当目标为 FORWARDING 时 —— 取以下之一:SMSCALLNOTIFICATION(或 NOTIFY)、ALL
  • ON / OFF 也可写作 1 / 0TRUE / FALSE,或 YES / NO

示例:

打开某条特定规则:

#CTRL
RULE
工资到账提醒
ON

关闭短信转发总开关:

#CTRL
FORWARDING
SMS
OFF

关闭某个发送通道:

#CTRL
CHANNEL
我的 Telegram
OFF

一次性关闭全部(短信、电话、通知):

#CTRL
FORWARDING
ALL
OFF

注意:

  • 即使短信转发总开关处于 关闭 状态,本指令依然有效 —— 因此可以用它在远程重新打开转发。
  • 规则和通道名称必须唯一。如果存在两条同名规则,指令会被拒绝,以避免误操作。
  • 规则和通道名称按精确匹配,包括大小写和空格。

#STATUS —— 查看当前哪些功能已开启

只读查询。返回各项总开关的状态,以及当前已启用的全部规则和通道名称。

格式:

#STATUS

回执示例:

[Remote] Status
Forwarding · SMS on · Call off · Notification off
Rules (2): 工资到账提醒, 验证码
Channels (1): 我的 Telegram

回执长度可能会超过单条短信限制,需根据规则与通道数量分多条发送,运营商会按条计费。

#PING —— 检查手机是否在线

只读查询。返回手机当前状态的快照 —— 当你只想知道手机是否在线、是否仍在网、是否快没电时使用。

格式:

#PING

回执示例:

[Remote] Pixel 7 · 2026-05-01 14:35
Battery 73% · charging
Power saver: off
Network: Wi-Fi · internet OK

当手机使用蜂窝数据时,回执还会包含网络制式、运营商,以及(Android 10 及以上)0–4 级的信号强度:

[Remote] OnePlus 9 · 2026-05-01 14:35
Battery 45% · on battery
Power saver: on
Network: Cellular · internet OK
Mobile: 5G · 中国移动
Signal: 3/4

注意:

  • 在双卡手机上,信号强度反映的是数据 SIM 卡,可能并不是接收本指令的那张 SIM 卡。
  • 无论转发总开关是否打开,#PING 都会执行。

#HELP —— 获取本文档链接

只读查询。返回这份在线命令文档的链接。当你想把文档发给别人,或者一时记不清某条命令的具体格式想去查阅时使用。

格式:

#HELP

回执示例:

[远程] 命令文档:https://smsforward.zobubo.com/Remote-Control-zh/

返回的链接会按你手机上 App 当前的语言匹配 —— 默认英文,中文界面会返回中文版。无论转发总开关是否打开,#HELP 都会执行。

#REFRESH —— 重新与 Google Play 同步订阅状态

只读查询。让本机立即向 Google Play 查询当前 Google 账号下的有效订阅,并用结果改写本地订阅状态。

当你在另一部手机上重新订阅(或刚刚完成购买)后,如果希望本机立刻拿到新的订阅权益、不必等到每天一次的后台校验时使用。

格式:

#REFRESH

回执示例:

[远程] 订阅已刷新:月度订阅生效中
[远程] 订阅已刷新:年度订阅生效中
[远程] 刷新完成:当前 Google 账号下没有有效订阅
[远程] 刷新失败:无法连接 Google Play,请检查网络后重试

注意:

  • 本机需要可用网络与正常的 Google Play 连接。任一不可用时,指令会回执失败,且本地订阅状态保持不变。
  • 查询使用本机当前登录的 Google 账号。请确认该账号正是持有订阅的账号。
  • 即使本机订阅 已经失效,#REFRESH 也会照常执行 —— 这正是它要解决的恢复场景。无论转发总开关是否打开,本指令都会执行。
  • 此操作幂等:重复发送 #REFRESH 不会产生新的购买或退订,仅是重新读取 Google Play 已知的状态。

#AI —— 以自然语言下达指令

当你想用日常语言告诉手机要做什么、而不是写规范化指令时使用。SmsForwarder 会把你的话交给你配置好的云端 AI 服务商,让它转写为已有的某条结构化指令,然后运行那条指令 —— 仅当转写结果仍然落在受支持的关键字白名单里时才会执行。

格式:

#AI
<任意语言的指令文字>

示例:

#AI
回复 +14155550123,告诉他/她我大约 10 分钟到
#AI
先把所有转发关掉
#AI
现在手机的电量和信号怎么样?

前置条件:

  • 本机 Google 账号下持有 Advanced 订阅。
  • 已打开 AI 总开关,并在 设置 → AI 中配置好任一云端通路 —— 既可使用内置云端(Advanced 订阅默认,无需 API Key),也可选择自带密钥(BYOK)的 Gemini、Claude 或 OpenAI 并填入可用的 API Key。
  • 已在 远程控制 页打开 自然语言远程指令 开关。

任一前置条件不满足时,本指令会被拒绝并附简短原因。

注意:

  • #AI 始终走云端。SmsForwarder 的 AI 处理按设计就是云端唯一。
  • AI 转写后的内容会再次过一次和 #REPLY / #CTRL / #STATUS / #PING / #HELP / #REFRESH 相同的关键字白名单。任何不在白名单内的输出都会被丢弃 —— 不能借 #AI 执行新的或任意指令。
  • 转写后的结构化指令 不会 当作新短信再次转发;它会像你亲手发出该结构化指令一样被执行。原始 #AI 文本与转写后的结构化指令会一并写入转发历史的详情面板,方便事后审计。
  • 如果云端服务商不可达、或返回内容无法解析为受支持的指令,回执会说明该原因,不会执行任何动作。

接收回执

每条指令执行后都会产生一条简短的结果消息。你可以通过下列任意一种或两种方式接收结果,在 远程控制 中进行配置:

  • 以短信回复发送方。 结果以普通短信形式回复给下发指令的那个号码。需要 发送短信 权限。如果该权限被撤回,此选项会被自动关闭。
  • 推送到发送通道。 结果通过你已有的发送通道(Telegram、邮箱、Webhook 等)进行推送。最多可以勾选 10 个通道。被禁用或未配置的通道会被跳过。

两种方式相互独立,你可以只启用其中一种、两者皆启用,或两者都不启用(此时指令仍会执行,但你不会收到任何回执)。

常见错误

如果指令格式不正确,你会收到类似这样的回执:

[Remote] Command rejected: <原因>

常见原因:

  • missing recipient —— #REPLY 没有提供对方手机号。
  • missing reply content —— #REPLY 没有提供回复正文。
  • missing target —— #CTRL 第二行未指定 RULECHANNELFORWARDING
  • unknown target —— #CTRL 第二行不是上述三个有效值之一。
  • missing name —— #CTRL RULE#CTRL CHANNEL 没有提供名称。
  • missing ON / OFF —— 开关行为空。
  • invalid toggle —— 开关行不是被识别的取值。
  • invalid scope —— #CTRL FORWARDING 后接的不是 SMSCALLNOTIFICATION / NOTIFYALL
  • No rule / channel named "X" —— 名称无法匹配任何规则或通道。
  • More than one rule / channel named "X" —— 存在重名,请先在应用中重命名其中一个。

须知事项

  • 来自 不在允许名单 中的号码所发送的指令会被静默忽略。
  • 允许名单按发送方手机号的精确格式匹配。建议按运营商投递时呈现的格式录入(以 + 开头的国际格式最为可靠)。
  • 形如指令格式的短信会被识别并消化,因此 不会 在转发历史中以"已转发"形式出现。
  • 部分回执方式(如短信回复)会与你发送的其他短信一样,占用运营商的短信额度。

如指令未按预期工作,请参考 技术支持 页面。