Интеграция WhatsApp Web через QR: пошаговый разбор
Как подключить WhatsApp Web через QR-код, хранить сессию и стабильно отправлять сообщения через единый API.
Зачем WhatsApp Web через API
WhatsApp остаётся одним из самых конверсионных каналов клиентских уведомлений. Интеграция через WhatsApp Web позволяет быстро подключить рабочий аккаунт и запустить коммуникации без отдельного бот-процесса. В Релая такой канал работает в общей модели с MAX, Telegram и VK.
QR-флоу авторизации
Базовый поток выглядит так: создать сессию, запросить QR, подтвердить авторизацию в мобильном WhatsApp и отслеживать статус до authorized. После этого можно запускать синхронизацию чатов и отправку сообщений.
- Создание QR:
GET /auth/qr - Проверка статуса:
GET /auth/qr?trackId=... - Состояние профиля:
GET /status
Хранение и восстановление сессии
Ключевая часть — устойчивое хранение идентификатора сессии и её состояния. При рестартах сервиса важно поднимать сессию автоматически, а при деавторизации — корректно очищать состояние и просить пользователя пройти QR повторно.
Отправка сообщений
После авторизации отправка работает через тот же endpoint, что и другие каналы. Это позволяет переиспользовать очереди, дедупликацию clientId и общую историю inbox.
Reply/Forward/Edit/Delete
В production-профиле обычно мало просто отправлять текст. Нужны базовые операторские действия: ответить на конкретное сообщение, переслать кейс в другой чат, поправить опечатку и удалить ошибочно отправленный текст. В Relaya эти операции доступны в том же API-контуре WhatsApp, поэтому фронт и бизнес-логика не разъезжаются по каналам.
POST /messages/reply— ответ на сообщение поmessageIdPOST /messages/forward— пересылка между чатамиPOST /messages/edit— редактирование текстаPOST /messages/delete— удаление одного или нескольких сообщений
После каждой операции статус синхронизируется в inbox и дублируется в webhook-события, чтобы внутренние системы и операторский интерфейс видели одинаковую картину.
Надёжность и fallback
Для production-сценариев обычно включают fallback-цепочки: сначала WhatsApp, затем MAX или Telegram. Такой подход повышает итоговую доставку и снижает влияние временных ограничений одного канала.
Рабочий минимум перед запуском: мониторинг статуса сессии, idempotency через clientId, алерты на рост ошибок и резервный маршрут по каналам. Это даёт предсказуемый SLA даже в пиковые часы.
Создайте бесплатный MAX-профиль
Если хочется не просто читать, а сразу проверить сценарий руками: подключите MAX, отправьте себе тестовое сообщение и уже потом решайте, нужны ли другие каналы.