logo
enes

Respuestas de mensajes interactivos

Last update: 4 days ago by Irais Aguirre

Resumen para integración

  • Entrega: WhatsApp → Concepto Móvil → POST a la URL de tu webhook (la que compartes con nuestro equipo de Operaciones), con un JSON en el cuerpo.
  • Formato: el objeto value de Meta sin metadata ni messaging_product (ver Webhook).
  • Identificar al usuario: from/recipient_id o, si no llega, el BSUID.
  • Tipos en esta página: interactive (button_reply, nfm_reply), button, order (valores de type)

Respuestas de tu cliente a mensajes interactivos y botones de respuesta rápida, carros de compras y respuestas de WhatsApp Flows. Llegan con la misma estructura general que las demás notificaciones de mensajes (contacts y messages).

Respuesta rápida para mensajes interactivos

El campo type es "interactive" y interactive.type es "button_reply".

Estructura

Campos de Respuesta rápida para mensajes interactivos:

NombreDescripciónTipoRequerimientos
contextObjeto que contiene información relacionada de un mensaje.ObjectObligatorio.
button_replyBotón de respuestaObjectObligatorio.

Objeto context mensajes interactivos

NombreDescripciónTipoRequerimientos
fromTeléfono (con código de país) del remitente del mensaje al que se hace referencia o del mensaje asociado al botónStringObligatorio.
idId interno del mensaje al que se hace referencia o del mensaje asociado al botón (el id devuelto por la API de envío).StringObligatorio.

Objeto button_reply

NombreDescripciónTipoRequerimientos
idId del botón.StringObligatorio.
titleTítulo del botón.StringObligatorio.

Ejemplo

Ejemplo completo de Respuesta rápida para mensajes interactivos:

{
"contacts": [
{
"profile": {
"name": "Héctor"
},
"wa_id": "5215500000001"
}
],
"messages": [
{
"context":
{
"from": "5215541697885",
"id": "NTI1NTIwNzc3MDU41qeKUOpTHmS"
},
"from": "5215500000001",
"id": "wamid.HBgNNTIxNTUyMDc3NzA1OBUCABIYFDNBMDFEMDFEOTFFMkE0NEU4MThBAA==",
"timestamp": "1617061836",
"type": "interactive",
"interactive": {
"type": "button_reply",
"button_reply": {
"id": "3",
"title": "Sopa de pasta"
}
}
}
]
}


Respuesta rápida (tipo botón)

El campo type es "button".

Estructura

Campos de Respuesta rápida (tipo botón):

NombreDescripciónTipoRequerimientos
contextObjeto que contiene información relacionada de un mensaje.ObjectObligatorio.
buttonBotón.ObjectObligatorio.

Objeto context tipo botón

NombreDescripciónTipoRequerimientos
fromTeléfono (con código de país) del remitente del mensaje al que se hace referencia o del mensaje asociado al botónStringObligatorio.
idId del mensaje al que se hace referencia o del mensaje asociado al botónStringObligatorio.

Objeto button

NombreDescripciónTipoRequerimientos
payloadPayload.StringObligatorio.
textTexto del botón.StringObligatorio.

Ejemplo

Ejemplo completo de Respuesta rápida (tipo botón):

{
"contacts": [
{
"profile": {
"name": "Héctor"
},
"wa_id": "5215500000001"
}
],
"messages": [
{
"from": "5215500000001",
"id": "ABGHUhVUByKUHwIKPrA13J63aX1gRA",
"timestamp": "1617061836",
"type": "button",
"button": {
"payload": "payload for buena",
"text": "Buena"
},
"context": {
"from": "5215500000001",
"id": "gBGHUhciNWGSfwIJFtyApXYmcGjx"
}
}
]
}


Carro de compras

El campo type es "order".

Estructura

Campos de Carro de compras:

NombreDescripciónTipoRequerimientos
orderOrden de compras.ObjectObligatorio.

Objeto order

NombreDescripciónTipoRequerimientos
catalog_idIdentificador del catálogo.StringObligatorio.
product_itemsLista de identificados de productos.Lista ObjectObligatorio.

Objeto product item

NombreDescripciónTipoRequerimientos
currencyTipo de moneda.StringObligatorio.
item_pricePrecio del producto.NumberObligatorio.
product_retailer_idIdentificador del producto.StringObligatorio.
quantityCantidad a comprar.NumberObligatorio.

Ejemplo

Ejemplo completo de Carro de compras:

{
"contacts": [
{
"profile": {
"name": "Juan Pérez"
},
"wa_id": "5215500000001"
}
],
"messages": [
{
"from": "5215500000001",
"id": "ABGHUhVUByKUHwIKPrA13J63aX1gRA",
"timestamp": "1617061836",
"type": "order",
"order":{
"catalog_id": "1374748992926971",
"product_items":
[
{
"currency": "MXN",
"item_price": 800,
"product_retailer_id": "ING_0001",
"quantity": 1
}
],
"text": "Quiero este"
}
}
]
}


WhatsApp Flows

Respuesta que envía tu cliente al completar un Flow. El campo type es "interactive" y interactive.type es "nfm_reply".

Estructura

Campos de WhatsApp Flows:

NombreDescripciónTipoRequerimientos
typeEl valor es "nfm_reply" o "list_reply".StringObligatorio.
nfm_replyRetiene los datos recibidos del cliente.ObjectObligatorio.
list_replyOpción seleccionada por el usuario en una lista.ObjectOpcional.

Objeto nfm_reply

NombreDescripciónTipoRequerimientos
response_jsonLos valores de los campos que completó el usuario en formato JSON que siempre están presentes.StringObligatorio.
bodyEl valor es "Sent".StringObligatorio.
nameEl valor es "flow".StringObligatorio.

Objeto list_reply

NombreDescripciónTipoRequerimientos
idIdentificador de la opción seleccionada.StringObligatorio.
titleTítulo de la opción seleccionada.StringObligatorio.
descriptionDescripción de la opción seleccionada.StringOpcional.

Ejemplo

Ejemplo completo de WhatsApp Flows:

{
"contacts":
[
{
"profile":
{
"name": "Héctor"
},
"wa_id": "5215520777058"
}
],
"messages":
[
{
"context":
{
"from": "5215541697885",
"id": "NTI1NTIwNzc3MDU41qeKUOpTHmS"
},
"from": "5215520777058",
"id": "wamid.HBgNNTIxNTUyMDc3NzA1OBUCABIYFDNBMEREMUE4QjIxMEM3MDE3RjQ4AA==",
"timestamp": "1711568359",
"type": "interactive",
"interactive":
{
"type": "nfm_reply",
"nfm_reply":
{
"response_json": "{\"first_name\":\"Hector\",\"last_name\":\"Hernandez\",\"flow_token\":\"FLOW_TOKEN\",\"products\":[\"mobile\",\"data\"],\"email\":\"Hector.hernandez@conceptomovil.com\"}",
"body": "Sent",
"name": "flow"
}
}
}
]
}


Whatsapp — Anterior
Notificaciones de mensajes
Siguiente — Whatsapp
Notificaciones de estatus