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

> Получайте входящие сообщения, отмечайте их как прочитанные и отображайте индикатор набора текста.

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

YCloud доставляет входящие сообщения WhatsApp на ваш эндпоинт Webhook. После принятия события вы можете отметить сообщение как прочитанное или показать временный индикатор набора текста, пока ваше приложение готовит ответ.

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

* Настройте эндпоинт Webhook для `whatsapp.inbound_message.received`.
* Проверяйте заголовок `YCloud-Signature` перед обработкой событий.
* Сохраняйте входящее сообщение `id`.
* Подключите бизнес-номер телефона, на который поступило сообщение.

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

1. Получите и аутентифицируйте событие Webhook.
2. Выполните дедупликацию события по событию `id`.
3. Извлеките входящее сообщение `id` и его содержимое.
4. При необходимости отметьте сообщение как прочитанное.
5. Отображайте индикатор набора текста только тогда, когда подготавливается ответ.
6. Отправьте ответ с помощью WhatsApp Messages API.

Отметка одного сообщения как прочитанного также помечает как прочитанные более ранние сообщения в диалоге. Индикатор набора текста исчезает при отправке ответа или через 25 секунд (в зависимости от того, что произойдет раньше).

## Запрос

### Отметить сообщение как прочитанное

`POST /whatsapp/inboundMessages/{id}/markAsRead`

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --request POST \
  https://api.ycloud.com/v2/whatsapp/inboundMessages/INBOUND_MESSAGE_ID/markAsRead \
  --header "X-API-Key: $YCLOUD_API_KEY"
```

### Показать индикатор набора текста

`POST /whatsapp/inboundMessages/{id}/typing`

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --request POST \
  https://api.ycloud.com/v2/whatsapp/inboundMessages/INBOUND_MESSAGE_ID/typing \
  --header "X-API-Key: $YCLOUD_API_KEY"
```

Эта операция также отмечает сообщение как прочитанное.

## Ответ

Успешный запрос возвращает HTTP `200` без тела ответа.

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

Ответ подтверждает, что действие было принято. Он не отправляет ответ пользователю WhatsApp.

## Рекомендации по обработке

* Подтверждайте получение Webhook до запуска медленной обработки ИИ или бизнес-логики.
* Сохраняйте порядок сообщений в диалоге, если этого требует ваш сценарий использования.
* Обрабатывайте каждый поддерживаемый входящий `type` явным образом и сохраняйте неподдерживаемые
  полезные нагрузки для анализа.
* Используйте контекст сообщения при ответе на конкретное входящее сообщение.

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

* Не отображайте индикатор набора текста, если ответ не планируется к отправке.
* В пути действия используйте ID входящего сообщения, а не ID события Webhook.
* Обеспечьте идемпотентность обработки Webhook, так как доставка может повторяться.
* Если действие завершилось сбоем, логируйте YCloud `requestId`, не сохраняя в логах
  содержимое сообщений или учетные данные.

<CardGroup cols={2}>
  <Card title="Примеры входящих полезных нагрузок" icon="inbox" href="/ru/api-reference/guides/examples/webhook-examples/whatsapp-inbound-message-webhook-examples">
    Ознакомьтесь с полезными нагрузками текстовых, медиа-, интерактивных, коммерческих и системных сообщений.
  </Card>

  <Card title="API отметки о прочтении" icon="check-double" href="/api-reference/whatsapp-inbound-messages/mark-message-as-read">
    Ознакомьтесь с полным контрактом эндпоинта.
  </Card>
</CardGroup>


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