Estamos retirando la API local. Consulta nuestro documento Retirada de la API local para obtener más información y aprender a migrar a nuestra API de nube de nueva generación.
En esta guía se explica cómo enviar cada opción de mensajes interactivos. Los mensajes interactivos ofrecen a los usuarios una manera más sencilla de encontrar y seleccionar lo que quieren de tu empresa en WhatsApp. Durante las pruebas, los chatbots que utilizan funciones de mensajes interactivos lograron un aumento considerable de los índices de respuesta y las conversiones en comparación con aquellos que se basan en texto.
Tipos de mensajes interactivos:
A continuación puedes ver una comparación entre los mensajes de texto y los mensajes interactivos:
A continuación puedes ver un ejemplo de cómo los mensajes de lista y los botones de respuesta se pueden combinar en el mismo proceso:
En comparación con las listas basadas en texto, los mensajes interactivos ofrecen al usuario un formato más sencillo y coherente para encontrar y seleccionar lo que quiere de una empresa. Durante las pruebas, los usuarios mostraron mayores niveles de comprensión al interactuar con estas funciones.
Durante las pruebas, los chatbots que utilizan funciones de mensajes interactivos lograron un aumento considerable de los índices de respuesta y las conversiones en comparación con aquellos que se basan en texto.
Se rellena de forma dinámica en tiempo real, por lo que puede personalizarse según el cliente o la situación. Por ejemplo, puedes mostrar un mensaje de lista con las horas disponibles al reservar una cita 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, como, por ejemplo:
Los botones de respuesta son ideales para ofrecer respuestas rápidas de un conjunto limitado de opciones, como, por ejemplo:
Los botones de respuesta son especialmente útiles para casos de uso “personalizados” en los que una respuesta genérica no resulta apropiada.
Los mensajes de Flows son la mejor opción para una comunicación estructurada en una o varias pantallas, como por ejemplo:
Los mensajes de Flows permiten a las empresas ofrecer una experiencia de usuario más completa y atractiva que puede ayudar a los clientes a hacer las cosas más rápido en WhatsApp sin necesariamente tener que cambiar a otra aplicación o visitar un sitio web.
En el nivel de la API, para configurar los mensajes interactivos, se debe establecer el type
del mensaje en interactive
y añadir el objeto interactive
. En general, estos mensajes incluyen cuatro partes principales: header
, body
, footer
y action
:
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
Obtén más información sobre cómo enviar este tipo de mensajes a continuación.
Antes de poder enviar mensajes, tienes que obtener el identificador de WhatsApp del destinatario con una llamada al nodo/contacts
.
Te recomendamos configurar los webhooks para recibir notificaciones sobre el estado de los mensajes y los mensajes entrantes. De esta forma, puedes hacer un seguimiento del mensaje enviado y consultar las respuestas de los usuarios. Consulta Webhooks para obtener más información.
interactive
Para enviar un mensaje de lista, debes crear un objeto interactive
de tipo list
con los siguientes componentes:
Objeto | Descripción |
---|---|
| Opcional. Si decides incluirlo, debes definir el tipo de encabezado como texto y añadir un campo de texto con el contenido que quieras. Máximo de 60 caracteres. |
| Obligatorio. Cuerpo del mensaje. Máximo de 1024 caracteres. |
| Opcional. 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 similar al 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, debes crear un objeto interactive
de tipo button
con los siguientes componentes:
Objeto | Descripción |
---|---|
| Opcional. Para los mensajes interactivos de tipo Una vez hayas seleccionado el
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 añadir al menos un No puedes añadir espacios iniciales ni finales al establecer el 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 similar al 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. Al tocar el botón, se muestra una pantalla para compartir la ubicación que el usuario puede utilizar para compartir su ubicación.
Para enviar un mensaje de solicitud de ubicación, primero crea un objeto interactive
con el texto que quieres mostrar en el mensaje:
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
Propiedad | Descripción |
---|---|
| Se establece en |
| Se establece en |
| Se establece en el texto que quieres mostrar encima del botón Enviar ubicación. |
| Se establece en |
Los mensajes de Flows contienen un botón de llamada a la acción que los usuarios pueden tocar. Al tocar el botón, se muestra el Flow personalizado.
Para enviar un mensaje de Flows, debes crear un objeto interactive
de tipo flow
. Consulta aquí todos los detalles.
Una vez has creado el objeto interactivo, añade los demás parámetros que forman un mensaje: recipient_type
, to
y type
. Recuerda establecer el valor de 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
Realiza una llamada POST
al extremo /messages
con el objeto JSON
que has creado en los pasos 1 y 2. Si el mensaje se envía correctamente, recibirás la siguiente respuesta:
{ "messages": [{ "id": "{message-id}" }] }
Si configuras webhooks, comprueba si hay cambios en el estado de tu mensaje, así como las respuestas de los usuarios.
Los webhooks de los usuarios que responden a los mensajes interactivos incluyen un componente nuevo llamado interactive
que contiene información sobre la elección del usuario. Para obtener más información, consulta Webhooks, Componentes.
Por ejemplo, a continuación se muestra una solicitud de webhook que describe a un usuario que ha compartido 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
de la carga útil contiene la latitud y la longitud del usuario. Ten en cuenta que tanto address
como name
son opcionales para el usuario y pueden no incluirse.
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }