SMS — Command AI by Text
SMS — Command AI by Text — easy-to-understand guide based on official docs
SMS — テキストでAIを操る
スマホが登場する前、誰かに連絡する最速の手段はテキストメッセージでしたよね?あの古典的なチャネルは今も健在です。そして今や、AIアシスタントと会話するための本格的な手段になっています。
HermesはTwilioを通じてSMSに接続できるようになりました。つまり、電話番号さえあれば誰でもあなたのボットにテキストを送信して、AIによる応答を受け取れます。アプリのインストールも、QRコードも、学習コストも不要。ただの昔ながらのテキストメッセージです。
このアップデートの新機能
SMSゲートウェイは大幅にアップグレードされました。変更点は以下の通りです。
SMS_WEBHOOK_URLが必須になりました — HermesはTwilioのウェブフック署名を検証して、なりすましを防ぎます。これがないとゲートウェイは起動しません。- 新しい環境変数 —
SMS_WEBHOOK_HOST、SMS_WEBHOOK_PORT、SMS_INSECURE_NO_SIGNATURE、SMS_ALLOW_ALL_USERSで、より細かい制御が可能になりました。 - セキュリティのデフォルト設定が強化 — ゲートウェイはデフォルトですべてのユーザーを拒否します。電話番号を明示的に許可リストに追加する必要があります。
- メッセージ分割の改善 — 長い応答は、単語の途中で切れるのではなく、自然な区切り(改行、次にスペース)で分割されるようになりました。
はじめに
まず、TwilioアカウントとSMS機能付きの電話番号が必要です。Twilioは無料トライアルを提供しているので、お金をかけずにすべてをテストできます。
また、公開アクセス可能なサーバーも必要です。誰かがあなたの番号にテキストを送信すると、Twilioはあなたのサーバーにウェブフックを送信します。Hermesをローカルで実行している場合は、cloudflaredやngrokなどのツールでlocalhostをインターネットに公開できます。
SMS拡張機能をインストールするには、次のコマンドを実行します。
cd ~/.hermes/hermes-agent && uv pip install -e ".[sms]"
ステップ1: Twilioの認証情報を取得する
Twilioコンソールにアクセスし、ダッシュボードからAccount SIDとAuth 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を使用してください。
トラブルシューティング
メッセージが届かない場合は、以下を確認してください。
- ウェブフックURLが正しく、公開アクセス可能であること
TWILIO_ACCOUNT_SIDとTWILIO_AUTH_TOKENが正しいこと- Twilioコンソール → Monitor → Logs → Messagingで配信エラーを確認
- 電話番号が
SMS_ALLOWED_USERSに含まれていること
以上です!ボットにテキストを送って、答えを受け取りましょう。簡単でしょ?
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/messaging/sms