Pairing
La política predeterminada de DM para SMS es el emparejamiento.
Gateway security
Revisa la exposición de Webhook y los controles de acceso del remitente.
Channel troubleshooting
Diagnósticos entre canales y guías de reparación.
Antes de comenzar
Necesitas:- El Plugin oficial de SMS instalado con
openclaw plugins install @openclaw/sms. - Una cuenta de Twilio con un número de teléfono compatible con SMS, o un Twilio Messaging Service.
- El Account SID y Auth Token de Twilio.
- Una URL HTTPS pública que llegue a tu OpenClaw Gateway.
- Una elección de política de remitente:
pairingpara uso privado,allowlistpara números de teléfono preaprobados, uopensolo para acceso SMS intencionalmente público.
Configuración rápida
Create or choose a Twilio sender
En Twilio, abre Phone Numbers > Manage > Active numbers y elige un número compatible con SMS. Guarda:
- Account SID, por ejemplo
ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - Auth Token
- Número de teléfono del remitente, por ejemplo
+15551234567
MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.Configure the SMS channel
Guarda esto como Aplícalo:
sms.patch.json5 y cambia los marcadores de posición:Point Twilio at the Gateway webhook
En la configuración del número de teléfono de Twilio, abre Messaging y establece A message comes in en:Usa HTTP
POST. La ruta local predeterminada es /webhooks/sms; cambia channels.sms.webhookPath si necesitas una ruta diferente.Expose the exact SMS webhook path
Tu URL pública debe enrutar la ruta de SMS al proceso Gateway. Si usas Tailscale Funnel para pruebas locales, expón Voice Call y SMS usan rutas de Webhook separadas. Si el mismo número de Twilio maneja ambos, mantén ambas rutas configuradas en Twilio y en tu túnel.
/webhooks/sms explícitamente:Ejemplos de configuración
Archivo de configuración
Usa la configuración mediante archivo de configuración cuando quieras que la definición del canal viaje con la configuración del Gateway:Variables de entorno
Usa la configuración mediante env para despliegues de una sola cuenta donde los secretos provienen del entorno del host:TWILIO_SMS_FROM se acepta como alias de TWILIO_PHONE_NUMBER. Usa TWILIO_MESSAGING_SERVICE_SID en lugar de un remitente de número de teléfono cuando Twilio deba elegir el remitente desde un Messaging Service.
Token de autenticación SecretRef
authToken puede ser un SecretRef. Usa esto cuando el Gateway deba resolver el Twilio Auth Token desde el runtime de secretos de OpenClaw en lugar de almacenar configuración en texto plano:
Número privado solo con lista de permitidos
Usaallowlist cuando solo números de teléfono conocidos deban poder hablar con el agente:
Remitente de Messaging Service
UsamessagingServiceSid en lugar de fromNumber cuando Twilio deba elegir el remitente mediante un Messaging Service:
fromNumber como messagingServiceSid están presentes después de resolver configuración y env, se usa fromNumber.
Destino saliente predeterminado
EstablecedefaultTo cuando la automatización o la entrega iniciada por el agente deba tener un destino predeterminado si un flujo de envío omite un objetivo explícito:
Control de acceso
channels.sms.dmPolicy controla el acceso directo por SMS:
pairing(predeterminado)allowlist(requiere al menos un remitente enallowFrom)open(requiere queallowFromincluya"*")disabled
allowFrom deben ser números de teléfono E.164 como +15551234567. Se aceptan prefijos sms: y se normalizan. Para un asistente privado, prefiere dmPolicy: "allowlist" con números de teléfono explícitos.
Enviar SMS
Los objetivos de SMS saliente usan el prefijo de serviciosms: con el canal SMS seleccionado:
twilio-sms:+15551234567 selecciona este canal sin apropiarse del prefijo de servicio sms: existente y propiedad del canal usado por iMessage.
--target explícito. defaultTo es para rutas de automatización y entrega iniciadas por el agente donde el objetivo puede resolverse desde la configuración del canal.
Las respuestas del agente desde conversaciones SMS entrantes vuelven automáticamente al remitente mediante el remitente de Twilio configurado.
La salida SMS es texto sin formato. OpenClaw elimina markdown, aplana bloques de código delimitados, preserva enlaces legibles y divide respuestas largas antes de enviarlas mediante Twilio.
Verificar la configuración
Después de que se inicie el Gateway:- Confirma que el registro del Gateway muestra la ruta de Webhook de SMS.
- Ejecuta una prueba desde el lado de Twilio:
- Envía un SMS al número de Twilio desde tu teléfono.
- Ejecuta
openclaw pairing list sms. - Aprueba el código de emparejamiento con
openclaw pairing approve sms <CODE>. - Envía otro SMS y confirma que el agente responde.
Prueba integral desde macOS iMessage/SMS
En un Mac que pueda enviar SMS de operador mediante Messages, puedes usarimsg para controlar el lado del remitente sin tocar tu teléfono:
Seguridad del Webhook
De forma predeterminada, OpenClaw validaX-Twilio-Signature usando publicWebhookUrl y authToken. Mantén publicWebhookUrl alineada byte por byte con la URL configurada en Twilio, incluidos esquema, host, ruta y cadena de consulta.
Solo para pruebas con túnel local, puedes establecer:
Configuración de varias cuentas
Usaaccounts cuando operes más de un número de Twilio:
webhookPath distinto.
Solución de problemas
Twilio devuelve 403 u OpenClaw rechaza el Webhook
Comprueba quepublicWebhookUrl coincida exactamente con la URL configurada en Twilio, incluidos esquema, host, ruta y cadena de consulta. Twilio firma la cadena de URL pública, por lo que las reescrituras de proxy y los nombres de host alternativos pueden romper la validación de firma.
No aparece ninguna solicitud de emparejamiento
Comprueba la URL y el método del Webhook de Messaging del número de Twilio. Debe apuntar a la URL del Webhook de SMS y usarPOST. Confirma también que el Gateway sea accesible desde la Internet pública o mediante tu túnel.
Si el registro de mensajes de Twilio muestra el error 11200, Twilio aceptó el SMS entrante pero no pudo llegar a tu Webhook. Comprueba:
- Twilio Messaging > A message comes in apunta a
publicWebhookUrl. - El método es
POST. - El túnel o proxy inverso expone el
webhookPathexacto; para Tailscale Funnel, ejecutatailscale funnel statusy confirma que/webhooks/smsaparezca en la lista. publicWebhookUrlusa el mismo esquema, host, ruta y cadena de consulta que envía Twilio, para que la validación de firma pueda reproducir la URL firmada.
Fallan los envíos salientes
Confirma queaccountSid, authToken y fromNumber o messagingServiceSid se resuelvan. Si usas una cuenta de prueba de Twilio, es posible que el número de destino deba verificarse en Twilio antes de que se envíen SMS salientes.
Los mensajes llegan pero el agente no responde
CompruebadmPolicy y allowFrom. Con la política pairing predeterminada, el remitente debe estar aprobado antes de que se procesen los turnos normales del agente.