> ## 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

> Сохраняйте эхо-сообщения исходящего текста и медиафайлов и сопоставляйте их последующие обновления статуса.

## Что это такое

Подпишитесь на `whatsapp.echo_message.created`.

Вы получаете это событие, когда YCloud регистрирует исходящее эхо для Агента, подключенного через Public REST API. Читайте стандартный контент в формате сообщения из `whatsappMessage`; не используйте это событие для входящих сообщений от клиентов.

Текущий контракт сохраняет имя события без изменений, представляя эхо как стандартное сообщение WhatsApp. Поля Агента, передачи управления (handover) и маршрутизации Inbox не входят в эту полезную нагрузку.

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

1. Подключите Агента через [Public REST API](/ru/api-reference/meta-business-agents/onboard).
2. Подпишите активную конечную точку Webhook в том же аккаунте на `whatsapp.echo_message.created`.
3. Проверяйте `YCloud-Signature` по исходному телу запроса, надежно принимайте каждое событие и обрабатывайте его идемпотентно.

<Warning>
  Агенты, созданные через Console, не отправляют этот клиентский Webhook. Синхронизация их Inbox представляет собой отдельный процесс.
</Warning>

Инструкции по настройке конечной точки см. в разделе [Настройка вебхуков](/ru/api-reference/guides/api-fundamentals/configure-webhooks#subscribe-to-echo-and-handover-events).

## Принцип работы

Во всех примерах используются идентификаторы-плейсхолдеры. Маршрутизируйте по внешнему `type` и читайте `whatsappMessage`, а не `whatsappMetaBusinessAgent`, `whatsappEchoMessage` или `data`.

Устраняйте дубликаты повторных доставок с помощью внешнего `id`. Внешнее `createTime` — это время события Webhook; поля времени внутри вложенного сообщения представляют собой время источника в формате RFC 3339.

* Используйте `id` или `wamid` для сопоставления последующих событий статуса.
* Читайте текст из `text.body`. Для медиафайлов проверяйте `type` и соответствующий объект контента. Идентификаторы медиафайлов не являются публичными URL-адресами для скачивания.
* Телефон клиента и BSUID независимы друг от друга. Если исходный обратный вызов предоставляет оба значения, событие включает `to` вместе с `recipientUserId` или `parentRecipientUserId`. Отсутствующие идентификаторы опускаются и не выводятся друг из друга.
* `from` — это отображаемый номер телефона компании, если исходный обратный вызов передает корректный номер телефона. Он не формируется на основе `phoneNumberId`.
* Контекст ответа нормализован в соответствии со стандартным контрактом сообщений. Например, исходный `context.id` передается как `context.message_id`.
* Поля Агента, передачи управления, маршрутизации, тарификации и переписки не включаются.
* `status` — это сохраненный статус на момент обработки эха; не гарантируется, что он будет равен `sent`.
* Входящие сообщения от клиентов используют [`whatsapp.inbound_message.received`](/ru/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples). Эхо-сообщения Business App используют [`whatsapp.smb.message.echoes`](/ru/api-reference/guides/examples/webhook-examples/whatsapp-business-app-sent-message-sync-webhook-examples).

## Запрос

YCloud отправляет эти тела JSON в запросах HTTP `POST` на настроенный вами URL Webhook.

## Ответ

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

## Исходящее текстовое эхо

### Запрос

Сохраняйте текст из whatsappMessage.text.body. id и wamid связывают последующие события статуса.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_text",
  "type": "whatsapp.echo_message.created",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:00.000Z",
  "whatsappMessage": {
    "id": "MESSAGE_ID",
    "wamid": "wamid.EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "type": "text",
    "text": {
      "body": "Hello! How can I help you?"
    },
    "status": "sent",
    "createTime": "2026-09-09T02:00:00.000Z",
    "sendTime": "2026-09-09T02:00:00.000Z"
  }
}
```

### Ответ

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

### Пояснение

Читайте текст эхо-сообщения из `whatsappMessage.text.body`. Используйте `id` или `wamid` для сопоставления последующих событий статуса.

## Исходящее медиа-эхо (изображение)

### Запрос

Содержимое сообщения зависит от типа. Воспринимайте идентификаторы медиафайлов как ссылки провайдера, а не как публичные URL-адреса для скачивания.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_example_echo_image",
  "type": "whatsapp.echo_message.created",
  "apiVersion": "v2",
  "createTime": "2026-09-09T02:00:00.000Z",
  "whatsappMessage": {
    "id": "IMAGE_MESSAGE_ID",
    "wamid": "wamid.IMAGE_EXAMPLE",
    "wabaId": "WABA_ID",
    "from": "+12025550123",
    "to": "+12025550124",
    "recipientUserId": "GB.898232076600896",
    "type": "image",
    "image": {
      "id": "MEDIA_ID",
      "mime_type": "image/jpeg"
    },
    "status": "sent",
    "createTime": "2026-09-09T02:00:00.000Z",
    "sendTime": "2026-09-09T02:00:00.000Z"
  }
}
```

### Ответ

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

### Пояснение

Используйте `type`, чтобы выбрать соответствующий объект контента. Воспринимайте медиа `id` как ссылку провайдера.

### Похожие примеры

* [Обновлено эхо-сообщение WhatsApp](/ru/api-reference/guides/examples/webhook-examples/whatsapp-echo-message-updated)
* [Обновлена передача управления агенту WhatsApp](/ru/api-reference/guides/examples/webhook-examples/whatsapp-meta-business-agent-handover-updated)
* [Примеры эхо-сообщений и передачи управления агенту](/ru/api-reference/guides/examples/webhook-examples/overview#echo-and-agent-handover-events)
* [Полный каталог полезных нагрузок](/ru/api-reference/guides/examples/webhook-examples/webhook-payload-examples)


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