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

> Ocurre cuando está disponible una instantánea guardada de un mensaje saliente ordinario de Messenger, incluidos los resultados del envío y los recibos asociados.

Usa `messenger.message.updated` para gestionar este evento en tu endpoint de webhook.

## Desencadenadores

Ocurre cuando está disponible una instantánea guardada de un mensaje saliente ordinario de Messenger, incluidos los resultados del envío y los recibos asociados.

Suscríbete a `messenger.message.updated` cuando [configures tu endpoint de webhook](https://docs.ycloud.com/es/api-reference/guides/api-fundamentals/configure-webhooks.md).

Este evento incluye los resultados del envío y los recibos asociados para un mensaje saliente ordinario guardado. Correlaciona las instantáneas mediante el `id` del mensaje. Las horas de recibos intermedios desconocidas pueden omitirse.

## Sintaxis

YCloud envía una solicitud HTTP `POST` a tu URL de webhook configurada. La siguiente estructura muestra una variante de carga útil. Los valores entre corchetes angulares son marcadores de posición; sus tipos se indican en **Parámetros**. Los campos opcionales y otras variantes se describen a continuación.

```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>"
  }
}
```

## Parámetros

Valida la cabecera HTTP `YCloud-Signature` antes de procesar el cuerpo JSON. Consulta la [validación de firma](https://docs.ycloud.com/es/api-reference/guides/api-fundamentals/configure-webhooks.md).

### Envoltorio del evento

| Parámetro | Tipo | Obligatorio | Descripción |
| - | - | - | - |
| `id` | string | Sí | Identificador único para el evento. Longitud mínima: `6`. Longitud máxima: `128`. |
| `type` | string | Sí | Siempre `messenger.message.updated`. |
| `apiVersion` | string | Sí | La versión de la API utilizada para generar este evento. |
| `createTime` | string (date-time) | Sí | La hora a la que se creó este evento, formateada en [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339). Por ejemplo, `2022-06-01T12:00:00.000Z`. |

### Carga útil del evento

| Parámetro | Tipo | Obligatorio | Descripción |
| - | - | - | - |
| `messengerMessage` | object | No | Carga útil de `messengerMessage` específica del evento. |

Los cuatro campos comunes del envoltorio son obligatorios. Los campos de la carga útil dependen de la variante del evento. En cada tabla de objetos, **Obligatorio** aplica cuando su objeto superior está presente. Los campos opcionales pueden omitirse; que aparezcan en un ejemplo no hace que un campo sea obligatorio.

#### messengerMessage

| Parámetro | Tipo | Obligatorio | Descripción |
| - | - | - | - |
| `id` | string | Sí | ID de salida de YCloud, una cadena decimal; nunca lo serialices como un número JSON. |
| `metaMessageId` | string | No | Se omite cuando no se confirma ningún ID de Meta. |
| `from` | string | Sí | ID de la página de Facebook. |
| `to` | string | Sí | PSID del interlocutor para esta página. |
| `reactions` | object\[] | No | Reacciones activas reconstruidas al recuperar un mensaje saliente. Devuelve \[] cuando no existe ninguna reacción activa guardada, incluso tras su eliminación. Los webhooks de estado del cliente omiten este campo; recibir una reacción no cambia el estado de entrega del mensaje ni updateTime. |
| `type` | string | Sí | Valores: `text`. |
| `text` | object | Sí | Los campos del objeto se indican a continuación. |
| `status` | string | Sí | Hechos almacenados actualmente: read > delivered > sent > resultado del envío. Unknown significa no confirmado o en progreso, nunca un fallo definitivo. La ausencia de recibos no implica un fallo y no se inventa ningún estado intermedio.Valores: `unknown`, `accepted`, `rejected`, `sent`, `delivered`, `read`. |
| `errorCode` | string | No | Error de envío registrado localmente, si existe. Un rechazo confirmado puede ser MESSENGER\_MESSAGE\_REJECTED(#100:2018276), MESSENGER\_MESSAGE\_REJECTED(#100), o el MESSENGER\_MESSAGE\_REJECTED heredado cuando el diagnóstico no está disponible. MESSENGER\_MESSAGE\_RESULT\_UNKNOWN indica que el resultado del envío no está confirmado. Nunca contiene el cuerpo de error en bruto ni las credenciales de Meta. |
| `createTime` | string (date-time) | Sí | Hora de creación local en UTC RFC 3339 con precisión de milisegundos. |
| `updateTime` | string (date-time) | Sí | Hora de actualización local en UTC RFC 3339 con precisión de milisegundos. |
| `sendTime` | string (date-time) | No | Hora de envío confirmada en UTC RFC 3339 con precisión de milisegundos; se omite si se desconoce. |
| `deliverTime` | string (date-time) | No | Hora de entrega confirmada en UTC RFC 3339 con precisión de milisegundos; se omite si se desconoce. |
| `readTime` | string (date-time) | No | Hora de lectura confirmada en UTC RFC 3339 con precisión de milisegundos; se omite si se desconoce. |

> [accordion] messengerMessage.reactions\[]
>
> | Parámetro | Tipo | Requerido | Descripción |
> | - | - | - | - |
> | `psid` | string | Sí | ID específico de la página (page-scoped ID) del usuario que reaccionó. |
> | `reaction` | string | No | Descripción de la reacción del proveedor, cuando esté disponible. Los clientes deben tolerar nuevos valores. |
> | `emoji` | string | No | Emoji de la reacción, cuando esté disponible. |
> | `updateTime` | string (date-time) | Sí | Hora de la interacción de origen en UTC RFC 3339 con precisión de milisegundos; independiente del updateTime del mensaje. |

> [accordion] messengerMessage.text
>
> | Parámetro | Tipo | Requerido | Descripción |
> | - | - | - | - |
> | `body` | string | Sí | Texto no vacío. Los espacios iniciales y finales se conservan y se incluyen al comparar una solicitud repetida.Longitud mínima: `1`. |

## Ejemplo

El siguiente JSON es el cuerpo entregado a tu receptor. Los ID, números de teléfono y otros valores de cuenta son ilustrativos.

Usa el ID del mensaje para correlacionar instantáneas; se omiten los tiempos intermedios de recepción desconocidos.

```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"
  }
}
```

Tras verificar la firma y aceptar el evento de forma duradera, devuelve una respuesta `2xx`. Procesa las tareas lentas de forma asíncrona.

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