> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# whatsapp.echo_message.updated

> Происходит при получении статуса исходящего эхо-сообщения для Public REST API Agent; также могут доставляться запоздалые статусы более низкого ранга.

Используйте `whatsapp.echo_message.updated` для обработки этого события на вашей конечной точке вебхука.

## Триггеры

Происходит при получении статуса исходящего эхо-сообщения для Public REST API Agent; также могут доставляться запоздалые статусы более низкого ранга.

Подпишитесь на `whatsapp.echo_message.updated`, когда будете [настраивать конечную точку вебхука](https://docs.ycloud.com/ru/api-reference/guides/api-fundamentals/configure-webhooks.md).

Это событие доступно только для агентов, подключенных через Public REST API. В обновленных эхо-сообщениях опускается содержимое сообщения и `type`. Запоздалые статусы более низкого ранга могут приходить после `read`; записывайте их без понижения сохраненного статуса сообщения.

## Синтаксис

YCloud отправляет HTTP-запрос `POST` на ваш настроенный URL Webhook. Следующая структура показывает один из вариантов полезной нагрузки. Значения в угловых скобках являются плейсхолдерами; их типы перечислены в разделе **Параметры**. Необязательные поля и другие варианты описаны ниже.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "<ID>",
  "type": "whatsapp.echo_message.updated",
  "apiVersion": "<API_VERSION>",
  "createTime": "<CREATE_TIME>",
  "whatsappMessage": {
    "id": "<ID>",
    "wamid": "<WAMID>",
    "wabaId": "<WABA_ID>",
    "from": "<FROM>",
    "to": "<TO>",
    "recipientUserId": "<RECIPIENT_USER_ID>",
    "status": "<STATUS>",
    "updateTime": "<UPDATE_TIME>",
    "deliverTime": "<DELIVER_TIME>"
  }
}
```

## Параметры

Проверьте HTTP-заголовок `YCloud-Signature` перед обработкой тела JSON. См. раздел [проверка подписи](https://docs.ycloud.com/ru/api-reference/guides/api-fundamentals/configure-webhooks.md).

### Оболочка события

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `id` | string | Да | Уникальный идентификатор события. Минимальная длина: `6`. Максимальная длина: `128`. |
| `type` | string | Да | Всегда `whatsapp.echo_message.updated`. |
| `apiVersion` | string | Да | Версия API, использованная для формирования этого события. |
| `createTime` | string (date-time) | Да | Время создания этого события в формате [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). Например, `2022-06-01T12:00:00.000Z`. |

### Полезная нагрузка события

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `whatsappMessage` | object | Да | Специфичная для события полезная нагрузка `whatsappMessage`. |

Четыре общих поля оболочки являются обязательными. Поля полезной нагрузки зависят от варианта события. В каждой таблице объектов столбец **Обязательный** применяется, если присутствует родительский объект. Необязательные поля могут быть опущены; наличие в примере не делает поле обязательным.

#### whatsappMessage

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `id` | string | Да | Идентификатор сообщения YCloud. Используйте его для сопоставления событий создания и обновления эхо-сообщений. |
| `wamid` | string | Нет | Исходный идентификатор сообщения на платформе WhatsApp, если доступен. |
| `wabaId` | string | Нет | Идентификатор WhatsApp Business Account из исходного обратного вызова, если доступен. |
| `from` | string | Нет | Номер бизнес-отправителя в формате E.164, если доступен. |
| `to` | string | Нет | Номер получателя в формате E.164, когда обратный вызов идентифицирует клиента по номеру телефона. |
| `recipientUserId` | string | Нет | Идентификатор пользователя в рамках WhatsApp Business (BSUID) для получателя, если предоставлен обратным вызовом. |
| `parentRecipientUserId` | string | Нет | Родительский идентификатор пользователя в рамках WhatsApp Business для получателя, если предоставлен обратным вызовом. |
| `type` | string | Нет | Тип сообщения, скопированный из поддерживаемого обратного вызова провайдера. Текущие значения включают text, interactive, image, video, audio, document, sticker, location, contacts и reaction. Клиенты должны корректно обрабатывать возможные будущие значения. |
| `text` | object | Нет | WhatsApp Message Text Object. |
| `image` | object | Нет | Метаданные медиа, скопированные из обратного вызова эхо-сообщения Meta Business Agent. |
| `video` | object | Нет | Метаданные медиа, скопированные из обратного вызова эхо-сообщения Meta Business Agent. |
| `audio` | object | Нет | Метаданные медиа, скопированные из обратного вызова эхо-сообщения Meta Business Agent. |
| `document` | object | Нет | Метаданные медиа, скопированные из обратного вызова эхо-сообщения Meta Business Agent. |
| `sticker` | object | Нет | Метаданные медиа, скопированные из обратного вызова эхо-сообщения Meta Business Agent. |
| `location` | object | Нет | Используется для сообщений типа `location`. |
| `interactive` | object | Нет | Используется для сообщений `interactive`. |
| `contacts` | object\[] | Нет | Элементы массива описаны ниже. |
| `reaction` | object | No | Когда пользователь реагирует на сообщения с помощью эмодзи, типу сообщения присваивается значение `reaction`, и это поле включается в ответ. |
| `context` | object | Нет | Используется для указания конкретного сообщения, на которое вы отвечаете. Ответ может быть любого типа. |
| `status` | string | Нет | Статус сообщения WhatsApp. Одно из значений: `accepted`, `failed`, `sent`, `delivered`, `read`.<ul><li>`accepted`: запрос на отправку сообщения принят нашей системой.</li><li>`failed`: сообщение, отправленное вашей компанией, не удалось доставить.</li><li>`sent`: сообщение, отправленное вашей компанией, находится в процессе передачи в системах WhatsApp.</li><li>`delivered`: сообщение, отправленное вашей компанией, доставлено на устройство пользователя.</li><li>`read`: сообщение, отправленное вашей компанией, прочитано пользователем.</li></ul> |
| `errorCode` | string | Нет | Исходный код ошибки, если статус — failed и поставщик его предоставил. |
| `errorMessage` | string | Нет | Исходный заголовок ошибки, когда статус — failed и провайдер предоставил его. |
| `createTime` | string (date-time) | Нет | Исходное время эхо-сообщения для созданного события в формате RFC 3339. |
| `updateTime` | string (date-time) | Нет | Время исходного статуса для обновленного события в формате RFC 3339. |
| `sendTime` | string (date-time) | Нет | Исходное время эхо-сообщения для событий создания или исходное время статуса, когда текущее событие сообщает о статусе sent. |
| `deliverTime` | string (date-time) | Нет | Время исходного статуса, когда текущее событие сообщает о доставке. |
| `readTime` | string (date-time) | Нет | Исходное время статуса, когда текущее событие сообщает о прочтении. |

> [accordion] whatsappMessage.text
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `body` | string | Да | Обязательно для текстовых сообщений. Текст текстового сообщения, который может содержать URL-адреса, начинающиеся с http\:// или https\://, а также форматирование. Доступные варианты форматирования приведены здесь. Если вы включаете URL-адреса в текст и хотите отображать окно предварительного просмотра в текстовых сообщениях (preview\_url: true), убедитесь, что URL-адрес начинается с http\:// или https\:// — предпочтительны URL-адреса https\://. Необходимо указать имя хоста, так как IP-адреса не сопоставляются. Максимальная длина: 4096 символов.Максимальная длина: `4096`. |
> | `preview_url` | boolean | Нет | По умолчанию WhatsApp распознает URL-адреса и делает их кликабельными, но вы также можете включить блок предварительного просмотра с дополнительной информацией о ссылке. Установите для этого поля значение true, если хотите включить блок предпросмотра URL. В большинстве случаев получатель увидит кликабельный URL, если вы отправите URL, установите для preview\_url значение true и передадите объект body со ссылкой http или https. Предварительный просмотр URL отображается только после выполнения одного из следующих условий:<ul><li>Компания отправила пользователю шаблон сообщения.</li><li>Пользователь начинает диалог с помощью ссылки «Прямая связь» ("click to chat").</li><li>Пользователь добавляет номер телефона компании в свою адресную книгу и начинает диалог. По умолчанию: `false`.</li></ul> |

> [accordion] whatsappMessage.image
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | ID медиафайла у провайдера, если предоставлен в обратном вызове. |
> | `link` | string | Нет | URL медиафайла у провайдера, если передан в callback-запросе. |
> | `caption` | string | Нет | Подпись к медиафайлу, если передана в callback-запросе. |
> | `filename` | string | Нет | Исходное имя файла, если передано в callback-запросе. |
> | `mime_type` | string | Нет | MIME-тип провайдера, скопированный из callback-запроса. |

> [accordion] whatsappMessage.video
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | ID медиафайла у провайдера, если передан в callback-запросе. |
> | `link` | string | Нет | URL медиафайла у провайдера, если передан в callback-запросе. |
> | `caption` | string | Нет | Подпись к медиафайлу, если передана в callback-запросе. |
> | `filename` | string | Нет | Исходное имя файла, если передано в callback-запросе. |
> | `mime_type` | string | Нет | MIME-тип провайдера, скопированный из callback-запроса. |

> [accordion] whatsappMessage.audio
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | ID медиафайла у провайдера, если передан в callback-запросе. |
> | `link` | string | Нет | URL медиафайла у провайдера, если передан в callback-запросе. |
> | `caption` | string | Нет | Подпись к медиафайлу, если передана в callback-запросе. |
> | `filename` | string | Нет | Исходное имя файла, если передано в callback-запросе. |
> | `mime_type` | string | Нет | MIME-тип провайдера, скопированный из callback-запроса. |

> [accordion] whatsappMessage.document
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | ID медиафайла у провайдера, если передан в callback-запросе. |
> | `link` | string | Нет | URL медиафайла у провайдера, если передан в callback-запросе. |
> | `caption` | string | Нет | Подпись к медиафайлу, если передана в callback-запросе. |
> | `filename` | string | Нет | Исходное имя файла, если передано в callback-запросе. |
> | `mime_type` | string | Нет | MIME-тип провайдера, скопированный из callback-запроса. |

> [accordion] whatsappMessage.sticker
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | ID медиафайла у провайдера, если передан в callback-запросе. |
> | `link` | string | Нет | URL медиафайла у провайдера, если передан в callback-запросе. |
> | `caption` | string | Нет | Подпись к медиафайлу, если передана в callback-запросе. |
> | `filename` | string | Нет | Исходное имя файла, если передано в callback-запросе. |
> | `mime_type` | string | Нет | MIME-тип провайдера, скопированный из callback-запроса. |

> [accordion] whatsappMessage.location
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `latitude` | number (double) | Да | Широта местоположения. |
> | `longitude` | number (double) | Да | Долгота местоположения. |
> | `name` | string | Нет | Название местоположения. |
> | `address` | string | Нет | Адрес местоположения. Отображается только при наличии `name`. |

> [accordion] whatsappMessage.interactive
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `type` | string | Нет | **Обязательно.** Тип интерактивного сообщения, которое вы хотите отправить.<ul><li>`button`: используйте для кнопок быстрого ответа (Reply Buttons).</li><li>`list`: используйте для сообщений со списком (List Messages).</li><li>`cta_url`: используйте для сообщений с кнопкой-ссылкой с призывом к действию (CTA URL Button Messages).</li><li>`product`: используйте для сообщений об одном товаре (Single Product Messages).</li><li>`product_list`: используйте для сообщений с несколькими товарами (Multi-Product Messages).</li><li>`catalog_message`: используйте для сообщений каталога (Catalog Messages).</li><li>`location_request_message`: используйте для сообщений с запросом геолокации (Location Request Messages).</li><li>`order_details`: используйте для сообщений с подробной информацией о заказе (Order Details Messages).</li><li>`order_status`: используйте для сообщений о статусе заказа (Order Status Messages).</li><li>`voice_call`: используйте для сообщений голосового вызова (Voice Call Messages).</li><li>`flow`: используйте для сообщений Flow (Flow Messages).</li></ul> |
> | `action` | object | Нет | **Обязательно.** Действие, которое пользователь должен выполнить после прочтения сообщения `interactive`. |
> | `body` | object | Нет | Необязательно для типа `product`. Обязательно для других типов сообщений. |
> | `header` | object | Нет | Обязательно для типа `product_list`. Необязательно для других типов. |
> | `footer` | object | Нет | Необязательно. Объект с нижним колонтитулом (footer) сообщения. |

> [accordion] whatsappMessage.interactive.action
>
> | Параметр | Тип | Обязательно | Описание |
> | - | - | - | - |
> | `buttons` | object\[] | Нет | Обязательно для кнопок быстрого ответа (Reply Buttons). Можно указать до 3 кнопок. |
> | `button` | string | Нет | Обязательно для сообщений со списком (List Messages). Текст кнопки. Не может быть пустой строкой и должен быть уникальным в пределах сообщения. Эмодзи поддерживаются, markdown — нет. Максимальная длина: 20 символов.Максимальная длина: `20`. |
> | `catalog_id` | string | Нет | Обязательно для Single Product Messages и Multi-Product Messages. Уникальный идентификатор каталога Facebook, привязанного к вашему WhatsApp Business Account. Этот ID можно получить через [Meta Commerce Manager](https://business.facebook.com/commerce). |
> | `product_retailer_id` | string | Нет | Обязательно для Single Product Messages и Multi-Product Messages. Уникальный идентификатор товара в каталоге. |
> | `sections` | object\[] | Нет | Обязательно для List Messages и Multi-Product Messages. Массив объектов секций. Минимум 1, максимум 10. |
> | `name` | string | Нет | Название действия. Обязательно для кнопок с призывом к действию (CTA).<ul><li>`cta_url`: используйте для кнопок-ссылок с призывом к действию (CTA URL buttons).</li><li>`catalog_message`: используйте для Catalog Messages.</li><li>`send_location`: используйте для кнопок запроса геолокации (Location Request buttons).</li><li>`flow`: используйте для кнопок Flow.</li><li>`review_and_pay`: используйте для кнопок деталей заказа (Order Details buttons).</li><li>`review_order`: используйте для кнопок статуса заказа (Order Status buttons).</li><li>`voice_call`: используйте для кнопок голосового вызова (Voice Call buttons).</li></ul> |
> | `parameters` | object | Нет | Параметры действия. Обязательно для кнопок с призывом к действию (CTA). |

> [accordion] whatsappMessage.interactive.action.buttons\[]
>
> | Параметр | Тип | Обязательно | Описание |
> | - | - | - | - |
> | `type` | string | Нет | Единственный поддерживаемый тип — `reply` (для Reply Button). |
> | `reply` | object | Нет | Поля объекта перечислены ниже. |

> [accordion] whatsappMessage.interactive.action.buttons\[].reply
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `title` | string | Нет | Текст кнопки. Не может быть пустой строкой и должен быть уникальным в пределах сообщения. Поддерживаются эмодзи, markdown не поддерживается. Максимальная длина: 20 символов.Максимальная длина: `20`. |
> | `id` | string | Нет | Уникальный идентификатор вашей кнопки. Этот ID возвращается в webhook при нажатии пользователем на кнопку. Максимальная длина: 256 символов. Не допускаются начальные и конечные пробелы при установке ID.Максимальная длина: `256`. |

> [accordion] whatsappMessage.interactive.action.sections\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `title` | string | Нет | **Обязательно, если в сообщении более одного раздела.** Заголовок раздела. Максимальная длина: 24 символа.Максимальная длина: `24`. |
> | `rows` | object\[] | Нет | Содержит список строк. Всего во всех разделах может быть не более 10 строк. Каждая строка должна иметь заголовок (максимальная длина: 24 символа) и ID (максимальная длина: 200 символов). Вы можете добавить описание (максимальная длина: 72 символа), но это необязательно. |
> | `product_items` | object\[] | Нет | Обязательно для многотоварных сообщений (Multi-Product Messages). Массив объектов товаров. Минимум 1 товар на раздел и максимум 30 товаров во всех разделах вместе. |

> [accordion] whatsappMessage.interactive.action.sections\[].rows\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | Уникальный ID строки. Максимальная длина: 200 символов.Максимальная длина: `200`. |
> | `title` | string | Нет | Текст заголовка строки. Максимальная длина: 24 символа.Максимальная длина: `24`. |
> | `description` | string | Нет | Текст описания строки. Максимальная длина: 72 символа.Максимальная длина: `72`. |

> [accordion] whatsappMessage.interactive.action.sections\[].product\_items\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `product_retailer_id` | string | Нет | Обязательно для многотоварных сообщений (Multi-Product Messages). Уникальный идентификатор товара в каталоге. |

> [accordion] whatsappMessage.interactive.action.parameters
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `display_text` | string | Нет | Текст кнопки CTA URL. Максимальная длина: 20 байт.Максимальная длина: `20`. |
> | `url` | string | Нет | URL кнопки CTA URL. |
> | `thumbnail_product_retailer_id` | string | Нет | Артикул товара (SKU). Обозначается как **Content ID** в [Commerce Manager](https://business.facebook.com/commerce). Миниатюра этого товара будет использоваться в качестве изображения заголовка сообщения. |
> | `flow_message_version` | string | Нет | Используется для кнопок `flow`. Значение должно быть "3". |
> | `flow_token` | string | Нет | Используется для кнопок `flow`. Токен Flow, созданный компанией для использования в качестве идентификатора. По умолчанию `unused`. |
> | `flow_id` | string | Нет | Обязательно при определенных условиях для кнопок `flow`. Уникальный ID Flow, предоставленный WhatsApp. Не может использоваться вместе с параметром `flow_name`. |
> | `flow_name` | string | Нет | Условно обязательно для кнопок `flow`. Название созданного вами Flow. Не может использоваться с параметром `flow_id`. При изменении названия Flow потребуется обновить этот параметр в соответствии с новым названием. |
> | `flow_cta` | string | Нет | Обязательно для кнопок `flow`. Текст на кнопке CTA. Например: "Open flow!". Максимальная длина: 20 символов.Максимальная длина: `20`. |
> | `flow_action` | string | Нет | Используется для кнопок `flow`. Либо `navigate`, либо `data_exchange`. По умолчанию `navigate`. |
> | `flow_action_payload` | object | Нет | Обязательно, если `flow_action` имеет значение `navigate`. В противном случае должно быть опущено. |
> | `reference_id` | string | Нет | Обязательно для кнопок `review_and_pay`. Уникальный идентификатор заказа, предоставленный компанией. Чувствителен к регистру, не может быть пустой строкой и может содержать только английские буквы, цифры, подчеркивания, дефисы или точки, а также не должен превышать 35 символов.Параметр `reference_id` должен быть уникальным для каждого сообщения order\_details конкретной компании. Если требуется отправить несколько сообщений order\_details для одного и того же заказа, рекомендуется включить порядковый номер в reference\_id (например, "BM345A-12") для обеспечения уникальности reference\_id. |
> | `type` | string | Нет | Обязательно для кнопок `review_and_pay`. Тип товаров, оплачиваемых в этом заказе. В настоящее время поддерживаются варианты `digital-goods` и `physical-goods`. |
> | `beneficiaries` | object\[] | Нет | Обязательно для кнопок `review_and_pay`. Массив бенефициаров для этого заказа. Бенефициар — это предполагаемый получатель для доставки физических товаров по заказу. Информация о бенефициаре не отображается пользователям, но требуется по юридическим и комплаенс-причинам. |
> | `currency` | string | Нет | Обязательно для кнопок `review_and_pay`. Валюта для этого заказа. В настоящее время единственным поддерживаемым значением является `INR`. |
> | `total_amount` | object | Нет | Обязательно для кнопок `review_and_pay`. Общая сумма для этого заказа. |
> | `order` | object | Нет | Обязательно для кнопок `review_and_pay` или `review_order`.Для кнопок `review_and_pay` предоставляет `status`, `items`, `subtotal`, `tax` заказа и т. д.Для кнопок `review_order` предоставляет только `status` и `description` заказа. |
> | `payment_settings` | object\[] | Нет | Обязательно для кнопок `review_and_pay`. Настройки оплаты для заказа. |

> [accordion] whatsappMessage.interactive.action.parameters.flow\_action\_payload
>
> | Параметр | Тип | Обязательно | Описание |
> | - | - | - | - |
> | `screen` | string | Нет | Идентификатор экрана, отображаемого первым. Он должен быть экраном **entry** . |
> | `data` | object | Нет | Необязательные входные данные для первого экрана Flow. Если указаны, должны быть непустым объектом. |

> [accordion] whatsappMessage.interactive.action.parameters.beneficiaries\[]
>
> | Параметр | Тип | Обязательно | Описание |
> | - | - | - | - |
> | `name` | string | Да | Имя физического лица или название компании, получающей физические товары. Не может превышать 200 символов.Максимальная длина: `200`. |
> | `address_line1` | string | Да | Адрес доставки (номер дома/строения, название улицы и т. д.). Не может превышать 100 символов.Максимальная длина: `100`. |
> | `address_line2` | string | Нет | Адрес доставки (ориентир, район и т. д.). Не может превышать 100 символов.Максимальная длина: `100`. |
> | `city` | string | Да | Название города. |
> | `state` | string | Да | Название штата/региона. |
> | `country` | string | Да | Название страны. В настоящее время единственным поддерживаемым значением является `India`. |
> | `postal_code` | string | Да | 6-значный почтовый индекс адреса доставки.Минимальная длина: `6`. Максимальная длина: `6`. |

> [accordion] whatsappMessage.interactive.action.parameters.total\_amount
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее сумму, умноженную на offset. Например, ₹12.34 имеет значение 1234. |
> | `description` | string | Нет | Используйте только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используйте только для `discount`. Текст, используемый для описания поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `status` | string | Нет | Единственное поддерживаемое значение в сообщении `order_details` — `pending`. В сообщении `order_status` поле `status` может принимать значения: `pending`, `processing`, `partially_shipped`, `shipped`, `completed` или `canceled`. |
> | `type` | string | Нет | Единственное поддерживаемое значение — `quick_pay`. При передаче этого поля кнопка «Review and Pay» скрывается, и в блоке с деталями заказа отображается только кнопка «Pay Now». |
> | `catalog_id` | string | Нет | Уникальный идентификатор каталога Facebook, используемого компанией. Если вы не передаете это поле, вам необходимо указать следующие поля внутри объекта items: `country_of_origin`, `importer_name` и `importer_address`. |
> | `items` | object\[] | Нет | Массив позиций в заказе. |
> | `subtotal` | object | Нет | Значение **должно быть равно** сумме `order.amount.value` \* `order.amount.quantity`. |
> | `tax` | object | Нет | Информация о налогах для этого заказа. |
> | `shipping` | object | Нет | Стоимость доставки заказа. |
> | `discount` | object | Нет | Сумма скидки для этого заказа. |
> | `expiration` | object | Нет | Срок действия этого заказа. |
> | `description` | string | Нет | **Необязательно.** Текст для передачи информации о статусе. Может быть полезен при отправке отмены. Максимальный лимит — 120 символов.Максимальная длина: `120`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.items\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `retailer_id` | string | Нет | Идентификатор контента для позиции в заказе из вашего каталога. |
> | `name` | string | Да | Название позиции для отображения пользователю. Не может превышать 60 символов.Максимальная длина: `60`. |
> | `image` | object | Нет | Пользовательское изображение позиции для отображения пользователю. |
> | `amount` | object | Да | Цена за единицу товара. |
> | `sale_amount` | object | Нет | Цена за единицу товара со скидкой. Должна быть меньше исходной суммы. Если указано, это поле используется для расчета промежуточного итога. |
> | `quantity` | integer (int32) | Да | Количество единиц товара в заказе. |
> | `country_of_origin` | string | Нет | Обязательно, если отсутствует `catalog_id`. Страна происхождения товара. |
> | `importer_name` | string | Нет | Обязательно, если отсутствует `catalog_id`. Название компании-импортера. |
> | `importer_address` | string | Нет | Обязательно, если отсутствует `catalog_id`. Адрес компании-импортера. |

> [accordion] whatsappMessage.interactive.action.parameters.order.items\[].image
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | \*\*Используйте это, когда медиафайл загружен на серверы WhatsApp.\*\*Укажите идентификатор медиаобъекта, полученный из WhatsApp media upload API (\[[https://docs.ycloud.com/reference/whatsapp\_media-upload#/](https://docs.ycloud.com/reference/whatsapp_media-upload#/)]\([https://docs.ycloud.com/reference/whatsapp\_media-upload#/)).Примечание](https://docs.ycloud.com/reference/whatsapp_media-upload#/\)\).Примечание): необходимо указать либо `id`, либо `link`. Если указаны оба, приоритет имеет `id`. |
> | `link` | string | Нет | \*\*Используйте это при отправке медиафайлов напрямую с вашего сервера.\*\*Протокол и URL медиафайла для отправки. Используйте только с URL-адресами HTTP/HTTPS.Примечание: WhatsApp Cloud API кэширует медиаресурсы на 10 минут. Чтобы гарантировать получение актуального контента, добавьте к URL случайные параметры запроса.Примечание: необходимо указать либо `id`, либо `link`. Если указаны оба, приоритет имеет `id`, а `link` будет проигнорирован. |
> | `caption` | string | Нет | Описывает указанный медиафайл `image`, `gif`, `video` или `document`. Не применимо в `header` сообщений `template` или `interactive`. |
> | `filename` | string | Нет | Описывает имя файла для конкретного документа. Используйте только с медиафайлами `document`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.items\[].amount
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее сумму, умноженную на смещение (offset). Например, ₹12.34 имеет значение 1234. |
> | `description` | string | Нет | Используйте только для `tax`, `shipping` или `discount`. Описание суммы. Максимальный лимит — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используйте только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.items\[].sale\_amount
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее значение суммы, умноженное на смещение (offset). Например, ₹12.34 соответствует значению 1234. |
> | `description` | string | Нет | Используйте только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используйте только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.subtotal
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее значение суммы, умноженное на смещение (offset). Например, ₹12.34 соответствует значению 1234. |
> | `description` | string | Нет | Используйте только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используйте только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.tax
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее значение суммы, умноженное на смещение (offset). Например, ₹12.34 соответствует значению 1234. |
> | `description` | string | Нет | Используйте только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используйте только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.shipping
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее значение суммы, умноженное на смещение (offset). Например, ₹12.34 соответствует значению 1234. |
> | `description` | string | Нет | Используется только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используется только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.discount
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `offset` | integer (int32) | Да | Должно быть `100` для `INR`. |
> | `value` | integer (int32) | Да | Положительное целое число, представляющее значение суммы, умноженное на смещение (offset). Например, значение для ₹12.34 равно 1234. |
> | `description` | string | Нет | Используется только для `tax`, `shipping` или `discount`. Описание суммы. Максимальная длина — 60 символов.Максимальная длина: `60`. |
> | `discount_program_name` | string | Нет | Используется только для `discount`. Текст, используемый для определения поощрительных заказов. Если заказ поощрительный, продавцу необходимо указать эту информацию. Максимальная длина — 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.interactive.action.parameters.order.expiration
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `timestamp` | string | Да | Строка со значением временной метки UTC в секундах, указывающей время истечения срока действия заказа. Минимальный порог — 300 секунд. |
> | `description` | string | Нет | Текстовое пояснение истечения срока действия.Максимальная длина: `120`. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `type` | string | Да | Должно быть установлено на `payment_gateway`. |
> | `payment_gateway` | object | Да | Объект, описывающий информацию о платежном аккаунте. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[].payment\_gateway
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `type` | string | Да | Тип платежа. Необходимо установить значение `billdesk`, `razorpay`, `payu` или `zaakpay`, если вы подключили платежный шлюз BillDesk, Razorpay, PayU или Zaakpay для приема платежей. |
> | `configuration_name` | string | Да | Имя предварительно настроенной конфигурации платежей для использования в этом заказе; длина не должна превышать 60 символов. Это значение должно совпадать с конфигурацией платежей, настроенной в WhatsApp Business Manager.Максимальная длина: `60`. |
> | `billdesk` | object | Нет | Дополнительная информация для BillDesk. Пользовательские поля (extra) используются для хранения любой информации, относящейся к конкретному заказу. Каждое поле extra может содержать максимум 120 символов. |
> | `payu` | object | Нет | Дополнительная информация для PayU. Пользовательские поля (udf) используются для хранения любой информации, относящейся к конкретному заказу. Каждое поле UDF может содержать максимум 255 символов. |
> | `razorpay` | object | Нет | Дополнительная информация для Razorpay. |
> | `zaakpay` | object | Нет | Дополнительная информация для Zaakpay. Пользовательские поля (extra) используются для хранения любой информации, относящейся к конкретному заказу. Каждое дополнительное поле может содержать не более 180 символов. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[].payment\_gateway.billdesk
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `additional_info1` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info2` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info3` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info4` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info5` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info6` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |
> | `additional_info7` | string | Нет | Пользовательская информация об этом заказе для BillDesk.Максимальная длина: `120` символов. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[].payment\_gateway.payu
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `udf1` | string | Нет | Пользовательская информация об этом заказе для PayU.Максимальная длина: `255` символов. |
> | `udf2` | string | Нет | Пользовательская информация об этом заказе для PayU.Максимальная длина: `255` символов. |
> | `udf3` | string | Нет | Пользовательская информация об этом заказе для PayU.Максимальная длина: `255` символов. |
> | `udf4` | string | Нет | Пользовательская информация об этом заказе для PayU.Максимальная длина: `255` символов. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[].payment\_gateway.razorpay
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `receipt` | string | Нет | Номер квитанции, соответствующий этому заказу, заданный для вашей внутренней ссылки. Поддерживается максимальная длина 40 символов, при этом минимальная длина должна быть больше 0 символов. |
> | `notes` | object | Нет | Объект может представлять собой пары «ключ-значение» максимум с 15 ключами, при этом длина каждого значения ограничена 256 символами. |

> [accordion] whatsappMessage.interactive.action.parameters.payment\_settings\[].payment\_gateway.zaakpay
>
> | Параметр | Описание | Тип | Обязательный |
> | - | - | - | - |
> | `extra1` | string | Нет | Пользовательская информация об этом заказе для Zaakpay.Максимальная длина: `180` символов. |
> | `extra2` | string | Нет | Пользовательская информация об этом заказе для Zaakpay.Максимальная длина: `180` символов. |

> [accordion] whatsappMessage.interactive.body
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `text` | string | Нет | Основной текст сообщения. Поддерживаются эмодзи и markdown. Максимальная длина: 1024 символа.Максимальная длина: `1024`. |

> [accordion] whatsappMessage.interactive.header
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `type` | string | Нет | **Обязательный.** Тип заголовка, который вы хотите использовать.<ul><li>`text`: используется для сообщений со списками, кнопок быстрых ответов и сообщений с несколькими товарами.</li><li>`video`: используется для кнопок быстрых ответов.</li><li>`image`: используется для кнопок быстрых ответов.</li><li>`document`: используется для кнопок быстрых ответов.</li></ul> |
> | `text` | string | Нет | Текст заголовка. Форматирование допускает использование эмодзи, но не markdown.Максимальная длина: `60`. |
> | `image` | object | Нет | Используется для сообщений типа `image`, `gif`, `video`, `audio`, `document` или `sticker`. См. также раздел [Поддерживаемые типы медиафайлов](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types). |
> | `video` | object | Нет | Используется для сообщений типа `image`, `gif`, `video`, `audio`, `document` или `sticker`. См. также раздел [Поддерживаемые типы медиафайлов](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types). |
> | `document` | object | Нет | Используется для сообщений типа `image`, `gif`, `video`, `audio`, `document` или `sticker`. См. также раздел [Поддерживаемые типы медиафайлов](https://developers.facebook.com/docs/whatsapp/cloud-api/reference/media#supported-media-types). |

> [accordion] whatsappMessage.interactive.header.image
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | \*\*Используйте этот параметр, когда медиафайл загружен на серверы WhatsApp.\*\*Укажите ID медиаобъекта, полученный из API загрузки медиа WhatsApp (\[[https://docs.ycloud.com/reference/whatsapp\_media-upload#/](https://docs.ycloud.com/reference/whatsapp_media-upload#/)]\([https://docs.ycloud.com/reference/whatsapp\_media-upload#/)).Примечание](https://docs.ycloud.com/reference/whatsapp_media-upload#/\)\).Примечание): необходимо указать либо `id`, либо `link`. Если указаны оба параметра, приоритет отдается `id`. |
> | `link` | string | Нет | \*\*Используйте этот параметр при отправке медиафайла напрямую с вашего сервера.\*\*Протокол и URL отправляемого медиафайла. Используйте только URL-адреса HTTP/HTTPS.Примечание: WhatsApp Cloud API кэширует медиаресурсы на 10 минут. Чтобы гарантировать актуальность контента, добавьте к URL случайные параметры запроса.Примечание: необходимо указать либо `id`, либо `link`. Если указаны оба параметра, приоритет имеет `id`, а `link` игнорируется. |
> | `caption` | string | Нет | Описывает указанный медиафайл `image`, `gif`, `video` или `document`. Не применяется в `header` сообщений `template` или `interactive`. |
> | `filename` | string | Нет | Описывает имя файла для указанного документа. Используется только с медиафайлами `document`. |

> [accordion] whatsappMessage.interactive.header.video
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | \*\*Используйте этот параметр, когда медиафайл загружен на серверы WhatsApp.\*\*Укажите ID медиаобъекта, полученный из API загрузки медиа WhatsApp (\[[https://docs.ycloud.com/reference/whatsapp\_media-upload#/](https://docs.ycloud.com/reference/whatsapp_media-upload#/)]\([https://docs.ycloud.com/reference/whatsapp\_media-upload#/)).Примечание](https://docs.ycloud.com/reference/whatsapp_media-upload#/\)\).Примечание): необходимо указать либо `id`, либо `link`. Если указаны оба параметра, приоритет отдается `id`. |
> | `link` | string | Нет | \*\*Используйте этот параметр при отправке медиафайла напрямую с вашего сервера.\*\*Протокол и URL отправляемого медиафайла. Используйте только с URL HTTP/HTTPS.Примечание: WhatsApp Cloud API кэширует медиаресурсы на 10 минут. Чтобы гарантировать доставку актуального содержимого, добавьте к URL случайные параметры запроса.Примечание: необходимо указать либо `id`, либо `link`. Если указаны оба параметра, `id` имеет приоритет, а `link` игнорируется. |
> | `caption` | string | Нет | Описывает указанный медиафайл `image`, `gif`, `video` или `document`. Не применяется в `header` сообщений типа `template` или `interactive`. |
> | `filename` | string | Нет | Описывает имя файла для указанного документа. Используется только с медиафайлами `document`. |

> [accordion] whatsappMessage.interactive.header.document
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `id` | string | Нет | \*\*Используйте этот параметр, когда медиафайл загружен на серверы WhatsApp.\*\*Укажите идентификатор объекта медиафайла, полученный из API загрузки медиафайлов WhatsApp (\[[https://docs.ycloud.com/reference/whatsapp\_media-upload#/](https://docs.ycloud.com/reference/whatsapp_media-upload#/)]\([https://docs.ycloud.com/reference/whatsapp\_media-upload#/)).Примечание](https://docs.ycloud.com/reference/whatsapp_media-upload#/\)\).Примечание): необходимо указать либо `id`, либо `link`. Если указаны оба параметра, приоритет имеет `id`. |
> | `link` | string | Нет | \*\*Используйте этот параметр при отправке медиафайла напрямую с вашего сервера.\*\*Протокол и URL отправляемого медиафайла. Используйте только с URL HTTP/HTTPS.Примечание: WhatsApp Cloud API кэширует медиаресурсы на 10 минут. Чтобы гарантировать доставку актуального содержимого, добавьте к URL случайные параметры запроса.Примечание: необходимо указать либо `id`, либо `link`. Если указаны оба параметра, `id` имеет приоритет, а `link` игнорируется. |
> | `caption` | string | Нет | Описывает указанный медиафайл `image`, `gif`, `video` или `document`. Не применяется в `header` сообщений типа `template` или `interactive`. |
> | `filename` | string | Нет | Описывает имя файла для указанного документа. Используется только с медиафайлами `document`. |

> [accordion] whatsappMessage.interactive.footer
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `text` | string | Нет | Текст нижнего колонтитула (footer). Поддерживаются эмодзи и разметка markdown. Поддерживаются ссылки. Максимальная длина: 60 символов.Максимальная длина: `60`. |

> [accordion] whatsappMessage.contacts\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `addresses` | object\[] | Нет | Элементы массива описаны ниже. |
> | `birthday` | string | Нет | Строка в формате `YYYY-MM-DD`. |
> | `emails` | object\[] | Нет | Элементы массива описаны ниже. |
> | `name` | object | Да | Полное имя контакта в формате объекта name. |
> | `org` | object | Нет | Информация об организации контакта в формате объекта org. |
> | `phones` | object\[] | Нет | Номер(а) телефона контакта в формате объекта phone. |
> | `urls` | object\[] | Нет | URL контакта в формате объекта urls. |
> | `vcard` | string | Нет | Необязательная визитная карточка vCard, переданная вместе с полезной нагрузкой переданного контакта. |
> | `origin` | string | Нет | Устанавливается в `contact_request`, когда пользователь предоставил контакт в ответ на сообщение с запросом контактных данных. |

> [accordion] whatsappMessage.contacts\[].addresses\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `street` | string | Нет | Номер дома и название улицы. |
> | `city` | string | Нет | Название города. |
> | `state` | string | Нет | Аббревиатура штата/региона. |
> | `zip` | string | Нет | Почтовый индекс. |
> | `country` | string | Нет | Полное название страны. |
> | `country_code` | string | Нет | Двухбуквенный код страны. |
> | `type` | string | Нет | Стандартные значения: `HOME` и `WORK`. |

> [accordion] whatsappMessage.contacts\[].emails\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `email` | string | Нет | Адрес электронной почты. |
> | `type` | string | Нет | Стандартные значения: `HOME` и `WORK`. |

> [accordion] whatsappMessage.contacts\[].name
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `formatted_name` | string | Да | Полное имя в привычном формате. |
> | `first_name` | string | Нет | Имя. |
> | `last_name` | string | Нет | Фамилия. |
> | `middle_name` | string | Нет | Второе имя / отчество. |
> | `suffix` | string | Нет | Суффикс имени. |
> | `prefix` | string | Нет | Префикс имени. |

> [accordion] whatsappMessage.contacts\[].org
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `company` | string | Нет | Название компании контакта. |
> | `department` | string | Нет | Название отдела контакта. |
> | `title` | string | Нет | Должность контакта. |

> [accordion] whatsappMessage.contacts\[].phones\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `phone` | string | Нет | Автоматически заполняется значением `wa_id` в виде отформатированного номера телефона. |
> | `type` | string | Нет | Стандартные значения: `CELL`, `MAIN`, `IPHONE`, `HOME` и `WORK`. |
> | `wa_id` | string | Нет | WhatsApp ID. |

> [accordion] whatsappMessage.contacts\[].urls\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `url` | string | Нет | URL. |
> | `type` | string | Нет | Стандартные значения: `HOME` и `WORK`. |

> [accordion] whatsappMessage.reaction
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `message_id` | string | Да | Указывает `wamid` полученного сообщения, содержавшего реакцию. |
> | `emoji` | string | Нет | **Обязательно** при отправке сообщения `reaction`. Укажите `""`, если хотите удалить эмодзи. **Необязательно** , когда вы получили сообщение от пользователя. Это поле передаётся, если пользователь отреагировал на сообщение с помощью эмодзи. В противном случае оно указывает на то, что пользователь удалил эмодзи. |

> [accordion] whatsappMessage.context
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `message_id` | string | Нет | Указывает `wamid` сообщения, на которое вы отвечаете. `wamid` — это исходный ID сообщения на платформе WhatsApp. |

## Пример

Следующий JSON представляет собой тело запроса, доставленное вашему получателю. Идентификаторы, номера телефонов и другие значения аккаунта приведены для наглядности.

> [accordion] Эхо-сообщение доставлено
>
> Сопоставьте с событием создания по id или wamid. В событиях обновления опускаются содержимое и тип сообщения.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_example_echo_delivered",
>   "type": "whatsapp.echo_message.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-09-09T02:00:03.000Z",
>   "whatsappMessage": {
>     "id": "MESSAGE_ID",
>     "wamid": "wamid.EXAMPLE",
>     "wabaId": "WABA_ID",
>     "from": "+12025550124",
>     "to": "+12025550123",
>     "recipientUserId": "GB.898232076600896",
>     "status": "delivered",
>     "updateTime": "2026-09-09T02:00:01.000Z",
>     "deliverTime": "2026-09-09T02:00:01.000Z"
>   }
> }
> ```

> [accordion] Эхо-сообщение прочитано
>
> Сопоставьте с событием создания по id или wamid. В событиях обновления опускаются содержимое и тип сообщения.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_example_echo_read",
>   "type": "whatsapp.echo_message.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-09-09T02:00:03.000Z",
>   "whatsappMessage": {
>     "id": "MESSAGE_ID",
>     "wamid": "wamid.EXAMPLE",
>     "wabaId": "WABA_ID",
>     "from": "+12025550124",
>     "to": "+12025550123",
>     "recipientUserId": "GB.898232076600896",
>     "status": "read",
>     "updateTime": "2026-09-09T02:00:02.000Z",
>     "readTime": "2026-09-09T02:00:02.000Z"
>   }
> }
> ```

> [accordion] Запоздалый статус отправки после прочтения
>
> Исходный статус с более низким приоритетом может прийти после прочтения. Зафиксируйте событие без понижения текущего статуса сообщения.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_example_echo_sent",
>   "type": "whatsapp.echo_message.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-09-09T02:00:03.000Z",
>   "whatsappMessage": {
>     "id": "MESSAGE_ID",
>     "wamid": "wamid.EXAMPLE",
>     "wabaId": "WABA_ID",
>     "from": "+12025550124",
>     "to": "+12025550123",
>     "recipientUserId": "GB.898232076600896",
>     "status": "sent",
>     "updateTime": "2026-09-09T02:00:00.000Z",
>     "sendTime": "2026-09-09T02:00:00.000Z"
>   }
> }
> ```

> [accordion] Неудачное эхо-сообщение
>
> Это отдельное неудавшееся сообщение, а не переход из прочитанного. Обновления со сбоем содержат сведения об исходной ошибке, если они доступны.
>
> ```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
> {
>   "id": "evt_example_echo_failed",
>   "type": "whatsapp.echo_message.updated",
>   "apiVersion": "v2",
>   "createTime": "2026-09-09T02:00:03.000Z",
>   "whatsappMessage": {
>     "id": "FAILED_MESSAGE_ID",
>     "wamid": "wamid.FAILED_EXAMPLE",
>     "wabaId": "WABA_ID",
>     "from": "+12025550124",
>     "to": "+12025550123",
>     "recipientUserId": "GB.898232076600896",
>     "status": "failed",
>     "errorCode": "131000",
>     "errorMessage": "Provider failure",
>     "updateTime": "2026-09-09T02:00:03.000Z"
>   }
> }
> ```

После проверки подписи и надежного сохранения события верните ответ `2xx`. Выполняйте длительные операции асинхронно.

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
HTTP/1.1 200 OK
```

Пошаговый разбор сценариев см. в разделе [аннотированные примеры](https://docs.ycloud.com/ru/api-reference/guides/examples/webhook-examples/whatsapp-echo-message-updated).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.