Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Receive SMS in n8n and Auto-Reply From Your Own Number

2026年10月16日に「Dev.to」が公開したITニュース「Receive SMS in n8n and Auto-Reply From Your Own Number」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

n8n、SimGateアプリ、Androidスマホを連携させ、SMS自動返信ワークフローを構築する方法を解説。特定のキーワードを含むSMSに自動で返信し、顧客サポートや予約確認などに応用できる。システムエンジニア初心者でも簡単に始められる仕組みだ。

ITニュース解説

この記事では、n8nという強力な自動化ツールとSimGateというAndroidアプリを組み合わせることで、Androidスマートフォンで受信したSMSメッセージに自動で返信するシステムを構築する方法について解説する。システムエンジニアを目指す初心者にとって、このような自動化システムは、外部サービス連携、データ処理、条件分岐といったプログラミングの基本的な考え方を実践的に学ぶ良い機会となるだろう。

具体的には、ユーザーがあなたのスマートフォンに「HELP」というキーワードを含むSMSを送信すると、スマートフォンがメッセージを受信し、SimGateアプリを通じてその情報がn8nのワークフローに送られる。n8nはそのメッセージの内容を確認し、「HELP」というキーワードが検出されれば、同じスマートフォンから自動で応答メッセージを送信するという一連の流れを構築する。この仕組みは、サポートリクエストへの自動応答、予約確認、通知への返信など、様々な業務の自動化に応用できる。

このシステムを構築するために必要なものはいくつかある。まず、SMSの送受信が可能なアクティブなSIMカードを搭載したAndroidスマートフォンが一つ必要である。これが「ゲートウェイフォン」となり、実際のメッセージの送受信を担当する。次に、そのAndroidスマートフォンにSimGateアプリをインストールし、アカウントに接続しておく必要がある。SimGateは、スマートフォンのSMS機能をn8nと連携させるための橋渡し役を担う。そして、自動化ロジックを管理するn8nのインスタンスが必要となる。これはn8n Cloudのようなホスト型サービスを利用することも、自身でサーバーにインストールして運用する「セルフホスト型」を選択することも可能である。最後に、構築したシステムが正しく機能するかをテストするために、別の電話(あなたが管理できるもの)が必要となる。このテスト用電話からゲートウェイフォンにメッセージを送信し、自動返信が届くかを確認する。ゲートウェイフォンは常に電源が入っており、オンライン状態を保ち、SimGateアプリにSMSの権限が付与されていることを確認することが重要である。

n8nとSimGateの連携は、まずn8nにSimGateの統合機能をインストールし、APIキーを設定することから始める。n8nのワークフロー編集画面でSimGateを検索し、インストールする。この時、「SimGate Trigger」ノードはSMSの受信イベントを捕捉するために、「SimGate」ノードはSMSを送信するために使用する。SimGateのダッシュボードでAPIキーを作成し、n8nにSimGateのクレデンシャルとして登録する。このクレデンシャルは、n8nがSimGateサービスと安全に通信するために必要な認証情報となる。Base URLは通常SimGateのAPIエンドポイントを指定し、Webhook Signing Secretは自動登録されるため空のままにしておく。

次に、提供されているSMS自動返信ワークフローのJSONファイルをダウンロードし、n8nにインポートする。インポートされたワークフローは、「Receive SMS」→「Prepare HELP reply」→「Send reply」の3つのノードで構成されている。これらのノードをアクティブにする前に、いくつか設定が必要である。「Receive SMS」ノードには、先ほど作成したSimGateのクレデンシャルを選択する。「Prepare HELP reply」ノードでは、コード内のプレースホルダーを、あなたのテスト用電話番号(国際形式で)と、SimGateダッシュボードで確認できるゲートウェイフォンのデバイスIDに置き換える。「Send reply」ノードにも同様にSimGateのクレデンシャルを選択する。ワークフローをアクティブ化すると、「Receive SMS」ノードがSimGateサービスにWebhookを登録し、SMS受信イベントを待ち受ける状態になる。

SimGate TriggerがSMSを受信すると、そのイベントはJSON形式のデータとしてn8nのワークフローに渡される。このデータには、イベントを一意に識別するID、イベントタイプ(sms.received)、作成日時などの情報に加え、実際のSMSの詳細情報が「data」オブジェクト内に格納されている。この「data」オブジェクトには、メッセージを受信したデバイスのID(deviceId)、メッセージの送信元電話番号(from)、メッセージの本文(body)、メッセージの受信日時(receivedAt)などが含まれる。この中で、返信処理に特に重要なのは、どの番号に返信するかを示す「data.from」と、メッセージ内容を判断する「data.body」、そしてどのデバイスから返信するかを示す「data.deviceId」である。これらの情報を使って、後続の処理で適切な返信が行われる。

「Prepare HELP reply」というCodeノードは、受信したSMSデータを処理し、返信が必要かどうかを判断する役割を担う。このノードは、Codeノードのスクリプトによって、事前に設定された許可された送信元電話番号とデバイスIDからのメッセージのみを処理し、それ以外のメッセージは無視するようにフィルタリングする。また、メッセージの本文が「HELP」(大文字・小文字を区別せず、「HELP」と完全に一致する場合のみ)であるかをチェックする。例えば、「Hello」や「I need help」のような部分的な一致では処理を行わない。これらの条件を全て満たした場合にのみ、返信に必要な情報(イベントID、デバイスID、送信元電話番号、返信メッセージ本文)を含む新しいデータアイテムを生成し、次のノードに渡す。条件を満たさない場合は空の配列を返し、後続の「Send reply」ノードに何も送らないことで、自動返信を停止させる。このCodeノード内で、実際に返信するメッセージのテキストを定義する。

最後に、「Send reply」ノードが、Codeノードで準備された情報に基づいてSMSを送信する。このノードでは、メッセージのリソースタイプと操作を「Message」と「Send」に設定する。そして、「Device」フィールドにはCodeノードから渡された「deviceId」を、「To」フィールドには「phoneNumber」を、「Message」フィールドには「message」の値をそれぞれ式として設定する。これにより、SMSを受信したのと同じゲートウェイフォンから、メッセージを送信したユーザーに、指定された返信メッセージが送信される。テストモードで送信する場合でも実際のSMSが送られるため、テスト時は自身のテスト用電話番号を使用することが重要である。ゲートウェイフォンに複数のSIMカードが挿入されている場合、どのSIMからメッセージが送信されるかはスマートフォンの設定に依存するため、事前に確認しておく必要がある。

ワークフローの設定が完了したら、保存して公開またはアクティブ化し、実際の動作をテストする。テスト用電話からゲートウェイフォンのSIM番号に「HELP」と送信し、n8nの実行履歴を確認する。SimGate Triggerがイベントを捕捉し、Codeノードが正しく処理し、SimGateノードがメッセージIDを返したら、テスト用電話に自動返信が届いていることを確認する。次に、「Hello」のようなキーワードではないメッセージを送信し、今度はCodeノードで処理が停止され、返信が送られないことを確認する。

この自動返信システムを本番運用する前に、いくつかの重要な考慮事項がある。まず、同じイベントが二重に処理されることを防ぐために、重複排除の仕組みを導入することが推奨される。これは「Remove Duplicates」ノードを使用して、過去に処理されたイベントIDを持つアイテムを除外することで実現できる。次に、同じ送信者から頻繁にメッセージが送られてきた場合に、過剰な返信を防ぐため、返信のクールダウン期間を設定することも有効である。さらに、自動返信が自動応答同士の無限ループを引き起こさないよう、既知の自動送信者や自身のゲートウェイ番号からのメッセージは無視するように設定することも検討すべきである。また、SMS購読の解除(「STOP」メッセージなど)を処理するための特別なロジックを組み込み、ユーザーのオプトアウト設定を管理することも重要である。最後に、ワークフロー内のすべてのステップが成功したわけではない可能性を考慮し、失敗したn8nの実行を監視し、必要に応じて手動または自動で未完了の作業を回復できるような仕組みを用意しておく必要がある。

トラブルシューティングとしては、n8nの実行が全く開始されない場合、ワークフローの有効化状況、スマートフォンの接続、SMS権限、Webhook URLの公開状態を確認する。スマートフォンにはメッセージが表示されているのにn8nにSMSイベントが届かない場合、送信されたメッセージが通常のSMSであるか(RCSやMMSではないか)を確認する。トリガーは実行されるが返信が送られない場合、Codeノード内のプレースホルダーが正しく設定されているか、送信元電話番号とデバイスIDが正確か、キーワードが完全に一致しているかを再確認する。Webhookの競合が発生した場合、他のサービスがSimGateアカウントのWebhookを使用していないか確認が必要である。送信は成功したと表示されるのにSMSが届かない場合、SimGateのメッセージステータス、ゲートウェイの接続状況、SimGateのクォータ、そしてSIM自体が通常のSMSを送信できる状態にあるかを確認する。

この基本的なワークフローが機能すれば、この「HELP」処理部分を、予約情報の検索、サポートチケットの作成、確認応答の記録など、あなたのビジネス要件に合わせた様々な自動化ロジックに置き換えることができる。例えば、予約確認システムであれば、ユーザーが予約参照番号と一緒に「YES」と送信することで、予約を確定させるようなワークフローを構築することが可能である。

関連コンテンツ

関連IT用語