База знания - AI-агентов

Инструкция: Интеграция n8n с WhatsApp — официальный и «серый» методы

Почему WhatsApp Web, а не официальный API

Официальный API WhatsApp в России ограничен и требует регистрации через Meta (что может быть неприменимо из-за санкций, стоимости или ограничений по праву).
WhatsApp Web — это веб-версия мессенджера, которую можно автоматизировать через браузерное управление. Она работает через привязку к обычному номеру WhatsApp, без участия Meta API.

Что делает сервер в этой схеме

Чтобы связать WhatsApp Web с n8n, требуется промежуточный сервер. Он выполняет следующие задачи:
  1. Запускает браузер (например, через Puppeteer или аналог)
  2. — открывает WhatsApp Web, авторизуется через QR-код, поддерживает сессию.
  3. Слушает входящие сообщения
  4. — при получении новых сообщений он извлекает текст, отправителя, вложения.
  5. Отправляет данные в n8n (обычно через HTTP-запрос или webhook)
  6. — n8n получает данные и запускает автоматические сценарии.
  7. Получает команды от n8n для отправки сообщений обратно
  8. — таким образом, можно автоматически отвечать клиентам, отправлять статусы заказов, передавать уведомления.

Пример автоматизации

Сценарий: интернет-магазин получает сообщения от клиентов в WhatsApp.
  1. Клиент пишет: «Хочу узнать статус заказа 123».
  2. Сервер извлекает текст, определяет ключевое слово «статус» и номер.
  3. Данные передаются в n8n.
  4. n8n делает запрос к базе заказов.
  5. Получает статус и отправляет его обратно клиенту в WhatsApp.

Безопасность и хранение данных

  • Сервер и n8n могут быть размещены внутри локальной сети или на VPS в РФ.
  • Соединение может быть защищено HTTPS.
  • Данные не покидают территорию РФ, что помогает соответствовать требованиям закона о персональных данных.

Технические требования

  1. Сервер с Linux (можно использовать VPS от российского хостинга)
  2. Node.js (для n8n и браузерной автоматизации)
  3. Docker (по желанию, упрощает установку)
  4. n8n (можно установить через npm или docker)
  5. Скрипт, управляющий WhatsApp Web (на Puppeteer или аналогичных библиотеках)
  6. Постоянное интернет-соединение и стабильная сессия WhatsApp Web

Возможности автоматизации

  • Отправка уведомлений по заказам, бронированиям, доставке
  • Ответы на частые вопросы (FAQ)
  • Перенаправление запросов сотрудникам
  • Интеграция с 1С, Bitrix24, AmoCRM, Google Sheets и другими системами
  • Учет обращений в Excel или базе данных
  • Массовые рассылки (требует соблюдения закона о рекламе)

Ограничения и риски

  • WhatsApp Web не предназначен для официальной автоматизации — Meta может ограничить номер при злоупотреблении.
  • Поддержка вложений и стикеров ограничена.
  • Требуется постоянная сессия браузера, иначе подключение прервется.
  • Не подходит для обработки больших объёмов сообщений (лучше до 300–500 диалогов в день на один номер).


📌 План в n8n — «Ответ на входящее сообщение в WhatsApp»

🧩 Структура workflow (блоков):

  1. Webhook (входящий) — приём данных от скрипта WhatsApp Web.
  2. IF (условие) — проверка содержания сообщения.
  3. Set (подготовка данных) — формируем текст ответа.
  4. HTTP Request — отправка ответа обратно на сервер для доставки в WhatsApp.
  5. (опционально) логирование в Google Sheets, CRM или базу данных.

🔁 Подробный план по шагам

1. Webhook

  • Название: whatsapp_in
  • Метод: POST
  • Путь: /whatsapp/in
  • Ожидаемые поля:
json
CopyEdit
{
"chat_id": "79001234567",
"message": "Статус заказа 123"
}

2. IF

  • Условие: текст сообщения содержит ключевые слова.
  • Пример: message contains "статус" (регистронезависимо)

3. Set

  • Формируем ответ (например, заглушка):
json
CopyEdit
{
"chat_id": "={{$json["chat_id"]}}",
"reply": "Ваш заказ №123 в обработке"
}
  • Можно подставлять данные из CRM, БД и т.п.

4. HTTP Request (POST)

  • Название: send_to_whatsapp
  • URL: http://<ip_или_домен_сервера>:<порт>/send
  • Тело:
  • Формат: JSON
  • Содержимое:
json
CopyEdit
{
"chat_id": "={{$json["chat_id"]}}",
"message": "={{$json["reply"]}}"
}

5. (опционально) Google Sheets / Airtable / MySQL

  • Сохраняем информацию о входящем и отправленном сообщении:
  • Номер телефона
  • Дата/время
  • Исходный текст
  • Ответ
  • Тип запроса

⚙️ Как запустить

  1. Настройте n8n на порту 5678 или через reverse proxy (например, Nginx).
  2. Разрешите входящие POST-запросы на /webhook/whatsapp/in.
  3. В скрипте WhatsApp Web (на Node.js) укажите URL Webhook n8n, куда слать данные.
  4. Для отправки сообщений сервер принимает JSON с номером и текстом и открывает сессию WhatsApp Web от имени привязанного номера.

🔐 Безопасность

  • Настройте токен (в заголовке запроса) или IP-фильтрацию, чтобы избежать спама.
  • Используйте HTTPS для обмена между WhatsApp-сервером и n8n.

Пример логики на русском (внутри n8n)

Если пришло сообщение "Статус заказа 123" → отправь "Ваш заказ №123 ожидает отправки".
Можно сделать гибкую проверку и извлекать номер заказа через Regex (например: \d{3,6}) и подставлять в запрос к CRM.
N8N