Skip to main content

Что это такое

WhatsApp Messages API отправляет шаблонные, текстовые, графические, видео-, аудиосообщения, документы, стикеры, геолокации, интерактивные сообщения, контакты и реакции с подключенного бизнес-номера WhatsApp.

Перед началом работы

  • Сохраните свой API-ключ YCloud в YCLOUD_API_KEY.
  • Подключите WhatsApp Business Account и номер телефона к YCloud.
  • Получите номер телефона отправителя в формате E.164, а также номер телефона получателя, BSUID или родительский BSUID.
  • Используйте шаблон APPROVED для стандартных шаблонных отправок.
  • Сначала загрузите медиафайл, если сообщение ссылается на медиа-ID YCloud.

Как это работает

Выберите эндпоинт в зависимости от того, когда YCloud должен передать сообщение в WhatsApp Business API. Оба эндпоинта возвращают объект сообщения YCloud. Первоначальный ответ не подтверждает окончательную доставку. Последующие изменения статуса поступают через whatsapp.message.updated Webhooks.

Direct Send для сервисного контента

Direct Send позволяет отправлять подходящий сервисный контент или конвертировать существующий сервисный шаблон. Он работает с любым из эндпоинтов отправки. Эндпоинт sendDirectly управляет синхронной отправкой; сам по себе он не включает Direct Send. Ознакомьтесь с рекомендациями по Direct Send относительно критериев соответствия, запросов, конвертации шаблонов, лимитов и событий аккаунта.

Выбор оптимального времени отправки

Сопоставляйте время отправки с целью сообщения и местным временем получателя.
  • Отправляйте OTP и другие срочные сообщения немедленно. Используйте POST /whatsapp/messages/sendDirectly, если вашему рабочему процессу требуется результат отправки перед продолжением.
  • Отправляйте транзакционные уведомления сразу при наступлении соответствующего события, например оплаты, доставки или переноса встречи.
  • Планируйте маркетинговые сообщения на разумные часы в часовом поясе получателя. Используйте собственные данные о доставке, прочтении и конверсиях для тестирования различных временных интервалов для каждой аудитории вместо предположения об одном универсальном времени.
  • Запускайте запланированную кампанию с небольшой группы получателей. Проверьте показатели доставки, откликов и отписок перед отправкой остальной части аудитории.
  • Избегайте повторных отправок при задержке сообщения. Сохраняйте externalId и обрабатывайте whatsapp.message.updated Webhooks перед принятием решения о повторной попытке.

Запрос

Выберите один из приведенных выше эндпоинтов, затем используйте тело запроса, соответствующее типу сообщения. Значение from — это ваш подключенный бизнес-номер WhatsApp. Укажите получателя с помощью to в формате E.164 или с помощью recipient, задав BSUID или родительский BSUID.

Общие поля запроса

filterUnsubscribed и filterBlocked применяются только к POST /whatsapp/messages; они не применяются к sendDirectly. Отфильтрованное сообщение из очереди завершается ошибкой с RECIPIENT_UNSUBSCRIBED или RECIPIENT_IN_BLOCK_LIST в вебхуке статуса. Для синхронных отправок проверяйте согласие, отписку и блокировку на стороне вашего приложения.
Укажите как минимум одно из полей: to или recipient. Если указаны оба, YCloud использует to и игнорирует recipient.
Шаблоны аутентификации one-tap, zero-tap и copy-code требуют наличия номера телефона. Используйте to для таких типов шаблонов.

Примеры запросов

Ответ

В случае успешного выполнения возвращается объект сообщения YCloud. Первоначальный статус status: accepted означает, что YCloud принял запрос на отправку. Это не означает, что сообщение уже отправлено компанией Meta или доставлено пользователю WhatsApp.

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

Поля ответа

Статус доставки

Подпишитесь на Webhook-уведомления whatsapp.message.updated, чтобы получать последующие изменения статуса, такие как sent, failed, delivered или read. Используйте GET /whatsapp/messages/{id}, если вам требуется запросить данные о сообщении напрямую.
Для медиасообщений сначала загрузите файл с помощью POST /whatsapp/media/{phoneNumber}/upload, затем используйте полученный медиа-ID в теле сообщения.

Ограничения и устранение неполадок

  • Для обычной отправки шаблонов требуется шаблон со статусом APPROVED; шаблоны со статусом ARCHIVED не могут быть отправлены как обычные шаблонные сообщения.
  • Не повторяйте принятый запрос без стратегии идемпотентности. Повторный запрос может привести к отправке дубликата сообщения.
  • Используйте поля YCloud id, wamid, externalId и статус Webhook при диагностике доставки.
  • Проверьте whatsappApiError, если прямой запрос дошел до Meta, но был отклонен ею.
Сведения об ограничениях пропускной способности см. в разделе Ограничения частоты запросов.

Рекомендации по Direct Send

Отправляйте сервисный контент, конвертируйте шаблоны и отслеживайте события категорий и ограничений.

Рекомендации для рабочей среды

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

Использование business-scoped user ID (BSUID)

Отправляйте сообщения и совершайте звонки по BSUID, запрашивайте номера телефонов, управляйте записями контактов Meta и обрабатывайте поля BSUID в webhook-событиях.

Полные примеры интеграции

Полный процесс создания шаблонов и привязки переменных описан в разделах Примеры создания шаблонов и Примеры отправки сообщений. Используйте руководство Обработка ошибок WhatsApp, чтобы отличать отклонение запроса от последующих сбоев доставки, и раздел Реализация обработчика Webhook для проверки подписей и надежного приема обновлений статуса.