Pairing
SMS のデフォルト DM ポリシーはペアリングです。
Gateway security
Webhook の公開範囲と送信者アクセス制御を確認します。
Channel troubleshooting
チャネル横断の診断と修復プレイブック。
始める前に
必要なもの:openclaw plugins install @openclaw/smsで公式 SMS Plugin がインストールされていること。- SMS 対応の電話番号を持つ Twilio アカウント、または Twilio Messaging Service。
- Twilio Account SID と Auth Token。
- OpenClaw Gateway に到達する公開 HTTPS URL。
- 送信者ポリシーの選択: 私的利用には
pairing、事前承認済みの電話番号にはallowlist、意図的に公開する SMS アクセスにのみopen。
クイックセットアップ
Create or choose a Twilio sender
Twilio で Phone Numbers > Manage > Active numbers を開き、SMS 対応番号を選択します。次を保存します。
- Account SID、例:
ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Auth Token
- 送信元電話番号、例:
+15551234567
MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。Point Twilio at the Gateway webhook
Twilio の電話番号設定で Messaging を開き、A message comes in を次に設定します。HTTP
POST を使用します。デフォルトのローカルパスは /webhooks/sms です。別のルートが必要な場合は channels.sms.webhookPath を変更します。Expose the exact SMS webhook path
公開 URL は SMS パスを Gateway プロセスにルーティングする必要があります。ローカルテストに Tailscale Funnel を使用する場合は、Voice Call と SMS は別々の Webhook パスを使用します。同じ Twilio 番号で両方を処理する場合は、Twilio とトンネルの両方で両方のルートを設定したままにします。
/webhooks/sms を明示的に公開します。設定例
設定ファイル
チャネル定義を Gateway 設定と一緒に運びたい場合は、設定ファイルによるセットアップを使用します。環境変数
シークレットがホスト環境から提供される単一アカウントのデプロイでは、環境変数によるセットアップを使用します。TWILIO_SMS_FROM は TWILIO_PHONE_NUMBER のエイリアスとして受け入れられます。Twilio が Messaging Service から送信者を選択する必要がある場合は、電話番号の送信者の代わりに TWILIO_MESSAGING_SERVICE_SID を使用します。
SecretRef 認証トークン
authToken には SecretRef を指定できます。プレーンテキストの設定を保存する代わりに、Gateway が OpenClaw シークレットランタイムから Twilio Auth Token を解決する必要がある場合に使用します。
Allowlist のみのプライベート番号
既知の電話番号だけがエージェントと会話できるようにする場合は、allowlist を使用します。
Messaging Service 送信者
Twilio が Messaging Service を通じて送信者を選択する必要がある場合は、fromNumber の代わりに messagingServiceSid を使用します。
fromNumber と messagingServiceSid の両方が存在する場合は、fromNumber が使用されます。
デフォルト送信先
送信フローで明示的な送信先が省略された場合に、自動化またはエージェント開始の配信でデフォルトの送信先を持たせるには、defaultTo を設定します。
アクセス制御
channels.sms.dmPolicy は直接 SMS アクセスを制御します。
pairing(デフォルト)allowlist(allowFromに少なくとも 1 つの送信者が必要)open(allowFromに"*"を含める必要あり)disabled
allowFrom エントリは +15551234567 のような E.164 電話番号にしてください。sms: プレフィックスは受け入れられ、正規化されます。プライベートアシスタントでは、明示的な電話番号を指定した dmPolicy: "allowlist" を推奨します。
SMS の送信
送信 SMS ターゲットは、SMS チャネルを選択したうえでsms: サービスプレフィックスを使用します。
twilio-sms:+15551234567 は、iMessage が使用する既存のチャネル所有 sms: サービスプレフィックスを奪わずに、このチャネルを選択します。
--target が必要です。defaultTo は、チャネル設定からターゲットを解決できる自動化およびエージェント開始の配信パス向けです。
受信 SMS 会話からのエージェント返信は、設定済みの Twilio 送信者を通じて自動的に送信者へ返されます。
SMS 出力はプレーンテキストです。OpenClaw は Markdown を取り除き、フェンス付きコードブロックを平坦化し、読みやすいリンクを保持し、長い返信を Twilio 経由で送信する前に分割します。
セットアップの検証
Gateway が起動した後:- Gateway ログに SMS Webhook ルートが表示されていることを確認します。
- Twilio 側のプローブを実行します。
- 自分の電話から Twilio 番号に SMS を送信します。
openclaw pairing list smsを実行します。openclaw pairing approve sms <CODE>でペアリングコードを承認します。- もう一度 SMS を送信し、エージェントが返信することを確認します。
macOS iMessage/SMS からのエンドツーエンドテスト
Messages 経由でキャリア SMS を送信できる Mac では、電話に触れずにimsg を使用して送信者側を操作できます。
Webhook セキュリティ
デフォルトでは、OpenClaw はpublicWebhookUrl と authToken を使用して X-Twilio-Signature を検証します。publicWebhookUrl は、スキーム、ホスト、パス、クエリ文字列を含め、Twilio に設定された URL とバイト単位で一致させてください。
ローカルトンネルテストの場合に限り、次を設定できます。
マルチアカウント設定
複数の Twilio 番号を運用する場合はaccounts を使用します。
webhookPath を使用してください。
トラブルシューティング
Twilio が 403 を返す、または OpenClaw が Webhook を拒否する
publicWebhookUrl が、スキーム、ホスト、パス、クエリ文字列を含め、Twilio に設定された URL と正確に一致していることを確認します。Twilio は公開 URL 文字列に署名するため、プロキシによる書き換えや別のホスト名により署名検証が失敗する可能性があります。
ペアリングリクエストが表示されない
Twilio 番号の Messaging Webhook URL とメソッドを確認します。SMS Webhook URL を指し、POST を使用している必要があります。また、Gateway が公開インターネットまたはトンネル経由で到達可能であることも確認してください。
Twilio メッセージログにエラー 11200 が表示される場合、Twilio は受信 SMS を受け入れましたが、Webhook に到達できませんでした。次を確認します。
- Twilio の Messaging > A message comes in が
publicWebhookUrlを指している。 - メソッドが
POSTである。 - トンネルまたはリバースプロキシが正確な
webhookPathを公開している。Tailscale Funnel の場合はtailscale funnel statusを実行し、/webhooks/smsが一覧に表示されていることを確認する。 publicWebhookUrlが Twilio の送信するものと同じスキーム、ホスト、パス、クエリ文字列を使用しているため、署名検証で署名済み URL を再現できる。
送信が失敗する
accountSid、authToken、および fromNumber または messagingServiceSid のいずれかが解決されていることを確認します。Twilio のトライアルアカウントを使用している場合、SMS を送信する前に、送信先番号を Twilio で検証する必要がある場合があります。
メッセージは届くがエージェントが応答しない
dmPolicy と allowFrom を確認します。デフォルトの pairing ポリシーでは、通常のエージェントターンが処理される前に送信者が承認されている必要があります。