sidebar_position: 5
title: "WhatsApp"
description: "Set up Hermes Agent as a WhatsApp bot via the built-in Baileys bridge"
lang: ru
Настройка WhatsApp
Hermes подключается к WhatsApp через встроенный мост на базе Baileys. Это работает путем эмуляции веб-сеанса WhatsApp, а не через официальный API WhatsApp Business. Никакая учетная запись разработчика Meta или проверка бизнеса не требуются.
:::предупреждение Неофициальный API — Риск бана
WhatsApp не официально не поддерживает сторонних ботов за пределами Business API. Использование стороннего моста несет в себе небольшой риск ограничения учетной записи. Чтобы минимизировать риск:
- Используйте для бота выделенный номер телефона (а не свой личный номер).
- Не рассылайте массовые сообщения и спам — сохраняйте диалог в использовании.
– Не автоматизируйте отправку исходящих сообщений людям, которые еще не отправили сообщение первым.
::: предупреждение об обновлениях веб-протокола WhatsApp
WhatsApp периодически обновляет свой веб-протокол, что может временно нарушить совместимость.
со сторонними мостами. Когда это произойдет, Hermes обновит зависимость моста. Если
бот перестает работать после обновления WhatsApp, скачайте последнюю версию Hermes и выполните повторное сопряжение.
Два режима
Режим
Как это работает
Лучшее для
Отдельный номер бота (рекомендуется)
Выделите боту номер телефона. Люди отправляют сообщения на этот номер напрямую.
Чистый UX, несколько пользователей, меньший риск бана
Личный чат
Используйте свой собственный WhatsApp. Вы отправляете себе сообщение, чтобы поговорить с агентом.
Быстрая настройка, один пользователь, тестирование
Предварительные условия
Node.js v18+ и npm — мост WhatsApp работает как процесс Node.js.
Телефон с установленным WhatsApp (для сканирования QR-кода)
В отличие от старых мостов, управляемых браузером, текущий мост на основе Baileys не требует локального стека зависимостей Chromium или Puppeteer.
Шаг 1. Запустите мастер установки
hermeswhatsapp
Мастер:
Спросите, какой режим вам нужен (бот или самочат)
При необходимости установите зависимости моста.
Отобразите QR-код на своем терминале.
Подождите, пока вы его отсканируете.
Чтобы отсканировать QR-код:
Откройте WhatsApp на своем телефоне.
Откройте Настройки → Связанные устройства.
Нажмите Привязать устройство.
Наведите камеру на QR-код терминала.
После сопряжения мастер подтверждает соединение и завершает работу. Ваша сессия сохраняется автоматически.
:::совет
Если QR-код выглядит искаженным, убедитесь, что ваш терминал имеет ширину не менее 60 столбцов и поддерживает
Юникод. Вы также можете попробовать другой эмулятор терминала.
Шаг 2: Получение второго номера телефона (режим бота)
Для режима бота вам понадобится номер телефона, который еще не зарегистрирован в WhatsApp. Три варианта:
Вариант
Стоимость
Заметки
Google Голос
Бесплатно
Только США. Получите номер на voice.google.com. Подтвердите WhatsApp с помощью SMS через приложение Google Voice.
Предоплаченная SIM-карта
5–15 долларов США единоразово
Любой перевозчик. Активируйте, подтвердите WhatsApp, тогда SIM-карта может лежать в ящике. Номер должен оставаться активным (звонить каждые 90 дней).
Услуги VoIP
Бесплатно – 5 долларов в месяц
TextNow, TextFree или аналогичный. Некоторые номера VoIP заблокированы WhatsApp — попробуйте несколько, если первый не работает.
После получения номера:
Установите WhatsApp на телефон (или используйте приложение WhatsApp Business с поддержкой двух SIM-карт).
Зарегистрируйте новый номер в WhatsApp.
Запустите hermes whatsapp и отсканируйте QR-код из этой учетной записи WhatsApp.
Шаг 3: Настройте Гермес
Добавьте в свой файл ~/.hermes/.env следующее:
# RequiredWHATSAPP_ENABLED=trueWHATSAPP_MODE=bot# "bot" or "self-chat"# Access control — pick ONE of these options:WHATSAPP_ALLOWED_USERS=15551234567# Comma-separated phone numbers (with country code, no +)# WHATSAPP_ALLOWED_USERS=* # OR use * to allow everyone# WHATSAPP_ALLOW_ALL_USERS=true # OR set this flag instead (same effect as *)
💡 Tip
Сокращение «Разрешить все»
Настройка `WHATSAPP_ALLOWED_USERS=*` позволяет **всем** отправителям (эквивалентно `WHATSAPP_ALLOW_ALL_USERS=true`).
Это соответствует [спискам разрешенных групп сигналов](/docs/reference/environment-variables).
Чтобы вместо этого использовать поток сопряжения, удалите обе переменные и положитесь на
[Система сопряжения DM](/docs/user-guide/security#dm-pairing-system).
Дополнительные настройки поведения в ~/.hermes/config.yaml:
unauthorized_dm_behavior: pair — глобальное значение по умолчанию. Неизвестные отправители DM получают код сопряжения.
whatsapp.unauthorized_dm_behavior: ignore заставляет WhatsApp молчать о неавторизованных личных сообщениях, что обычно является лучшим выбором для частного номера.
Затем запустите шлюз:
hermesgateway# Foreground
hermesgatewayinstall# Install as a user service
sudohermesgatewayinstall--system# Linux only: boot-time system service
Шлюз автоматически запускает мост WhatsApp, используя сохраненный сеанс.
Сохранение сеанса
Мост Baileys сохраняет свой сеанс под именем ~/.hermes/platforms/whatsapp/session. Это означает:
Сессии сохраняются после перезапуска — вам не нужно каждый раз повторно сканировать QR-код.
Данные сеанса включают ключи шифрования и учетные данные устройства.
Не делитесь и не сохраняйте этот каталог сеанса — он предоставляет полный доступ к учетной записи WhatsApp.
Повторное сопряжение
Если сеанс прерывается (перезагрузка телефона, обновление WhatsApp, отключение вручную), вы увидите соединение.
ошибки в журналах шлюза. Чтобы это исправить:
hermeswhatsapp
Это генерирует новый QR-код. Отсканируйте его еще раз, и сеанс будет восстановлен. Шлюз
автоматически обрабатывает временные отключения (сигналы сети, кратковременное отключение телефона)
с логикой переподключения.
Голосовые сообщения
Hermes поддерживает голосовую связь в WhatsApp:
Входящие: Голосовые сообщения (.ogg opus) автоматически расшифровываются с использованием настроенного поставщика STT: локального faster-whisper, Groq Whisper (GROQ_API_KEY) или OpenAI Whisper (VOICE_TOOLS_OPENAI_KEY)
Исходящие: ответы TTS отправляются в виде вложенных аудиофайлов в формате MP3.
По умолчанию ответы агентов начинаются с префикса «⚕ Агент Гермес». Вы можете настроить или отключить это в config.yaml:
# ~/.hermes/config.yamlwhatsapp:reply_prefix:""# Empty string disables the header# reply_prefix: "🤖 *My Bot*\n──────\n" # Custom prefix (supports \n for newlines)
Форматирование и доставка сообщений
WhatsApp поддерживает потоковые (прогрессивные) ответы — бот редактирует свое сообщение в режиме реального времени, пока ИИ генерирует текст, точно так же, как Discord и Telegram. Внутри WhatsApp классифицируется как платформа TIER_MEDIUM по возможностям доставки.
Разбивка на части
Длинные ответы автоматически разбиваются на несколько сообщений по 4096 символов в каждом блоке (практический предел отображения WhatsApp). Вам не нужно ничего настраивать — шлюз обрабатывает разделение и отправляет фрагменты последовательно.
Уценка, совместимая с WhatsApp
Стандартный Markdown в ответах AI автоматически преобразуется в собственное форматирование WhatsApp:
Уценка
WhatsApp
Отображается как
**bold**
*bold*
жирный
~~strikethrough~~
~strikethrough~
~~зачеркивание~~
# Heading
*Heading*
Жирный текст (без собственных заголовков)
[link text](url)
link text (url)
Встроенный URL-адрес
Блоки кода и встроенный код сохраняются как есть, поскольку WhatsApp изначально поддерживает форматирование тройной обратной кавычки.
Прогресс инструмента
Когда агент вызывает инструменты (веб-поиск, операции с файлами и т. д.), WhatsApp отображает в реальном времени индикаторы хода выполнения, показывающие, какой инструмент запущен. Это включено по умолчанию — настройка не требуется.
Устранение неполадок
Проблема
Решение
QR-код не сканируется
Убедитесь, что терминал достаточно широкий (более 60 столбцов). Попробуйте другой терминал. Убедитесь, что вы сканируете с правильной учетной записи WhatsApp (номер бота, а не личный).
Срок действия QR-кода истек
QR-коды обновляются каждые ~ 20 секунд. Если время ожидания истекло, перезапустите hermes whatsapp.
Сеанс не сохраняется
Убедитесь, что ~/.hermes/platforms/whatsapp/session существует и доступен для записи. Если он помещен в контейнер, смонтируйте его как постоянный том.
Неожиданный выход из системы
WhatsApp отключает устройства после длительного бездействия. Оставьте телефон включенным и подключенным к сети, а затем при необходимости выполните повторное сопряжение с hermes whatsapp.
Авария моста или переподключение петель
Перезапустите шлюз, обновите Hermes и выполните повторное сопряжение, если сеанс был признан недействительным из-за изменения протокола WhatsApp.
Бот перестает работать после обновления WhatsApp
Обновите Hermes, чтобы получить последнюю версию моста, а затем выполните повторное сопряжение.
macOS: «Node.js не установлен», но узел работает в терминале
Службы launchd не наследуют PATH вашей оболочки. Запустите hermes gateway install, чтобы повторно сделать снимок текущего PATH в plist, затем hermes gateway start. Подробности см. в документации службы шлюза.
Сообщения не приходят
Убедитесь, что WHATSAPP_ALLOWED_USERS включает номер отправителя (с кодом страны, без + и пробелов), или установите для него значение *, чтобы разрешить всем. Установите WHATSAPP_DEBUG=true в .env и перезапустите шлюз, чтобы увидеть события необработанных сообщений в bridge.log.
Бот отвечает незнакомцам с помощью кода сопряжения
Установите whatsapp.unauthorized_dm_behavior: ignore в ~/.hermes/config.yaml, если вы хотите, чтобы неавторизованные DM вместо этого молча игнорировались.
Безопасность
:::предупреждение
Настройте контроль доступа перед публикацией. Установите WHATSAPP_ALLOWED_USERS с конкретным
номера телефонов (включая код страны, без +), используйте *, чтобы разрешить всем, или установите
WHATSAPP_ALLOW_ALL_USERS=true. Без чего-либо из этого шлюз отклоняет все входящие
сообщения в качестве меры безопасности.
По умолчанию неавторизованные DM по-прежнему получают ответ с кодом сопряжения. Если вы хотите, чтобы личный номер WhatsApp оставался полностью тихим для посторонних, установите:
whatsapp:unauthorized_dm_behavior:ignore
Каталог ~/.hermes/platforms/whatsapp/session содержит полные учетные данные сеанса — защитите его как пароль.
Установите права доступа к файлу: chmod 700 ~/.hermes/platforms/whatsapp/session.
Используйте выделенный номер телефона для бота, чтобы изолировать риск от вашего личного аккаунта.
Если вы подозреваете компрометацию, отсоедините устройство от WhatsApp → Настройки → Связанные устройства.
Номера телефонов в журналах частично отредактированы, но ознакомьтесь с политикой хранения журналов.