Как сделать ИИ чат-бота для WhatsApp: Cloud API, вебхуки и путь без кода

Марк Ингер, CEO · Pleep

ИИ-бот для WhatsApp собирается из трёх частей: официального канала WhatsApp Business Platform (Cloud API от Meta), вебхука, который принимает входящие сообщения, и модели, которая формулирует ответ. Отправка сообщения — это несколько строк кода, а вся сложность приходится на приём входящих, проверку подписи вебхука, шаблоны и 24-часовое окно. Если разработчика нет, те же три части закрывает готовая платформа за настройку в интерфейсе.

Ниже — обе дороги по шагам, с тем, что именно нужно завести в Meta, какие значения понадобятся в коде и какие ошибки съедают первый день.

Два пути и чем они отличаются

Свой бот на Cloud APIГотовая платформа
Что делаете выПриложение Meta, сервер, вебхук, логика диалогаПодключение номера и описание задачи агента
Нужен разработчикДаНет
Срок до первого ответа клиентуДни-неделиЧасы
Кто платит Meta за сообщенияВы напрямуюВы, через платформу или напрямую
Что вы контролируетеВсё, включая модель и хранение данныхНастройки в интерфейсе
Что ломаетсяВебхуки, токены, шаблоны, окно 24 часаТо же самое, но чинит платформа

Обе дороги ведут через один и тот же официальный канал. Автоматизация через обычное приложение WhatsApp нарушает правила Meta, и номер могут заблокировать, поэтому вариант «подключить неофициальный шлюз» здесь не рассматривается.

Что нужно завести до первой строчки кода

Эти вещи заводятся в Meta один раз и нужны при любом пути:

  • Meta Business Portfolio — бизнес-аккаунт в Meta Business Suite, где живут ваши активы. Портфолио выбирается при подключении WABA и потом не меняется, поэтому выбирайте сразу тот, что останется рабочим.
  • Facebook Page с правами администратора у вас лично.
  • Номер телефона. Либо новый, либо тот, что уже зарегистрирован в приложении WhatsApp Business.
  • Платёжное средство, привязанное к Meta. Без него исходящие шаблонные сообщения отправляться не будут.

Для сценария, где номер остаётся в приложении WhatsApp Business, добавляется ещё два требования: номер должен быть активен в приложении и не иметь предупреждений от Meta, а версия приложения — актуальной. Новый номер лучше «прогреть» неделю перед подключением: свежие номера чаще получают ограничения.

Шаг 1. Приложение, тестовый номер и песочница

В Developer Hub WhatsApp Business Platform заводится приложение и открывается доступ к Cloud API. Meta даёт бесплатные тестовые номера, примеры кода, вебхуки и песочницу, поэтому первые эксперименты не требуют ни купленного номера, ни платёжного средства.

Готовую коллекцию запросов удобно взять из рабочего пространства Meta в Postman — это тот же Cloud API, только без написания клиента.

Шаг 2. Phone Number ID и токен доступа

В консоли приложения, в разделе WhatsApp → Getting started, лежат два значения, вокруг которых строится всё остальное.

ЗначениеГде взятьНа что влияет
WA_PHONE_NUMBER_IDApp Dashboard → WhatsApp → Getting started → Phone number IDНомер-отправитель
CLOUD_API_ACCESS_TOKENТам же, временный токен; для рабочего стенда — токен системного пользователяАвторизация запросов
CLOUD_API_VERSIONВерсия Graph API, задаётся вручнуюФормат запросов и ответов

Временный токен живёт часы и нужен ровно для первого «Hello world». Для всего, что работает дольше одного вечера, берите токен системного пользователя: иначе бот замолчит посреди дня, и выглядеть это будет как поломка вебхука, хотя дело в истёкшем токене.

Шаг 3. Первое исходящее сообщение

Дальше отправляется один текстовый запрос на адрес Cloud API с указанием номера-отправителя, номера получателя и тела сообщения. Ответ должен вернуть код 200.

Важная деталь, из-за которой теряют полдня: код 200 не означает, что сообщение доставлено. Он означает, что Cloud API принял запрос. Если клиенту ничего не пришло, почти всегда дело в окне 24 часа (см. ниже), а не в коде.

Отдельно про SDK: официальный Node.js SDK для Cloud API архивирован. Его quickstart всё ещё полезен как описание переменных окружения и минимального сценария, но закладывать архивный пакет в новый продакшен не стоит — работайте с HTTP-эндпоинтами напрямую или через свой тонкий клиент.

Шаг 4. Вебхук для входящих сообщений

Отправка — это половина бота. Чтобы принимать сообщения, нужен публичный HTTPS-адрес, который вы регистрируете как вебхук в настройках приложения. Meta подтверждает адрес при подключении, а затем шлёт на него события: входящие сообщения, статусы доставки и прочитанности, изменения.

Две вещи, которые нужно сделать сразу, а не «потом»:

  1. Проверять подпись входящих запросов. Иначе ваш эндпоинт открыт для любого, кто узнает URL. В официальном репозитории whatsapp-api-examples для этого есть готовый пример signature-validation-with-webhooks-payloads, а базовый приёмник — в receive-webhook-js.
  2. Отвечать на вебхук быстро и обрабатывать асинхронно. Meta ждёт быстрый ответ; генерацию ответа моделью выносите в очередь, иначе начнутся повторные доставки и дубли сообщений клиенту.

В том же репозитории лежат примеры для шаблонов (message-templates-js), медиа (media-messages-js) и интерактивных сообщений (interactive-messages-js) — это быстрее, чем собирать тела запросов по документации.

Шаг 5. Подключите модель

Логика «понял → уточнил → ответил» — это вызов модели между вебхуком и отправкой. У OpenAI Responses API для этого есть всё необходимое:

  • instructions — системная инструкция: кто агент, что он продаёт, чего не обещает;
  • input — текущее сообщение клиента;
  • tools — функции, которые модель вызывает сама: посмотреть цену, проверить слот, создать сделку в CRM;
  • previous_response_id или conversation — состояние многоходового диалога, чтобы бот помнил предыдущие реплики;
  • структурированный вывод — когда от модели нужен не текст, а поля: имя, город, бюджет, готовность к записи.

База знаний подключается через инструмент поиска по вашим документам. Главное правило формулируется в инструкции, а не в коде: чего нет в документах, того агент не придумывает, а обещает уточнить. Без этого пункта бот однажды уверенно назовёт несуществующую цену.

Шаг 6. Шаблоны, категории и окно 24 часа

Когда клиент пишет первым, открывается 24-часовое окно обслуживания: внутри него можно отвечать свободным текстом. После закрытия окна возобновить переписку можно только утверждённым шаблоном — это описано, например, в документации 360dialog про платные и бесплатные сообщения.

Meta делит сообщения на категории, и от категории зависит и модерация, и цена:

КатегорияДля чегоТипичный пример
ServiceОтветы внутри открытого окнаОтвет на вопрос клиента
UtilityТранзакционные уведомленияСтатус заказа, напоминание о записи
AuthenticationКоды подтвержденияОдноразовый пароль
MarketingПромо и реактивацияАкция, возврат неактивного клиента

Практический вывод для архитектуры бота: агент должен отвечать сразу, а сценарий follow-up — заранее иметь утверждённые шаблоны. Если вы планируете догонять клиентов через сутки, шаблоны нужно отправить на модерацию до запуска, а не после. Про механику массовых отправок есть отдельный разбор — как сделать рассылку в WhatsApp.

Путь без кода: что делает платформа

Готовая платформа закрывает ровно те же шаги: подключение через Meta, вебхуки, хранение диалогов, шаблоны, база знаний и передача человеку. Меняется не результат, а то, кто дежурит, когда истёк токен.

В WhatsApp-интеграции Pleep подключение идёт через вход в Facebook, после чего в карточке канала видно WABA ID и Phone Number ID — те же значения, что вы бы доставали руками. Перед подключением мастер проверяет готовность: есть ли Meta Business Portfolio, есть ли Facebook Page с правами администратора, зарегистрирован ли номер, привязано ли платёжное средство.

Выбирается один из двух режимов:

  • WhatsApp на телефоне. Номер остаётся в приложении WhatsApp Business, удалять его не нужно, вы продолжаете отвечать с телефона, а ИИ работает в тех же чатах.
  • WhatsApp и звонки. Отдельный номер полностью под управлением ИИ: отвечать вручную можно только через Pleep, зато этот номер можно подключить к голосовым звонкам.

Настройка агента идёт обычной перепиской, а не конструктором сценариев; заявки уходят в amoCRM или Битрикс24, запись — в Google Календарь или Altegio, наличие товара проверяется в МойСклад, счёт выставляется через Kaspi Pay. Агент работает на русском и казахском. Если подключение застревает на стороне Meta, доступен бесплатный 30-минутный звонок с помощью в настройке.

Тарифы: Light — 42 380 ₸/мес ($81.50) при 1 500 текстовых сообщениях и без голоса, Business — 68 380 ₸ ($131.50) при том же объёме. Цена складывается из базы и использования, минуты голосового агента считаются отдельно по 50 ₸ (или $0,12 при оплате в долларах), сборы Meta за сообщения идут сверху. Пробный период — 7 дней. Актуальные условия — в тарифах, остальные каналы и сервисы — на странице интеграций.

Сравнение локальных и глобальных платформ по цене, казахскому языку и официальному WABA собрано отдельно: лучший чат-бот для WhatsApp в Казахстане.

Чек-лист перед запуском

  1. Отправьте тестовое сообщение и дождитесь кода 200 и реальной доставки в телефон.
  2. Напишите боту с чужого номера и убедитесь, что вебхук получил событие.
  3. Проверьте подпись запроса на подделанном payload — эндпоинт должен его отклонить.
  4. Задайте вопрос, ответ на который есть в базе знаний, и вопрос, которого там нет.
  5. Дождитесь закрытия 24-часового окна и проверьте, что follow-up уходит шаблоном, а не свободным текстом.
  6. Проверьте передачу человеку: после перехвата менеджером бот не должен отвечать параллельно.
  7. Убедитесь, что заявка появилась в CRM вместе с контекстом диалога, а не только с фактом обращения.

Что ломается чаще всего

СимптомЧто проверить
200 от API, но клиент ничего не получилОткрыто ли 24-часовое окно; нужен ли здесь шаблон
Бот работал и внезапно замолчалИстёкший временный токен вместо токена системного пользователя
Вебхук не приходитПубличный HTTPS, подтверждение адреса, подписка на нужные события
Клиент получает по два одинаковых ответаМедленный ответ вебхуку и повторные доставки от Meta
Шаблон не отправляетсяСтатус модерации и категория сообщения
Бот придумывает ценыВ инструкции нет запрета отвечать вне базы знаний
Номер получил ограничениеАвтоматизация шла через обычное приложение, а не через официальный API

Частые вопросы

Можно ли сделать ИИ-бота для WhatsApp без официального API?

Технически такие шлюзы существуют, но автоматизация через обычное приложение WhatsApp нарушает правила Meta, и риск несёт тот номер, который уже знают ваши клиенты. Для рабочего бота используется только WhatsApp Business Platform.

Сколько времени занимает разработка своими силами?

Отправка первого сообщения — вечер. Рабочий бот с вебхуками, проверкой подписи, базой знаний, шаблонами и передачей в CRM — недели, и дальше его нужно поддерживать: токены, версии API, модерация шаблонов.

Нужен ли отдельный номер телефона?

Не обязательно. Номер, уже зарегистрированный в приложении WhatsApp Business, можно подключить так, что вы продолжите отвечать с телефона. Отдельный номер нужен, если тем же номером должен принимать и совершать голосовые звонки ИИ-агент.

Что такое Phone Number ID и чем он отличается от номера?

Номер — это то, что видит клиент. Phone Number ID — идентификатор этого номера внутри Cloud API, он подставляется в запросы на отправку. Оба значения находятся в консоли приложения и отображаются в карточке канала после подключения.

Почему приходит код 200, а сообщение не доставлено?

Код 200 подтверждает, что Cloud API принял запрос, а не что клиент получил сообщение. Чаще всего окно 24 часа уже закрылось: свободный текст в этот момент отправить нельзя, нужен утверждённый шаблон.

Какую модель выбрать для бота?

Для диалога с базой знаний и вызовом функций подходит любая современная модель с поддержкой инструментов и структурированного вывода. Практическая разница обычно не в модели, а в инструкции, качестве базы знаний и в том, что бот делает, когда ответа нет.

Можно ли обойтись без разработчика?

Да, если задача — отвечать, квалифицировать и записывать. Готовая платформа берёт на себя подключение через Meta, вебхуки, шаблоны и интеграции с CRM. Разработчик нужен, когда логика диалога завязана на вашу внутреннюю систему, которой нет среди готовых интеграций.

Как сделать ИИ чат-бота для WhatsApp: Cloud API, вебхуки и путь без кода | Блог Pleep