サブ機を SMS の認証コード受信専用にしていると、よくある悩みが「届くのはそのサブ機なのに、自分が使っているのは別の端末」ということです。これを解決するのに、root 不要で設定も難しくないツールが MacroDroid です。今回は SMS 転送の3つの方法——標準転送機能、Telegram Bot、ntfy 通知——をそれぞれの特徴と向いている場面とともに整理してみます。
MacroDroid とは
詳しくはこちら:MacroDroid で自動ロック解除を実現する設定方法
MacroDroid は Android 向けの自動化アプリで、Tasker と同系統のツールですが、設定画面がより直感的で扱いやすくなっています。SMS 受信やネットワークの変化、時刻指定などさまざまなイベントを監視し、条件が満たされると指定した動作を実行してくれます。「SMS を受信したら転送する」という流れも、数分の設定で組めます。無料版で十分機能するので、有料版を買う必要はありません。
https://play.google.com/store/apps/details?id=com.arlosoft.macrodroid
基本の流れ:たった2ステップ
自動化全体はとても単純な仕組みで、ステップは2つだけです。
- トリガー:SMS を受信(SMS Received)
- アクション:SMS の内容を指定先に転送
転送アクションには多くの方法が用意されていますが、ここでは実用的な3つに絞って紹介します。
方法①:MacroDroid 標準の転送機能
外部の設定を一切必要としない、もっとも手軽な方法です。MacroDroid のアクション一覧に、次の3つの選択肢が用意されています。
- SMS 送信:別の番号へ転送します。通話料・SMS料金が発生する点に注意してください
- メール送信:Gmail アカウントを連携すればすぐ使えます。動作も安定しています
- WhatsApp:WhatsApp の連絡先に転送できます(未検証)
メールに転送するだけでよく、Bot やセルフホストの設定を増やしたくない人には、この方法が一番手間がかかりません。Gmail を連携すればそのまま使えます。
方法②:Telegram Bot 経由で転送
普段から Telegram を使っているなら、この方法は体験が良いはずです。SMS がそのまま Telegram のトーク画面に届き、リアルタイムでプッシュされるので、別のアプリを入れる必要がありません。Telegram のアクティブユーザーや、特定の番号からの認証コードだけ受け取りたい人に向いています。
先に伝えておきたい点があります。この方法は SMS の内容を URL パラメータに乗せて送るため、改行に対応していません。長い SMS は一行にまとめて表示されます。改行が必要な場合は方法③を選んでください。
設定手順
ステップ1:Telegram Bot を作成し、Token と chat_id を取得します。詳しい方法はOracle Cloud で Telegram RSS Bot を構築する手順を参照してください。
ステップ2:ブラウザで以下の URL を試し、Bot が正常にメッセージを受信できるか確認します。
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text=テストメッセージ
各パラメータの意味は次の通りです。
<TOKEN>:Bot 作成時に取得した長い文字列<CHAT_ID>:数字形式の chat idtext=:送信するメッセージ内容
ステップ3:MacroDroid に「HTTP リクエスト」アクションを追加します。
HTTP リクエストの設定画面に、以下の内容を入力します。
URL の形式は以下の通りで、{sms_message} を SMS 本文の変数として挿入します。
https://api.telegram.org/bot<TOKEN>/sendMessage?chat_id=<CHAT_ID>&text={sms_message}URL 入力欄の横にある「…」ボタンを押すと、{sms_sender_number}(送信元番号)や {time}(時刻)など、他の変数も挿入できます。
転送結果
結果は上の画像の通りです。内容は欠けることなくリアルタイムで届きますが、唯一の制約として改行が反映されず、すべて一行につながって表示されます。
方法③:ntfy 通知で転送(フォーマットが一番充実)
https://tzang.net/ios-sms-forward-2-android-ntfy/
ntfy はオープンソースのプッシュ通知サービスで、セルフホストにも対応しています。任意のデバイスでトピックを購読すれば通知を受け取れます。Telegram の方法と比べた強みは改行に対応していることで、送信元番号・時刻・本文をそれぞれ別の行に整理して表示できます。Telegram を使っていない人、自分でサーバーを管理したい人、第三者のサーバーを経由させたくない人、複数の番号から SMS を受け取って時刻や送信元まで含めた完全な情報を確認したい人に向いています。
設定手順
ステップ1:ntfy のサービスを用意します(公式の ntfy.sh を使うか、下記の手順を参考にセルフホストしてください)。
参考:セルフホストした ntfy で iOS の SMS を Android に同期する
ステップ2:MacroDroid に「HTTP リクエスト」アクションを追加し、以下の2つの部分を設定します。
URL の設定:ntfy のトピックの完全な URL を入力します。Basic 認証を有効にしている場合は、ここに認証情報も入力します。
本文(Body)の設定:本文タブに切り替えると、転送メッセージのフォーマットを自由に定義できます。改行にも対応しており、{sms_sender_number}、{sms_message}、{time} などの変数を挿入できます。
転送結果
結果は非常に充実しています。送信元番号、受信時刻、本文がそれぞれの行にきれいに分かれて表示され、フォーマットも自由に組み立てられます。3つの方法の中で、もっとも情報量が多い方式です。
3つの方法、どれを選ぶか
| 方法 | 設定の難易度 | 改行対応 | 向いている場面 |
|---|---|---|---|
| ① 標準転送(メール) | 最も簡単 | 対応 | メールに転送するだけでよく、追加設定をしたくない |
| ② Telegram Bot | やや簡単 | 非対応 | Telegram ユーザー、認証コードの受信だけでよい |
| ③ ntfy 通知 | セルフホストが必要 | 対応 | 完全なフォーマット、複数番号、セルフホストが必要 |
これで、以前から使っていた古い方法は引退ということになります。MacroDroid によって、SMS 転送の設定が独立したアプリから自動化ツールの中に統合され、他のマクロと一緒に管理できるようになり、運用がまとまりやすくなりました。











.png)

