Get started
SMS
OpenClaw, bir Twilio telefon numarası veya Messaging Service üzerinden SMS alıp gönderebilir. Gateway, gelen Webhook rotasını kaydeder, varsayılan olarak Twilio istek imzalarını doğrular ve yanıtları Twilio'nun Messages API'si üzerinden geri gönderir.
SMS için varsayılan DM ilkesi eşleştirmedir.
Webhook erişimini ve gönderici erişim kontrollerini gözden geçirin.
Kanallar arası tanılama ve onarım çalışma kitapları.
Başlamadan önce
Şunlara ihtiyacınız var:
- Resmi SMS Plugin'i
openclaw plugins install @openclaw/smsile yüklenmiş olmalıdır. - SMS özellikli telefon numarasına sahip bir Twilio hesabı veya Twilio Messaging Service.
- Twilio Account SID ve Auth Token.
- OpenClaw Gateway'inize ulaşan herkese açık bir HTTPS URL'si.
- Bir gönderici ilkesi seçimi: özel kullanım için
pairing, önceden onaylanmış telefon numaraları içinallowlistveya yalnızca kasıtlı olarak herkese açık SMS erişimi içinopen.
Numara her iki yeteneğe de sahipse SMS ve Voice Call için aynı Twilio numarasını kullanın. SMS Webhook'unu ve Voice Webhook'unu Twilio'da ayrı ayrı yapılandırın; bu sayfa yalnızca SMS Webhook'unu kapsar.
Hızlı Kurulum
Install the plugin
openclaw plugins install @openclaw/smsCreate or choose a Twilio sender
Twilio'da Phone Numbers > Manage > Active numbers bölümünü açın ve SMS özellikli bir numara seçin. Şunları kaydedin:
- Account SID, örneğin
ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Auth Token
- Gönderici telefon numarası, örneğin
+15551234567
Sabit bir gönderici numarası yerine Messaging Service kullanıyorsanız Messaging Service SID'yi kaydedin, örneğin MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Configure the SMS channel
Bunu sms.patch.json5 olarak kaydedin ve yer tutucuları değiştirin:
{channels: {sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", fromNumber: "+15551234567", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", dmPolicy: "pairing",},},}Uygulayın:
openclaw config patch --file ./sms.patch.json5 --dry-runopenclaw config patch --file ./sms.patch.json5Point Twilio at the Gateway webhook
Twilio telefon numarası ayarlarında Messaging bölümünü açın ve A message comes in değerini şuna ayarlayın:
https://gateway.example.com/webhooks/smsHTTP POST kullanın. Varsayılan yerel yol /webhooks/sms olur; farklı bir rotaya ihtiyacınız varsa channels.sms.webhookPath değerini değiştirin.
Expose the exact SMS webhook path
Herkese açık URL'niz SMS yolunu Gateway sürecine yönlendirmelidir. Yerel test için Tailscale Funnel kullanıyorsanız /webhooks/sms yolunu açıkça dışa açın:
tailscale funnel --bg --set-path /webhooks/sms http://127.0.0.1:<gateway-port>/webhooks/smstailscale funnel statusVoice Call ve SMS ayrı Webhook yolları kullanır. Aynı Twilio numarası her ikisini de işliyorsa her iki rotayı da Twilio'da ve tünelinizde yapılandırılmış tutun.
Start the Gateway and approve first sender
openclaw gatewayTwilio numarasına bir kısa mesaj gönderin. İlk mesaj bir eşleştirme isteği oluşturur. Onaylayın:
openclaw pairing list smsopenclaw pairing approve sms <CODE>Eşleştirme kodlarının süresi 1 saat sonra dolar.
Yapılandırma Örnekleri
Yapılandırma dosyası
Kanal tanımının Gateway yapılandırmasıyla birlikte taşınmasını istediğinizde yapılandırma dosyası kurulumunu kullanın:
{ channels: { sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", fromNumber: "+15551234567", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", dmPolicy: "pairing", }, },}Ortam değişkenleri
Gizli değerlerin ana makine ortamından geldiği tek hesaplı dağıtımlar için ortam kurulumunu kullanın:
export TWILIO_ACCOUNT_SID="ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"export TWILIO_AUTH_TOKEN="<twilio-auth-token>"export TWILIO_PHONE_NUMBER="+15551234567"export SMS_PUBLIC_WEBHOOK_URL="https://gateway.example.com/webhooks/sms"Ardından kanalı yapılandırmada etkinleştirin:
{ channels: { sms: { enabled: true, dmPolicy: "pairing", }, },}TWILIO_SMS_FROM, TWILIO_PHONE_NUMBER için bir diğer ad olarak kabul edilir. Twilio'nun göndericiyi Messaging Service'ten seçmesi gerektiğinde telefon numarası göndericisi yerine TWILIO_MESSAGING_SERVICE_SID kullanın.
SecretRef kimlik doğrulama belirteci
authToken bir SecretRef olabilir. Gateway'in Twilio Auth Token'ı düz metin yapılandırma olarak depolamak yerine OpenClaw gizli değerler çalışma zamanından çözmesi gerektiğinde bunu kullanın:
{ channels: { sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: { source: "env", provider: "default", id: "TWILIO_AUTH_TOKEN" }, fromNumber: "+15551234567", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", dmPolicy: "pairing", }, },}Başvurulan ortam değişkeni veya gizli değer sağlayıcısı Gateway çalışma zamanı tarafından görülebilir olmalıdır. Ana makine ortam değişkenlerini değiştirdikten sonra yönetilen Gateway süreçlerini yeniden başlatın.
Yalnızca izin listesine açık özel numara
Yalnızca bilinen telefon numaralarının ajanla konuşabilmesi gerektiğinde allowlist kullanın:
{ channels: { sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", fromNumber: "+15551234567", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", dmPolicy: "allowlist", allowFrom: ["+15557654321"], }, },}Messaging Service göndericisi
Twilio'nun göndericiyi Messaging Service üzerinden seçmesi gerektiğinde fromNumber yerine messagingServiceSid kullanın:
{ channels: { sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", messagingServiceSid: "MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", dmPolicy: "pairing", }, },}Yapılandırma ve ortam çözümlemesinden sonra hem fromNumber hem de messagingServiceSid varsa fromNumber kullanılır.
Varsayılan giden hedef
Otomasyon veya ajan tarafından başlatılan teslimat, gönderim akışı açık bir hedefi atladığında varsayılan bir hedefe sahip olmalıysa defaultTo ayarlayın:
{ channels: { sms: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", fromNumber: "+15551234567", defaultTo: "+15557654321", publicWebhookUrl: "https://gateway.example.com/webhooks/sms", }, },}Erişim kontrolü
channels.sms.dmPolicy doğrudan SMS erişimini kontrol eder:
pairing(varsayılan)allowlist(allowFromiçinde en az bir gönderici gerektirir)open(allowFromiçinde"*"bulunmasını gerektirir)disabled
allowFrom girdileri +15551234567 gibi E.164 telefon numaraları olmalıdır. sms: önekleri kabul edilir ve normalleştirilir. Özel bir asistan için açık telefon numaralarıyla birlikte dmPolicy: "allowlist" tercih edin.
SMS gönderme
Giden SMS hedefleri, SMS kanalı seçili olarak sms: hizmet önekini kullanır:
openclaw message send --channel sms --target sms:+15551234567 --message "hello"Kanal seçimi örtük olduğunda twilio-sms:+15551234567, iMessage tarafından kullanılan mevcut kanal sahipli sms: hizmet önekini devralmadan bu kanalı seçer.
openclaw message send --target twilio-sms:+15551234567 --message "hello"CLI açık bir --target gerektirir. defaultTo, hedefin kanal yapılandırmasından çözülebildiği otomasyon ve ajan tarafından başlatılan teslimat yolları içindir.
Gelen SMS konuşmalarından ajan yanıtları, yapılandırılmış Twilio göndericisi üzerinden otomatik olarak göndericiye geri gider.
SMS çıktısı düz metindir. OpenClaw markdown'ı kaldırır, çitli kod bloklarını düzleştirir, okunabilir bağlantıları korur ve uzun yanıtları Twilio üzerinden göndermeden önce parçalara böler.
Kurulumu Doğrulama
Gateway başladıktan sonra:
- Gateway günlüğünün SMS Webhook rotasını gösterdiğini doğrulayın.
- Twilio tarafında bir yoklama çalıştırın:
openclaw channels capabilities --channel smsopenclaw channels status --channel sms --probe --json- Telefonunuzdan Twilio numarasına bir SMS gönderin.
openclaw pairing list smsçalıştırın.- Eşleştirme kodunu
openclaw pairing approve sms <CODE>ile onaylayın. - Başka bir SMS gönderin ve ajanın yanıtladığını doğrulayın.
Yalnızca giden test için şunu kullanın:
openclaw message send --channel sms --target sms:+15557654321 --message "OpenClaw SMS test"macOS iMessage/SMS'ten uçtan uca test
Messages üzerinden operatör SMS'i gönderebilen bir Mac'te, telefonunuza dokunmadan gönderici tarafını çalıştırmak için imsg kullanabilirsiniz:
imsg send --to "+15551234567" --service sms --text "OpenClaw SMS E2E $(date -u +%Y%m%dT%H%M%SZ)" --jsonopenclaw pairing list smsopenclaw pairing approve sms <CODE>imsg send --to "+15551234567" --service sms --text "reply exactly SMS pong" --jsonİlk mesaj bir eşleştirme isteği oluşturmalıdır. İkinci mesaj ajan yanıtını Twilio üzerinden almalıdır.
Webhook güvenliği
Varsayılan olarak OpenClaw, publicWebhookUrl ve authToken kullanarak X-Twilio-Signature doğrular. publicWebhookUrl değerini şema, ana makine, yol ve sorgu dizesi dahil olmak üzere Twilio'da yapılandırılan URL ile bayt bayt aynı tutun.
Yalnızca yerel tünel testi için şunu ayarlayabilirsiniz:
{ channels: { sms: { dangerouslyDisableSignatureValidation: true, }, },}Herkese açık bir Gateway'de devre dışı imza doğrulaması kullanmayın.
Çok hesaplı yapılandırma
Birden fazla Twilio numarası işletiyorsanız accounts kullanın:
{ channels: { sms: { accounts: { support: { enabled: true, accountSid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken: "twilio-auth-token", fromNumber: "+15551234567", publicWebhookUrl: "https://gateway.example.com/webhooks/sms/support", webhookPath: "/webhooks/sms/support", dmPolicy: "allowlist", allowFrom: ["+15557654321"], }, }, }, },}Her hesap ayrı bir webhookPath kullanmalıdır.
Sorun giderme
Twilio 403 döndürüyor veya OpenClaw Webhook'u reddediyor
publicWebhookUrl değerinin şema, ana makine, yol ve sorgu dizesi dahil olmak üzere Twilio'da yapılandırılan URL ile tam olarak eşleştiğini kontrol edin. Twilio herkese açık URL dizesini imzalar, bu nedenle proxy yeniden yazmaları ve alternatif ana makine adları imza doğrulamasını bozabilir.
Eşleştirme isteği görünmüyor
Twilio numarasının Messaging Webhook URL'sini ve yöntemini kontrol edin. SMS Webhook URL'sini göstermeli ve POST kullanmalıdır. Ayrıca Gateway'in herkese açık internetten veya tüneliniz üzerinden erişilebilir olduğunu doğrulayın.
Twilio mesaj günlüğü 11200 hatasını gösteriyorsa Twilio gelen SMS'i kabul etmiş ancak Webhook'unuza ulaşamamıştır. Şunları kontrol edin:
- Twilio Messaging > A message comes in
publicWebhookUrldeğerini gösteriyor. - Yöntem
POST. - Tünel veya ters proxy tam
webhookPathyolunu dışa açıyor; Tailscale Funnel içintailscale funnel statusçalıştırın ve/webhooks/smsöğesinin listelendiğini doğrulayın. publicWebhookUrl, Twilio'nun gönderdiği aynı şema, ana makine, yol ve sorgu dizesini kullanıyor; böylece imza doğrulaması imzalanmış URL'yi yeniden oluşturabilir.
Giden gönderimler başarısız oluyor
accountSid, authToken ve fromNumber ya da messagingServiceSid değerlerinden birinin çözüldüğünü doğrulayın. Deneme Twilio hesabı kullanıyorsanız giden SMS gönderilebilmesi için hedef numaranın Twilio'da doğrulanması gerekebilir.
Mesajlar geliyor ancak ajan yanıt vermiyor
dmPolicy ve allowFrom değerlerini kontrol edin. Varsayılan pairing ilkesiyle, normal agent turları işlenmeden önce gönderenin onaylanmış olması gerekir.