SMS — Command AI by Text
SMS — Command AI by Text — easy-to-understand guide based on official docs
SMS — Comandos de IA por Mensaje de Texto
¿Recuerdas los días antes de los smartphones, cuando enviar mensajes de texto era la forma más rápida de contactar a alguien? Pues ese canal clásico sigue vivo y coleando — y ahora es una forma completa de hablar con tu asistente de IA.
Hermes ahora se conecta a SMS a través de Twilio, así que cualquiera con un número de teléfono puede enviar mensajes a tu bot y recibir respuestas impulsadas por IA. Sin instalar apps, sin códigos QR, sin curva de aprendizaje. Solo mensajes de texto de toda la vida.
Novedades en Esta Actualización
La puerta de enlace SMS recibió una mejora importante. Esto es lo que cambió:
SMS_WEBHOOK_URLahora es obligatorio — Hermes valida las firmas de los webhooks de Twilio para mantener fuera a los impostores. La puerta de enlace se negará a iniciar sin este valor.- Nuevas variables de entorno —
SMS_WEBHOOK_HOST,SMS_WEBHOOK_PORT,SMS_INSECURE_NO_SIGNATUREySMS_ALLOW_ALL_USERSte dan más control. - Mejores valores de seguridad por defecto — La puerta de enlace deniega a todos los usuarios por defecto. Debes añadir explícitamente los números de teléfono a la lista blanca.
- División de mensajes más inteligente — Las respuestas largas ahora se dividen en puntos naturales (saltos de línea, luego espacios) en lugar de cortarse a mitad de palabra.
Primeros Pasos
Primero, necesitarás una cuenta de Twilio y un número de teléfono con capacidad SMS. Twilio ofrece una prueba gratuita, así que puedes probar todo sin gastar ni un centavo.
También necesitarás un servidor accesible públicamente. Twilio envía webhooks a tu servidor cuando alguien envía un mensaje a tu número. Si estás ejecutando Hermes localmente, herramientas como cloudflared o ngrok pueden exponer tu localhost a internet.
Instala el extra de SMS con:
cd ~/.hermes/hermes-agent && uv pip install -e ".[sms]"
Paso 1: Obtén tus Credenciales de Twilio
Ve a la Consola de Twilio, copia tu Account SID y Auth Token desde el panel, y anota tu número de teléfono en formato E.164 (como +15551234567).
Paso 2: Configura Hermes
La forma más fácil es con el asistente interactivo:
hermes gateway setup
Selecciona SMS (Twilio) y sigue las instrucciones.
¿Prefieres la configuración manual? Añade esto a ~/.hermes/.env:
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=tu_auth_token_aqui
TWILIO_PHONE_NUMBER=+15551234567
# Seguridad: restringe a números de teléfono específicos (recomendado)
SMS_ALLOWED_USERS=+15559876543,+15551112222
# Opcional: establece un canal principal para la entrega de trabajos cron
SMS_HOME_CHANNEL=+15559876543
Paso 3: Configura el Webhook de Twilio
En la Consola de Twilio, ve a Phone Numbers → Manage → Active Numbers, haz clic en tu número y, en Messaging → A MESSAGE COMES IN, establece el webhook a:
https://tu-servidor:8080/webhooks/twilio
Establece el método HTTP a POST.
Importante: Establece SMS_WEBHOOK_URL con la misma URL exacta que configuraste en Twilio. Esto es necesario para la validación de firmas:
SMS_WEBHOOK_URL=https://tu-servidor:8080/webhooks/twilio
El puerto del webhook usa 8080 por defecto, pero puedes cambiarlo con SMS_WEBHOOK_PORT.
Paso 4: Inicia la Puerta de Enlace
hermes gateway
Deberías ver algo como:
[sms] Servidor de webhook de Twilio escuchando en 127.0.0.1:8080, desde: +1555***4567
Ahora envía un mensaje a tu número de Twilio — Hermes responderá por SMS.
Cómo se Comporta el SMS de Forma Diferente
SMS es un medio de texto plano, así que Hermes se adapta:
- Sin Markdown — Se elimina automáticamente ya que SMS lo mostraría como caracteres literales
- Límite de 1600 caracteres — Las respuestas más largas se dividen en varios mensajes en puntos naturales
- Prevención de eco — Los mensajes de tu propio número de Twilio se ignoran para evitar bucles
- Privacidad — Los números de teléfono se ocultan en los registros
La Seguridad Importa
Hermes valida que los webhooks entrantes provengan genuinamente de Twilio comprobando la cabecera X-Twilio-Signature (HMAC-SHA1). Esto bloquea a los atacantes que intenten inyectar mensajes falsos.
La puerta de enlace deniega a todos los usuarios por defecto. Debes configurar una lista blanca:
SMS_ALLOWED_USERS=+15559876543,+15551112222
O, si te sientes temerario (por favor, no lo hagas):
SMS_ALLOW_ALL_USERS=true
Para desarrollo local sin una URL pública, puedes desactivar la validación de firmas:
SMS_INSECURE_NO_SIGNATURE=true
Pero recuerda — eso es solo para desarrollo local, nunca para producción.
Una Última Advertencia
SMS no tiene cifrado incorporado. No lo uses para operaciones sensibles. Para cualquier cosa confidencial, quédate con Signal o Telegram.
Solución de Problemas
¿No llegan los mensajes? Comprueba:
- Que tu URL de webhook sea correcta y accesible públicamente
- Que tu
TWILIO_ACCOUNT_SIDyTWILIO_AUTH_TOKENsean correctos - La Consola de Twilio → Monitor → Logs → Messaging para ver errores de entrega
- Que tu número de teléfono esté en
SMS_ALLOWED_USERS
¡Eso es todo! Envía un mensaje a tu bot, recibe respuestas. Así de simple.
📖 Documentación oficial
Este artículo se basa en la documentación oficial de Hermes Agent :Docs oficiales › user-guide/messaging/sms