Полный каталог, составленный на основе схемы, доступен в разделе все примеры.
Что это такое
Узнайте о статусах сообщений WhatsApp: отправлено, доставлено, прочитано и ошибка доставки.Перед началом работы
- Создайте публичный эндпоинт HTTPS в своем приложении.
- Настройте эндпоинт webhook в YCloud для необходимых типов событий.
- Надежно сохраните секрет подписи эндпоинта (signing secret).
- Обеспечьте идемпотентность обработки событий.
Как это работает
YCloud отправляет HTTP-запросPOST при возникновении события. Проверьте подпись, надежно сохраните событие, верните ответ 2xx и обработайте длительные задачи асинхронно.
Запрос
Ниже приведены сценарии запросов, отправляемых на ваш Webhook URL. Используйтеid события как идентификатор доставки, а type — для маршрутизации полезной нагрузки (payload).
Ответ
Возвращайте статус2xx после успешного приема события.
Информацию о настройке эндпоинта, проверке подписи и логике повторных попыток см. в разделе Настройка webhook.
accepted. Обновления статуса сообщения инициируют отправку события webhook whatsapp.message.updated.
Обычно статус сообщения:
- Меняется на
failed, если нам не удалось доставить это сообщение. - Меняется на
sent, если сообщение возможно доставить, и позже может измениться наfailed,deliveredилиread. - Меняется на
deliveredилиread, если сообщение было доставлено на устройство получателя.
delivered могут поступать позже событий failed и наоборот, особенно если конечный пользователь использует несколько устройств.
Сообщение отправлено
В этом случае ваш эндпоинт webhook получил событие сообщенияsent:
- Параметр сообщения
statusимеет значениеsent, что означает, что сообщение находится в процессе передачи внутри систем WhatsApp. - Содержит информацию о диалоге, включая время истечения срока действия диалога и тип инициатора (origin type).
- Содержит предварительную сумму
pricingCategoryи валютуtotalPrice, которые могут быть списаны с вашего счета. - Содержит поле
wamid— исходный идентификатор сообщения на платформе WhatsApp, начинающийся сwamid..
Запрос
Ответ
Подтвердите доставку после надежного сохранения и обработки события.Пояснение
-
totalPrice— это только ориентировочная цена до момента доставки первого сообщения; она становится окончательной ценой, когдаstatusпринимает значениеdeliveredилиread. Баланс, заблокированный под отправленные, но еще не доставленные сообщения, станет доступен только после их аннулирования (отправленные сообщения, которые не были доставлены в течение 30 дней, аннулируются). -
Как правило, статус сообщения со значением
sentвскоре меняется наdeliveredилиread, за исключением следующих случаев:- Аккаунт WhatsApp получателя находится офлайн; отправленные вами сообщения WhatsApp не будут доставлены до тех пор, пока у получателя не появится стабильное интернет-соединение.
- Любое сообщение, отправленное контакту, который вас заблокировал, всегда будет отображать статус
sentи никогда не перейдет в статусdelivered. - Получатель отключил отчеты о прочтении, поэтому вы не получите отчеты со статусом
read. - Позже статус сообщения меняется на
failedс кодом ошибки131026, что означает «Message Undeliverable» (Сообщение не может быть доставлено) или «Receiver is incapable of receiving this message» (Получатель не может принять это сообщение). Чаще всего это связано с тем, что получатель не зарегистрирован или использует устаревшую версию WhatsApp. - Сообщение не было доставлено для поддержания высокого качества обслуживания пользователей. См. раздел Ограничения на отправку маркетинговых шаблонных сообщений на одного пользователя.
Сообщение доставлено
В этом случае ваш эндпоинт webhook получил событие сообщенияdelivered:
- Параметр сообщения
statusимеет значениеdelivered, что означает, что сообщение было доставлено на устройство получателя.
Запрос
Ответ
Подтвердите доставку после надежного сохранения и обработки события.Пояснение
- Это событие указывает на то, что сообщение, отправленное вашей компанией, было доставлено на устройство пользователя.
- Чтобы статус стал
read, сообщение сначала должно быть со статусомdelivered. В некоторых случаях, например, когда пользователь находится на экране чата в момент поступления сообщения, оно становитсяdeliveredиreadпрактически одновременно. В таком или похожих сценариях уведомлениеdeliveredне будет отправлено повторно, поскольку факт прочтения сообщения подразумевает, что оно уже доставлено. Такое поведение обусловлено внутренней оптимизацией. - Мы можем сгенерировать более 1 события webhook
deliveredдля одного и того же сообщения, особенно если конечный пользователь использует несколько устройств. - pricingModel: «PMP» — указывает, что применяется модель тарификации за каждое сообщение (per-message pricing). См. также whatsapp-message-pricing-updates
- pricingType
- regular — указывает, что сообщение подлежит оплате.
- free_customer_service — указывает, что сообщение бесплатно, так как оно было либо шаблонным сервисным сообщением (utility), либо нешаблонным сообщением, отправленным в рамках окна клиентского обслуживания.
- free_entry_point — указывает, что сообщение бесплатно, так как оно является частью переписки с бесплатной точки входа.
Сообщение прочитано
В этом случае ваша конечная точка Webhook получила событие сообщенияread:
- Поле
statusсообщения имеет значениеread, что означает, что сообщение было прочитано получателем.
Запрос
Ответ
Подтвердите доставку после надежного сохранения/принятия события.Пояснение
- Если получатель отключил отчеты о прочтении, вы не получите уведомления
readо прочтении сообщения.
Ошибка отправки сообщения
В этом случае ваша конечная точка Webhook получила событие сообщенияfailed:
- Поле
statusсообщения имеет значениеfailed. - Содержит
errroCode,errorMessageиwhatsappApiError.
Запрос
Ответ
Подтвердите доставку после надежного сохранения/принятия события.Пояснение
- Эти события предназначены для уведомления об изменении статуса исходящих сообщений, которые вы ранее отправили клиентам.
- Причиной сбоя отправки сообщений обычно являются недействительные параметры запроса, незарегистрированный номер телефона клиента и т. д. См. также раздел Ошибки WhatsApp для информации об обработке ошибок.
- Поле
whatsappApiErrorпередается, если мы пытались отправить это сообщение на платформу WhatsApp от Meta, чтобы помочь вам разобраться в деталях ошибки. См. также Коды ошибок Cloud API. - Плата за несостоявшиеся сообщения не взимается.

