🤖HermesBlog
Hermes Messaging Platforms · パート 88/9/2026

SMS — Command AI by Text

SMS — Command AI by Text — easy-to-understand guide based on official docs

messaging-sms

SMS — テキストでAIを操る

スマホが登場する前、誰かに連絡する最速の手段はテキストメッセージでしたよね?あの古典的なチャネルは今も健在です。そして今や、AIアシスタントと会話するための本格的な手段になっています。

HermesはTwilioを通じてSMSに接続できるようになりました。つまり、電話番号さえあれば誰でもあなたのボットにテキストを送信して、AIによる応答を受け取れます。アプリのインストールも、QRコードも、学習コストも不要。ただの昔ながらのテキストメッセージです。

このアップデートの新機能

SMSゲートウェイは大幅にアップグレードされました。変更点は以下の通りです。

  • SMS_WEBHOOK_URLが必須になりました — HermesはTwilioのウェブフック署名を検証して、なりすましを防ぎます。これがないとゲートウェイは起動しません。
  • 新しい環境変数SMS_WEBHOOK_HOSTSMS_WEBHOOK_PORTSMS_INSECURE_NO_SIGNATURESMS_ALLOW_ALL_USERSで、より細かい制御が可能になりました。
  • セキュリティのデフォルト設定が強化 — ゲートウェイはデフォルトですべてのユーザーを拒否します。電話番号を明示的に許可リストに追加する必要があります。
  • メッセージ分割の改善 — 長い応答は、単語の途中で切れるのではなく、自然な区切り(改行、次にスペース)で分割されるようになりました。

はじめに

まず、TwilioアカウントとSMS機能付きの電話番号が必要です。Twilioは無料トライアルを提供しているので、お金をかけずにすべてをテストできます。

また、公開アクセス可能なサーバーも必要です。誰かがあなたの番号にテキストを送信すると、Twilioはあなたのサーバーにウェブフックを送信します。Hermesをローカルで実行している場合は、cloudflaredngrokなどのツールでlocalhostをインターネットに公開できます。

SMS拡張機能をインストールするには、次のコマンドを実行します。

cd ~/.hermes/hermes-agent && uv pip install -e ".[sms]"

ステップ1: Twilioの認証情報を取得する

Twilioコンソールにアクセスし、ダッシュボードからAccount SIDAuth Tokenをコピーし、電話番号をE.164形式(例:+15551234567)でメモします。

ステップ2: Hermesを設定する

最も簡単な方法は、対話式ウィザードを使うことです。

hermes gateway setup

SMS (Twilio) を選択し、プロンプトに従います。

手動設定がお好みですか?~/.hermes/.envに以下を追加します。

TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+15551234567

# セキュリティ: 特定の電話番号に制限(推奨)
SMS_ALLOWED_USERS=+15559876543,+15551112222

# オプション: cronジョブ配信用のホームチャネルを設定
SMS_HOME_CHANNEL=+15559876543

ステップ3: Twilioウェブフックを設定する

Twilioコンソールで、Phone Numbers → Manage → Active Numbersに移動し、自分の番号をクリックして、Messaging → A MESSAGE COMES INの下で、ウェブフックを次のように設定します。

https://your-server:8080/webhooks/twilio

HTTPメソッドはPOSTに設定します。

重要: SMS_WEBHOOK_URLをTwilioで設定したものとまったく同じURLに設定してください。これは署名検証に必要です。

SMS_WEBHOOK_URL=https://your-server:8080/webhooks/twilio

ウェブフックのポートはデフォルトで8080ですが、SMS_WEBHOOK_PORTで上書きできます。

ステップ4: ゲートウェイを起動する

hermes gateway

次のような表示が出るはずです。

[sms] Twilio webhook server listening on 127.0.0.1:8080, from: +1555***4567

あとはTwilioの番号にテキストを送信するだけです。HermesがSMSで応答します。

SMSでの動作の違い

SMSはプレーンテキストの媒体なので、Hermesはそれに合わせて動作します。

  • Markdownなし — SMSではリテラル文字として表示されるため、自動的に削除されます
  • 1600文字制限 — 長い応答は自然な区切りで複数のメッセージに分割されます
  • エコー防止 — 自分のTwilio番号からのメッセージは、ループを防ぐために無視されます
  • プライバシー — 電話番号はログで伏せ字になります

セキュリティについて

Hermesは、X-Twilio-Signatureヘッダー(HMAC-SHA1)をチェックして、インバウンドウェブフックが本当にTwilioから来ていることを検証します。これにより、攻撃者が偽のメッセージを注入するのを防ぎます。

ゲートウェイはデフォルトですべてのユーザーを拒否します。 許可リストを設定する必要があります。

SMS_ALLOWED_USERS=+15559876543,+15551112222

または、無謀なことをしたい場合(やめてください):

SMS_ALLOW_ALL_USERS=true

公開URLがないローカル開発では、署名検証を無効にできます。

SMS_INSECURE_NO_SIGNATURE=true

ただし、これはローカル開発専用です。本番環境では絶対に使わないでください。

最後の警告

SMSには組み込みの暗号化がありません。機密性の高い操作には使用しないでください。機密情報を扱う場合は、SignalまたはTelegramを使用してください。

トラブルシューティング

メッセージが届かない場合は、以下を確認してください。

  1. ウェブフックURLが正しく、公開アクセス可能であること
  2. TWILIO_ACCOUNT_SIDTWILIO_AUTH_TOKENが正しいこと
  3. Twilioコンソール → Monitor → Logs → Messagingで配信エラーを確認
  4. 電話番号がSMS_ALLOWED_USERSに含まれていること

以上です!ボットにテキストを送って、答えを受け取りましょう。簡単でしょ?


📖 公式ドキュメント

この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/messaging/sms