Почему WhatsApp Web, а не официальный API
Официальный API WhatsApp в России ограничен и требует регистрации через Meta (что может быть неприменимо из-за санкций, стоимости или ограничений по праву).
WhatsApp Web — это веб-версия мессенджера, которую можно автоматизировать через браузерное управление. Она работает через привязку к обычному номеру WhatsApp, без участия Meta API.
Что делает сервер в этой схеме
Чтобы связать WhatsApp Web с n8n, требуется промежуточный сервер. Он выполняет следующие задачи:
- Запускает браузер (например, через Puppeteer или аналог)
- — открывает WhatsApp Web, авторизуется через QR-код, поддерживает сессию.
- Слушает входящие сообщения
- — при получении новых сообщений он извлекает текст, отправителя, вложения.
- Отправляет данные в n8n (обычно через HTTP-запрос или webhook)
- — n8n получает данные и запускает автоматические сценарии.
- Получает команды от n8n для отправки сообщений обратно
- — таким образом, можно автоматически отвечать клиентам, отправлять статусы заказов, передавать уведомления.
Пример автоматизации
Сценарий: интернет-магазин получает сообщения от клиентов в WhatsApp.
- Клиент пишет: «Хочу узнать статус заказа 123».
- Сервер извлекает текст, определяет ключевое слово «статус» и номер.
- Данные передаются в n8n.
- n8n делает запрос к базе заказов.
- Получает статус и отправляет его обратно клиенту в WhatsApp.
Безопасность и хранение данных
- Сервер и n8n могут быть размещены внутри локальной сети или на VPS в РФ.
- Соединение может быть защищено HTTPS.
- Данные не покидают территорию РФ, что помогает соответствовать требованиям закона о персональных данных.
Технические требования
- Сервер с Linux (можно использовать VPS от российского хостинга)
- Node.js (для n8n и браузерной автоматизации)
- Docker (по желанию, упрощает установку)
- n8n (можно установить через npm или docker)
- Скрипт, управляющий WhatsApp Web (на Puppeteer или аналогичных библиотеках)
- Постоянное интернет-соединение и стабильная сессия WhatsApp Web
Возможности автоматизации
- Отправка уведомлений по заказам, бронированиям, доставке
- Ответы на частые вопросы (FAQ)
- Перенаправление запросов сотрудникам
- Интеграция с 1С, Bitrix24, AmoCRM, Google Sheets и другими системами
- Учет обращений в Excel или базе данных
- Массовые рассылки (требует соблюдения закона о рекламе)
Ограничения и риски
- WhatsApp Web не предназначен для официальной автоматизации — Meta может ограничить номер при злоупотреблении.
- Поддержка вложений и стикеров ограничена.
- Требуется постоянная сессия браузера, иначе подключение прервется.
- Не подходит для обработки больших объёмов сообщений (лучше до 300–500 диалогов в день на один номер).
📌 План в n8n — «Ответ на входящее сообщение в WhatsApp»
🧩 Структура workflow (блоков):
- Webhook (входящий) — приём данных от скрипта WhatsApp Web.
- IF (условие) — проверка содержания сообщения.
- Set (подготовка данных) — формируем текст ответа.
- HTTP Request — отправка ответа обратно на сервер для доставки в WhatsApp.
- (опционально) логирование в Google Sheets, CRM или базу данных.
🔁 Подробный план по шагам
1. Webhook
- Название: whatsapp_in
- Метод: POST
- Путь: /whatsapp/in
- Ожидаемые поля:
jsonCopyEdit{"chat_id": "79001234567","message": "Статус заказа 123"}
2. IF
- Условие: текст сообщения содержит ключевые слова.
- Пример: message contains "статус" (регистронезависимо)
3. Set
- Формируем ответ (например, заглушка):
jsonCopyEdit{"chat_id": "={{$json["chat_id"]}}","reply": "Ваш заказ №123 в обработке"}
- Можно подставлять данные из CRM, БД и т.п.
4. HTTP Request (POST)
- Название: send_to_whatsapp
- URL: http://<ip_или_домен_сервера>:<порт>/send
- Тело:
- Формат: JSON
- Содержимое:
jsonCopyEdit{"chat_id": "={{$json["chat_id"]}}","message": "={{$json["reply"]}}"}
5. (опционально) Google Sheets / Airtable / MySQL
- Сохраняем информацию о входящем и отправленном сообщении:
- Номер телефона
- Дата/время
- Исходный текст
- Ответ
- Тип запроса
⚙️ Как запустить
- Настройте n8n на порту 5678 или через reverse proxy (например, Nginx).
- Разрешите входящие POST-запросы на /webhook/whatsapp/in.
- В скрипте WhatsApp Web (на Node.js) укажите URL Webhook n8n, куда слать данные.
- Для отправки сообщений сервер принимает JSON с номером и текстом и открывает сессию WhatsApp Web от имени привязанного номера.
🔐 Безопасность
- Настройте токен (в заголовке запроса) или IP-фильтрацию, чтобы избежать спама.
- Используйте HTTPS для обмена между WhatsApp-сервером и n8n.
Пример логики на русском (внутри n8n)
Если пришло сообщение "Статус заказа 123" → отправь "Ваш заказ №123 ожидает отправки".
Можно сделать гибкую проверку и извлекать номер заказа через Regex (например: \d{3,6}) и подставлять в запрос к CRM.