Kopplung
Die Standard-DM-Richtlinie für SMS ist Kopplung.
Gateway-Sicherheit
Prüfen Sie die Webhook-Exposition und die Zugriffskontrollen für Absender.
Channel-Fehlerbehebung
Kanalübergreifende Diagnosen und Reparatur-Playbooks.
Bevor Sie beginnen
Sie benötigen:- Das offizielle SMS-Plugin, installiert mit
openclaw plugins install @openclaw/sms. - Ein Twilio-Konto mit einer SMS-fähigen Telefonnummer oder einem Twilio Messaging Service.
- Die Twilio Account SID und das Auth Token.
- Eine öffentliche HTTPS-URL, die Ihren OpenClaw Gateway erreicht.
- Eine Auswahl für die Absenderrichtlinie:
pairingfür private Nutzung,allowlistfür vorab genehmigte Telefonnummern oderopennur für bewusst öffentlichen SMS-Zugriff.
Schnelleinrichtung
Twilio-Absender erstellen oder auswählen
Öffnen Sie in Twilio Phone Numbers > Manage > Active numbers und wählen Sie eine SMS-fähige Nummer aus. Speichern Sie:
- Account SID, zum Beispiel
ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Auth Token
- Absender-Telefonnummer, zum Beispiel
+15551234567
MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.SMS-Channel konfigurieren
Speichern Sie dies als Wenden Sie es an:
sms.patch.json5 und ändern Sie die Platzhalter:Twilio auf den Gateway-Webhook verweisen
Öffnen Sie in den Twilio-Telefonnummerneinstellungen Messaging und setzen Sie A message comes in auf:Verwenden Sie HTTP
POST. Der standardmäßige lokale Pfad ist /webhooks/sms; ändern Sie channels.sms.webhookPath, wenn Sie eine andere Route benötigen.Den genauen SMS-Webhook-Pfad bereitstellen
Ihre öffentliche URL muss den SMS-Pfad an den Gateway-Prozess weiterleiten. Wenn Sie Tailscale Funnel für lokale Tests verwenden, stellen Sie Voice Call und SMS verwenden separate Webhook-Pfade. Wenn dieselbe Twilio-Nummer beides verarbeitet, lassen Sie beide Routen in Twilio und in Ihrem Tunnel konfiguriert.
/webhooks/sms explizit bereit:Konfigurationsbeispiele
Konfigurationsdatei
Verwenden Sie die Einrichtung per Konfigurationsdatei, wenn die Channel-Definition mit der Gateway-Konfiguration übertragen werden soll:Umgebungsvariablen
Verwenden Sie die Einrichtung per Umgebungsvariablen für Bereitstellungen mit einem einzelnen Konto, bei denen Geheimnisse aus der Host-Umgebung kommen:TWILIO_SMS_FROM wird als Alias für TWILIO_PHONE_NUMBER akzeptiert. Verwenden Sie TWILIO_MESSAGING_SERVICE_SID statt eines Telefonnummer-Absenders, wenn Twilio den Absender aus einem Messaging Service auswählen soll.
SecretRef-Auth-Token
authToken kann eine SecretRef sein. Verwenden Sie dies, wenn der Gateway das Twilio Auth Token aus der OpenClaw-Secrets-Runtime auflösen soll, statt Klartext-Konfiguration zu speichern:
Private Nummer nur per Allowlist
Verwenden Sieallowlist, wenn nur bekannte Telefonnummern mit dem Agent sprechen dürfen:
Messaging Service-Absender
Verwenden SiemessagingServiceSid statt fromNumber, wenn Twilio den Absender über einen Messaging Service auswählen soll:
fromNumber als auch messagingServiceSid vorhanden sind, wird fromNumber verwendet.
Standardziel für ausgehende Nachrichten
Setzen SiedefaultTo, wenn Automatisierung oder vom Agent initiierte Zustellung ein Standardziel haben soll, falls ein Sendeablauf kein explizites Ziel angibt:
Zugriffskontrolle
channels.sms.dmPolicy steuert den direkten SMS-Zugriff:
pairing(Standard)allowlist(erfordert mindestens einen Absender inallowFrom)open(erfordert, dassallowFrom"*"enthält)disabled
allowFrom-Einträge sollten E.164-Telefonnummern wie +15551234567 sein. sms:-Präfixe werden akzeptiert und normalisiert. Für einen privaten Assistant bevorzugen Sie dmPolicy: "allowlist" mit expliziten Telefonnummern.
SMS senden
Ausgehende SMS-Ziele verwenden den Service-Präfixsms: mit ausgewähltem SMS-Channel:
twilio-sms:+15551234567 diesen Channel aus, ohne den vorhandenen channel-eigenen Service-Präfix sms: zu übernehmen, der von iMessage verwendet wird.
--target. defaultTo ist für Automatisierungs- und vom Agent initiierte Zustellpfade vorgesehen, bei denen das Ziel aus der Channel-Konfiguration aufgelöst werden kann.
Agent-Antworten aus eingehenden SMS-Unterhaltungen gehen automatisch über den konfigurierten Twilio-Absender an den Absender zurück.
SMS-Ausgabe ist Klartext. OpenClaw entfernt Markdown, flacht eingezäunte Codeblöcke ab, erhält lesbare Links und teilt lange Antworten in Abschnitte auf, bevor sie über Twilio gesendet werden.
Einrichtung überprüfen
Nachdem der Gateway gestartet ist:- Bestätigen Sie, dass das Gateway-Protokoll die SMS-Webhook-Route anzeigt.
- Führen Sie eine Twilio-seitige Prüfung aus:
- Senden Sie von Ihrem Telefon eine SMS an die Twilio-Nummer.
- Führen Sie
openclaw pairing list smsaus. - Genehmigen Sie den Kopplungscode mit
openclaw pairing approve sms <CODE>. - Senden Sie eine weitere SMS und bestätigen Sie, dass der Agent antwortet.
End-to-End-Test aus macOS iMessage/SMS
Auf einem Mac, der über Messages Mobilfunk-SMS senden kann, können Sieimsg verwenden, um die Absenderseite zu steuern, ohne Ihr Telefon zu verwenden:
Webhook-Sicherheit
Standardmäßig validiert OpenClawX-Twilio-Signature mit publicWebhookUrl und authToken. Halten Sie publicWebhookUrl Byte für Byte mit der in Twilio konfigurierten URL abgestimmt, einschließlich Schema, Host, Pfad und Abfragezeichenfolge.
Nur für lokale Tunneltests können Sie setzen:
Konfiguration für mehrere Konten
Verwenden Sieaccounts, wenn Sie mehr als eine Twilio-Nummer betreiben:
webhookPath verwenden.
Fehlerbehebung
Twilio gibt 403 zurück oder OpenClaw weist den Webhook zurück
Prüfen Sie, dasspublicWebhookUrl genau mit der in Twilio konfigurierten URL übereinstimmt, einschließlich Schema, Host, Pfad und Abfragezeichenfolge. Twilio signiert die öffentliche URL-Zeichenfolge, daher können Proxy-Umschreibungen und alternative Hostnamen die Signaturvalidierung unterbrechen.
Es erscheint keine Kopplungsanfrage
Prüfen Sie die Messaging-Webhook-URL und -Methode der Twilio-Nummer. Sie muss auf die SMS-Webhook-URL zeigen undPOST verwenden. Bestätigen Sie außerdem, dass der Gateway aus dem öffentlichen Internet oder über Ihren Tunnel erreichbar ist.
Wenn das Twilio-Nachrichtenprotokoll den Fehler 11200 anzeigt, hat Twilio die eingehende SMS akzeptiert, konnte Ihren Webhook aber nicht erreichen. Prüfen Sie:
- Twilio Messaging > A message comes in zeigt auf
publicWebhookUrl. - Die Methode ist
POST. - Der Tunnel oder Reverse Proxy stellt den genauen
webhookPathbereit; führen Sie für Tailscale Funneltailscale funnel statusaus und bestätigen Sie, dass/webhooks/smsaufgeführt ist. publicWebhookUrlverwendet dasselbe Schema, denselben Host, denselben Pfad und dieselbe Abfragezeichenfolge, die Twilio sendet, damit die Signaturvalidierung die signierte URL reproduzieren kann.
Ausgehende Sendungen schlagen fehl
Bestätigen Sie, dassaccountSid, authToken und entweder fromNumber oder messagingServiceSid aufgelöst werden. Wenn Sie ein Twilio-Testkonto verwenden, muss die Zielnummer möglicherweise in Twilio verifiziert werden, bevor ausgehende SMS gesendet werden.
Nachrichten kommen an, aber der Agent antwortet nicht
Prüfen SiedmPolicy und allowFrom. Bei der standardmäßigen Richtlinie pairing muss der Absender genehmigt sein, bevor normale Agent-Durchläufe verarbeitet werden.