SMS — Управляй AI через текстовые сообщения
SMS — Command AI by Text — easy-to-understand guide based on official docs
SMS — Управляй AI через текстовые сообщения
Помните времена до смартфонов, когда SMS было самым быстрым способом связаться с человеком? Этот классический канал жив и здоров — и теперь это полноценный способ общения с вашим AI-ассистентом.
Hermes теперь подключается к SMS через Twilio, так что любой человек с номером телефона может написать вашему боту и получить ответы от AI. Никаких установок приложений, QR-кодов и кривой обучения. Просто обычные текстовые сообщения.
Что нового в этом обновлении
SMS-шлюз получил серьёзное обновление. Вот что изменилось:
SMS_WEBHOOK_URLтеперь обязателен — Hermes проверяет подписи вебхуков Twilio, чтобы отсечь самозванцев. Шлюз откажется запускаться без него.- Новые переменные окружения —
SMS_WEBHOOK_HOST,SMS_WEBHOOK_PORT,SMS_INSECURE_NO_SIGNATUREиSMS_ALLOW_ALL_USERSдают больше контроля. - Улучшенные настройки безопасности по умолчанию — Шлюз по умолчанию запрещает доступ всем пользователям. Вы должны явно добавить номера телефонов в белый список.
- Умное разбиение сообщений — Длинные ответы теперь разбиваются по естественным границам (переносы строк, затем пробелы), а не режутся посреди слова.
Начало работы
Сначала вам понадобится аккаунт Twilio и номер телефона с поддержкой SMS. У Twilio есть бесплатный пробный период, так что можно всё протестировать без затрат.
Также понадобится публично доступный сервер. Twilio отправляет вебхуки на ваш сервер, когда кто-то пишет на ваш номер. Если вы запускаете Hermes локально, такие инструменты, как cloudflared или ngrok, помогут открыть ваш localhost в интернет.
Установите SMS-расширение:
cd ~/.hermes/hermes-agent && uv pip install -e ".[sms]"
Шаг 1: Получите учётные данные Twilio
Перейдите в Twilio Console, скопируйте Account SID и Auth Token с панели управления и запишите свой номер телефона в формате E.164 (например, +15551234567).
Шаг 2: Настройте Hermes
Самый простой способ — интерактивный мастер:
hermes gateway setup
Выберите SMS (Twilio) и следуйте подсказкам.
Предпочитаете ручную настройку? Добавьте это в ~/.hermes/.env:
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=your_auth_token_here
TWILIO_PHONE_NUMBER=+15551234567
# Безопасность: ограничьте доступ конкретными номерами (рекомендуется)
SMS_ALLOWED_USERS=+15559876543,+15551112222
# Опционально: задайте домашний канал для доставки cron-задач
SMS_HOME_CHANNEL=+15559876543
Шаг 3: Настройте вебхук Twilio
В Twilio Console перейдите в Phone Numbers → Manage → Active Numbers, нажмите на свой номер и в разделе Messaging → A MESSAGE COMES IN укажите вебхук:
https://your-server:8080/webhooks/twilio
Установите HTTP-метод POST.
Важно: Укажите SMS_WEBHOOK_URL точно так же, как URL, настроенный в Twilio. Это обязательно для проверки подписи:
SMS_WEBHOOK_URL=https://your-server:8080/webhooks/twilio
Порт вебхука по умолчанию — 8080, но его можно изменить через SMS_WEBHOOK_PORT.
Шаг 4: Запустите шлюз
hermes gateway
Вы должны увидеть что-то вроде:
[sms] Twilio webhook server listening on 127.0.0.1:8080, from: +1555***4567
Теперь напишите на свой номер Twilio — Hermes ответит через SMS.
Чем SMS-поведение отличается
SMS — это текстовый канал без форматирования, поэтому Hermes адаптируется:
- Без Markdown — Он автоматически удаляется, так как SMS отображает его как обычные символы
- Лимит 1600 символов — Длинные ответы разбиваются на несколько сообщений по естественным границам
- Защита от эха — Сообщения с вашего собственного номера Twilio игнорируются, чтобы избежать зацикливания
- Конфиденциальность — Номера телефонов маскируются в логах
Безопасность имеет значение
Hermes проверяет, что входящие вебхуки действительно приходят от Twilio, сверяя заголовок X-Twilio-Signature (HMAC-SHA1). Это блокирует атаки с подделкой сообщений.
Шлюз по умолчанию запрещает доступ всем пользователям. Необходимо настроить белый список:
SMS_ALLOWED_USERS=+15559876543,+15551112222
Или, если вам хочется безрассудства (пожалуйста, не надо):
SMS_ALLOW_ALL_USERS=true
Для локальной разработки без публичного URL можно отключить проверку подписи:
SMS_INSECURE_NO_SIGNATURE=true
Но помните — это только для локальной разработки, никогда для продакшена.
Последнее предупреждение
SMS не имеет встроенного шифрования. Не используйте его для чувствительных операций. Для всего конфиденциального используйте Signal или Telegram.
Устранение неполадок
Сообщения не приходят? Проверьте:
- Что URL вебхука указан верно и доступен публично
- Что
TWILIO_ACCOUNT_SIDиTWILIO_AUTH_TOKENуказаны правильно - Twilio Console → Monitor → Logs → Messaging на предмет ошибок доставки
- Что ваш номер телефона есть в
SMS_ALLOWED_USERS
Вот и всё! Пишите своему боту — получайте ответы. Проще некуда.
📖 Официальная документация
Эта статья основана на официальной документации Hermes Agent :Официальные документы › user-guide/messaging/sms