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.

Enviar mensajes interactivos

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:

  • Mensajes de lista: mensajes que incluyen un menú de hasta 10 opciones. Con este tipo de mensaje, los usuarios tienen una forma más simple y coherente de hacer una selección cuando interactúan con una empresa.
  • Botones de respuesta: mensajes que incluyen hasta 3 opciones, donde cada opción es un botón. Con este tipo de mensaje, los usuarios tienen una forma más rápida de hacer una selección en un menú cuando interactúan con una empresa. Los botones de respuesta ofrecen la misma experiencia de usuario que las plantillas interactivas con botones.
  • Mensajes de un solo producto: mensajes con un solo producto del inventario de la empresa. Consulta Compartir productos con los clientes para obtener más información.
  • Mensajes multiproducto: mensajes que contienen una selección de hasta 30 artículos del inventario de la empresa. Consulta Compartir productos con los clientes para obtener más información.
  • Mensajes de solicitud de ubicación: mensajes que solicitan la ubicación del usuario.
  • Mensajes de procesos: mensajes de interacciones estructuradas. Consulta Mensajes de procesos para obtener más información.

Especificaciones de los mensajes interactivos

  • Se pueden combinar los mensajes interactivos en el mismo proceso.
  • Los usuarios no pueden seleccionar al mismo tiempo más de una opción de una lista o un mensaje con botón, pero pueden retroceder y volver a abrir un mensaje anterior.
  • Los mensajes con botón de lista o respuesta no pueden usarse como notificaciones. Por el momento, solo pueden enviarse dentro de las 24 horas posteriores al último mensaje enviado por el usuario. Si intentas enviar un mensaje fuera del intervalo de 24 horas, recibirás un mensaje de error.
  • Plataformas admitidas: iOS, Android y Web (los mensajes de procesos no se admiten en la Web).

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:

Se produjo un error
Tenemos problemas para reproducir este video.

Información general

Por qué debes usar este recurso

Comprensión por parte del usuario

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.

Resultados comerciales

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.

Personalizado

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.

No requiere plantillas

Los mensajes interactivos no necesitan plantillas ni aprobaciones previas.

¿Cuándo debes utilizarlos?

Los mensajes de lista son ideales para presentar varias opciones, a saber:

  • Un menú de atención al cliente o preguntas frecuentes
  • Un menú de comida para llevar
  • Selección de tiendas o ubicaciones cercanas
  • Horarios de reserva disponibles
  • Elegir un pedido reciente para repetirlo

Los botones de respuesta son la mejor opción para ofrecer respuestas rápidas de un conjunto limitado de opciones, a saber:

  • Recarga de tiempo de aire
  • Cambiar detalles personales
  • Volver a solicitar un pedido anterior
  • Solicitar un devolución
  • Agregar productos adicionales a un pedido de comida
  • Elegir un método de pago

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:

  • Reservar citas
  • Explorar productos
  • Recopilar comentarios de clientes
  • Obtener nuevos clientes potenciales

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.

Cómo usarlos

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": {}
  }
}
Las partes de los mensajes de lista se estructuran de la siguiente manera:

Las partes de los botones de respuesta se estructuran de la siguiente manera:

Consulta más información sobre cómo enviar estos mensajes a continuación.

Empezar

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.

Paso 1: Crea el objeto interactive

Mensajes de lista

Para enviar un mensaje de lista, es necesario crear un objeto interactive del tipo list con estos componentes:

ObjetoDescripción

header

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.


Consulta todos los campos header disponibles.

body

Obligatorio.

El cuerpo del mensaje. Máximo de 1.024 caracteres.


Consulta todos los campos body disponibles.

footer

Opcional.

El pie del mensaje.


Consulta todos los campos footer disponibles.

action

Obligatorio.

Dentro de la acción, debes anidar:

  • un campo button con el contenido del botón, con un máximo de 20 caracteres
  • al menos un objeto section (máximo 10) con un máximo de 24 caracteres para el title de la section

Dentro de section, debes agregar al menos algún objeto rows. El valor title puede contener un máximo de 24 caracteres por columna y un máximo de 72 caracteres por cada columna de description.


Consulta todos los campos action disponibles.

Consulta todos los campos section disponibles.

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",           
          }
        ]
      },
      ...
    ]
  }
}

Botones de respuesta

Para enviar un mensaje con botón de respuesta, es necesario crear un objeto interactive del tipo button con estos componentes:

ObjetoDescripción

header

Opcional.

En relación con los mensajes interactivos button, puedes usar los siguientes tipos de encabezado: text, video, image o document.


Una vez que selecciones tu type agrega los objetos o campos correspondientes con más información:

  • En relación con video, image y los tipos document: agrega un objeto media.
  • En relación con text: agrega un campo text con el contenido deseado.

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

Consulta todos los campos header disponibles.

body

Obligatorio.

Consulta todos los campos body disponibles.

footer

Opcional.

Consulta todos los campos footer disponibles.

action

Obligatorio.

Debes agregar al menos un button e incluir type, title y id para los botones. No puedes agregar más de 3 botones. En title, el máximo es de 20 caracteres.

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

Consulta todos los campos action disponibles.

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

Mensajes de solicitud de ubicación

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" 
  }
}
PropiedadDescripción

type

Se configura en location_request_message.

body.type

Se configura en text.

body.text

Configura el texto que deseas mostrar encima del botón Enviar ubicación.

action.name

Se configura en send_location.

Mensajes de procesos

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.

Paso 2: Agrega parámetros de mensajes comunes

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

Paso 3: Haz una solicitud 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}"
  }]
}

Paso 4: Verifica los webhooks

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
}