Respuestas de mensajes interactivos
Resumen para integración
- Entrega: WhatsApp → Concepto Móvil →
POSTa la URL de tu webhook (la que compartes con nuestro equipo de Operaciones), con un JSON en el cuerpo.- Formato: el objeto
valuede Meta sinmetadatanimessaging_product(ver Webhook).- Identificar al usuario:
from/recipient_ido, si no llega, el BSUID.- Tipos en esta página:
interactive(button_reply,nfm_reply),button,order(valores detype)
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:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| context | Objeto que contiene información relacionada de un mensaje. | Object | Obligatorio. |
| button_reply | Botón de respuesta | Object | Obligatorio. |
Objeto context mensajes interactivos
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| from | Teléfono (con código de país) del remitente del mensaje al que se hace referencia o del mensaje asociado al botón | String | Obligatorio. |
| id | Id interno del mensaje al que se hace referencia o del mensaje asociado al botón (el id devuelto por la API de envío). | String | Obligatorio. |
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):
Objeto context tipo botón
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| from | Teléfono (con código de país) del remitente del mensaje al que se hace referencia o del mensaje asociado al botón | String | Obligatorio. |
| id | Id del mensaje al que se hace referencia o del mensaje asociado al botón | String | Obligatorio. |
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:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| order | Orden de compras. | Object | Obligatorio. |
Objeto order
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| catalog_id | Identificador del catálogo. | String | Obligatorio. |
| product_items | Lista de identificados de productos. | Lista Object | Obligatorio. |
Objeto product item
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| currency | Tipo de moneda. | String | Obligatorio. |
| item_price | Precio del producto. | Number | Obligatorio. |
| product_retailer_id | Identificador del producto. | String | Obligatorio. |
| quantity | Cantidad a comprar. | Number | Obligatorio. |
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:
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| type | El valor es "nfm_reply" o "list_reply". | String | Obligatorio. |
| nfm_reply | Retiene los datos recibidos del cliente. | Object | Obligatorio. |
| list_reply | Opción seleccionada por el usuario en una lista. | Object | Opcional. |
Objeto nfm_reply
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| response_json | Los valores de los campos que completó el usuario en formato JSON que siempre están presentes. | String | Obligatorio. |
| body | El valor es "Sent". | String | Obligatorio. |
| name | El valor es "flow". | String | Obligatorio. |
Objeto list_reply
| Nombre | Descripción | Tipo | Requerimientos |
|---|---|---|---|
| id | Identificador de la opción seleccionada. | String | Obligatorio. |
| title | Título de la opción seleccionada. | String | Obligatorio. |
| description | Descripción de la opción seleccionada. | String | Opcional. |
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"}}}]}
