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

# messenger.message.updated

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

Используйте `messenger.message.updated` для обработки этого события на вашей конечной точке веб-перехватчика (webhook endpoint).

## Триггеры

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

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

Это событие включает результаты отправки и сопоставленные отчеты для сохраненного обычного исходящего сообщения. Коррелируйте снимки по `id` сообщения. Неизвестное время промежуточных отчетов может быть опущено.

## Синтаксис

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

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "<ID>",
  "type": "messenger.message.updated",
  "apiVersion": "<API_VERSION>",
  "createTime": "<CREATE_TIME>",
  "messengerMessage": {
    "id": "<ID>",
    "metaMessageId": "<META_MESSAGE_ID>",
    "from": "<FROM>",
    "to": "<TO>",
    "type": "<TYPE>",
    "text": {
      "body": "<BODY>"
    },
    "status": "<STATUS>",
    "createTime": "<CREATE_TIME>",
    "updateTime": "<UPDATE_TIME>",
    "readTime": "<READ_TIME>"
  }
}
```

## Параметры

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

### Конверт события

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

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

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

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

#### messengerMessage

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `id` | string | Да | Идентификатор исходящего сообщения YCloud в виде десятичной строки; никогда не сериализуйте его как число JSON. |
| `metaMessageId` | string | Нет | Опускается, если идентификатор Meta не подтвержден. |
| `from` | string | Да | Идентификатор страницы Facebook. |
| `to` | string | Да | PSID собеседника для этой страницы. |
| `reactions` | object\[] | Нет | Активные реакции, восстанавливаемые при получении исходящего сообщения. Возвращает \[], когда сохраненных активных реакций нет, в том числе после отзыва. В веб-перехватчиках статуса клиента это поле опускается; получение реакции не изменяет статус доставки сообщения или updateTime. |
| `type` | string | Да | Значения: `text`. |
| `text` | object | Да | Поля объекта перечислены ниже. |
| `status` | string | Да | Текущие сохраненные факты: read > delivered > sent > результат отправки. Unknown означает неподтверждено или в процессе, но никогда окончательный сбой. Отсутствие отчетов не означает ошибку, и никакие промежуточные состояния не генерируются искусственно.Значения: `unknown`, `accepted`, `rejected`, `sent`, `delivered`, `read`. |
| `errorCode` | string | Нет | Локально зафиксированная ошибка отправки, если она есть. Подтвержденным отклонением может быть MESSENGER\_MESSAGE\_REJECTED(#100:2018276), MESSENGER\_MESSAGE\_REJECTED(#100) или устаревшее MESSENGER\_MESSAGE\_REJECTED, если диагностика недоступна. MESSENGER\_MESSAGE\_RESULT\_UNKNOWN означает, что результат отправки не подтвержден. Никогда не содержит исходное тело ошибки Meta или учетные данные. |
| `createTime` | string (date-time) | Да | Локальное время создания в UTC RFC 3339 с точностью до миллисекунд. |
| `updateTime` | string (date-time) | Да | Локальное время обновления в формате UTC RFC 3339 с точностью до миллисекунд. |
| `sendTime` | string (date-time) | Нет | Подтвержденное время отправки в формате UTC RFC 3339 с точностью до миллисекунд; опускается, если неизвестно. |
| `deliverTime` | string (date-time) | Нет | Подтвержденное время доставки в формате UTC RFC 3339 с точностью до миллисекунд; опускается, если неизвестно. |
| `readTime` | string (date-time) | Нет | Подтвержденное время прочтения в формате UTC RFC 3339 с точностью до миллисекунд; опускается, если неизвестно. |

> [accordion] messengerMessage.reactions\[]
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `psid` | string | Да | Page-scoped ID пользователя, оставившего реакцию. |
> | `reaction` | string | Нет | Описание реакции от провайдера, если доступно. Клиентам следует допускать новые значения. |
> | `emoji` | string | Нет | Эмодзи реакции, если доступно. |
> | `updateTime` | string (date-time) | Да | Исходное время взаимодействия в формате UTC RFC 3339 с точностью до миллисекунд; не зависит от updateTime сообщения. |

> [accordion] messengerMessage.text
>
> | Параметр | Тип | Обязательный | Описание |
> | - | - | - | - |
> | `body` | string | Да | Непустой текст. Начальные и конечные пробелы сохраняются и учитываются при сравнении повторного запроса.Минимальная длина: `1`. |

## Пример

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

Используйте ID сообщения для сопоставления снимков состояния; неизвестное промежуточное время получения опускается.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "id": "evt_89abcdef0123456789abcdef",
  "type": "messenger.message.updated",
  "apiVersion": "v2",
  "createTime": "2026-10-20T02:00:03.000Z",
  "messengerMessage": {
    "id": "1308528868252065792",
    "metaMessageId": "m_EXAMPLE_OUT_001",
    "from": "422500000000000",
    "to": "100800000000000",
    "type": "text",
    "text": {
      "body": "How can I help you?"
    },
    "status": "read",
    "createTime": "2026-10-20T02:00:00.000Z",
    "updateTime": "2026-10-20T02:00:03.000Z",
    "readTime": "2026-10-20T02:00:03.000Z"
  }
}
```

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

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


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