La API de instalaciones locales dejará de estar disponible. Consulta nuestro documento Fin de la API de instalaciones locales para conocer los detalles y descubrir cómo migrar a nuestra nueva generación de API de la nube.
En esta guía, se proporciona información sobre cómo enviar cada tipo de mensajes interactivos. Los mensajes interactivos permiten a los usuarios encontrar y seleccionar de manera más sencilla lo que buscan de tu empresa en WhatsApp. Durante las pruebas, los bots de chat que usan funciones de mensajería interactiva logran tasas de respuesta y conversiones mucho mayores en comparación con las que se registran con los mensajes basados en texto.
Tipos de mensajes interactivos:
Consulta las diferencias entre los mensajes de texto y los interactivos:
Ve un ejemplo de cómo los mensajes de lista y los botones de respuesta pueden combinarse en el mismo proceso:
En comparación con las listas basadas en texto, los mensajes interactivos proporcionan un formato más simple y coherente para que las personas encuentren y seleccionen lo que desean de un negocio. En las pruebas, las personas mostraban una mejor comprensión al interactuar con estas funciones.
Durante las pruebas, los bots de chat que usan funciones de mensajería interactiva logran tasas de respuesta y conversiones mucho mayores en comparación con las que se registran con los mensajes basados en texto.
Se completa de forma dinámica en tiempo real, de modo que se puede personalizar según el cliente o la situación. Por ejemplo, puedes mostrar un mensaje de lista con los horarios disponibles para reservar citas o usar los botones de respuesta para mostrar direcciones de entrega anteriores.
Los mensajes interactivos no necesitan plantillas ni aprobaciones previas.
Los mensajes de lista son ideales para presentar varias opciones, a saber:
Los botones de respuesta son la mejor opción para ofrecer respuestas rápidas de un conjunto limitado de opciones, a saber:
Los botones de respuesta son especialmente importantes para los casos de uso "personalizado", en los que una respuesta genérica no resulta adecuada.
Los mensajes de procesos son ideales para la comunicación estructurada en una o varias pantallas, como en los siguientes casos:
Los mensajes de procesos permiten a las empresas ofrecer una experiencia de usuario más rica y atractiva que puede ayudar a los clientes a interactuar más rápido en WhatsApp sin necesidad de cambiar a otra app o visitar un sitio web.
En el nivel de la API, los mensajes interactivos se configuran especificando el type
del mensaje en interactive
y agregando el objeto interactive
. Por lo general, estos mensajes incluyen 4 partes principales: header
, body
, footer
y action
:
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
Consulta más información sobre cómo enviar estos mensajes a continuación.
Antes de enviar mensajes, es necesario obtener el identificador de WhatsApp de tu receptor haciendo una llamada al nodo /contacts
.
Recomendamos configurar los webhooks para recibir el estado de los mensajes y las notificaciones de mensajes entrantes. De esta manera, puedes realizar un seguimiento del mensaje enviado y de las respuestas de los usuarios. Consulta los webhooks para obtener más información.
interactive
Para enviar un mensaje de lista, es necesario crear un objeto interactive
del tipo list
con estos componentes:
Objeto | Descripción |
---|---|
| Opcional. Si decides incluirlo, debes configurar el tipo del encabezado para texto y agregar un campo de texto con el contenido deseado. No se deben superar los 60 caracteres. |
| Obligatorio. El cuerpo del mensaje. Máximo de 1.024 caracteres. |
| Opcional. El pie del mensaje. |
| Obligatorio. Dentro de la acción, debes anidar:
Dentro de |
Tras finalizar el proceso, el objeto interactive
debería tener un aspecto como el siguiente:
"interactive":{ "type": "list", "header": { "type": "text", "text": "your-header-content" }, "body": { "text": "your-text-message-content" }, "footer": { "text": "your-footer-content" }, "action": { "button": "cta-button-content", "sections":[ { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, { "title":"your-section-title-content", "rows": [ { "id":"unique-row-identifier", "title": "row-title-content", "description": "row-description-content", } ] }, ... ] } }
Para enviar un mensaje con botón de respuesta, es necesario crear un objeto interactive
del tipo button
con estos componentes:
Objeto | Descripción |
---|---|
| Opcional. En relación con los mensajes interactivos Una vez que selecciones tu
Ejemplo: "header": { "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } } |
| Obligatorio. |
| Opcional. |
| Obligatorio. Debes agregar al menos un No puede haber espacios al inicio ni al final del identificador. Ejemplo: "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } |
Tras finalizar el proceso, el objeto interactive
debería tener un aspecto como el siguiente:
"interactive": { "type": "button", "header": { # optional "type": "text" | "image" | "video" | "document", "text": "your text" # OR "document": { "id": "your-media-id", "filename": "some-file-name" } # OR "document": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name", }, "filename": "some-file-name" }, # OR "video": { "id": "your-media-id" } # OR "video": { "link": "the-provider-name/protocol://the-url", "provider": { "name": "provider-name" } } # OR "image": { "id": "your-media-id" } # OR "image": { "link": "http(s)://the-url", "provider": { "name": "provider-name" } } }, # end header "body": { "text": "your-text-body-content" }, "footer": { # optional "text": "your-text-footer-content" }, "action": { "buttons": [ { "type": "reply", "reply": { "id": "unique-postback-id", "title": "First Button’s Title" } }, { "type": "reply", "reply": { "id": "unique-postback-id", "title": "Second Button’s Title" } } ] } # end action } # end interactive
Los mensajes de solicitud de ubicación contienen el texto del cuerpo y un botón Enviar ubicación que los usuarios pueden tocar. Cuando se toca este botón, se muestra una pantalla que indica la ubicación y que el usuario puede usar para compartir la ubicación.
Para enviar un mensaje de solicitud de ubicación, primero crea un objeto interactive
con el texto que deseas mostrar en el mensaje:
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
Propiedad | Descripción |
---|---|
| Se configura en |
| Se configura en |
| Configura el texto que deseas mostrar encima del botón Enviar ubicación. |
| Se configura en |
Los mensajes de procesos contienen un botón de llamada a la acción que los usuarios pueden tocar. Al tocar el botón, se muestra el proceso personalizado.
Para enviar un mensaje de procesos, es necesario crear un objeto interactive
del tipo flow
. Consulta aquí los detalles completos.
Una vez que cuentes con el objeto interactivo, adjunta los otros parámetros que forman un mensaje: recipient_type
, to
y type
. Recuerda configurar type
en interactive
.
{ "recipient_type": "individual", "to" : "whatsapp-id", // WhatsApp ID of your recipient "type": "interactive", "interactive":{ // Your interactive object } }
Consulta los parámetros comunes a todos los tipos de mensajes aquí.
POST
a /messages
Haz una llamada POST
al punto de conexión /messages
con el objeto JSON
que creaste en los pasos 1 y 2. Si tu mensaje se envía correctamente, recibes la siguiente respuesta:
{ "messages": [{ "id": "{message-id}" }] }
Si configuraste tus webhooks, comprueba si hay cambios en el estado de tu mensaje y en las respuestas que envían los usuarios.
Los webhooks de los usuarios que responden a los mensajes interactivos incluyen un nuevo componente llamado interactive
, que contiene información sobre la elección del usuario. Consulta Componentes de webhooks para obtener más información.
Por ejemplo, la siguiente es una solicitud de webhook que describe a un usuario que compartió su ubicación.
{ "object": "whatsapp_business_account", "entry": [ { "id": "12345", "changes": [ { "value": { "messaging_product": "whatsapp", "metadata": { "display_phone_number": "12345", "phone_number_id": "12345" }, "contacts": [ { "profile": { "name": "John Doe" }, "wa_id": "12345" } ], "messages": [ { "context": { "from": "12345", "id": "test-id" }, "from": "123450", "id": "test-id", "timestamp": "16632", "location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 37.421996751527, "longitude": -122.08407156636, "name": "Solomon R. Guggenheim Museum" #Optional }, "type": "location" } ] }, "field": "messages" } ] } ] }
El componente location
dentro de la carga contiene la latitud y longitud del usuario. Ten en cuenta que address
y name
son opcionales para el usuario y es posible que no estén incluidos.
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }