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 plantillas de mensajes interactivos

Las plantillas de mensajes interactivos amplían el contenido que puedes enviar a los destinatarios más allá de los tipos de plantilla de mensajes estándares y plantilla de mensajes multimedia para incluir botones interactivos mediante el objeto components.

Existen dos tipos de botones predefinidos disponibles:

  • Llamada a la acción: permite al cliente llamar a un número de teléfono y visitar un sitio web.
  • Respuesta rápida: permite al cliente enviar un mensaje de texto sencillo.

Estos botones pueden adjuntarse a mensajes de texto o mensajes multimedia. Una vez que las plantillas de mensajes interactivos se hayan creado y aprobado, podrás utilizarlas en mensajes de notificación y de atención al cliente.

Antes de empezar

Deberás hacer lo siguiente:

Una vez que se haya aprobado la plantilla de mensajes, podrás utilizar la API para enviar un mensaje.

Restricciones

  • En las plantillas de llamada a la acción, puedes agregar dos botones, hasta uno por cada tipo (llamar al número de teléfono y visitar el sitio web).
  • En el caso de las plantillas de respuesta rápida, puedes agregar hasta tres botones.

Paso 1: Haz una solicitud POST a /messages

POST /v1/messages
{
    "to": "recipient_wa_id",
    "type": "template",
    "template": {
        "namespace": "your-namespace",
        "language": {
            "policy": "deterministic",
            "code": "your-language-and-locale-code"
        },
        "name": "your-template-name",
        "components": [
            {
                "type" : "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    }
                ]
            # end header
            },
            {
                "type" : "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "replacement_text"
                    },
                    {
                        "type": "currency",
                        "currency" : {
                            "fallback_value": "$100.99",
                            "code": "USD",
                            "amount_1000": 100990
                        }
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "February 25, 1977",
                            "day_of_week": 5,
                            "day_of_month": 25,
                            "year": 1977,
                            "month": 2,
                            "hour": 15,
                            "minute": 33, #OR
                            "timestamp": 1485470276
                        }
                    },
                    {
                        ...
                        # Any additional template parameters
                    }
                ] 
            # end body
            },

            # The following part of this code example includes several possible button types, 
            # not all are required for an interactive message template API call.
            {
                "type": "button",
                "sub_type" : "quick_reply",
                "index": "0", 
                "parameters": [
                    {
                        "type": "payload",
                        # Business Developer-defined payload
                        "payload":"aGlzIHRoaXMgaXMgY29vZHNhc2phZHdpcXdlMGZoIGFTIEZISUQgV1FEV0RT"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "1", 
                "parameters": [
                    {
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "9rwnB8RbYmPF5t2Mn09x4h"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type" : "url",
                "index": "2",
                "parameters": [
                    {                    
                        "type": "text",
                        # Business Developer-defined dynamic URL suffix
                        "text": "ticket.pdf"
                    }
                ]
            }
        ]
    }
}

Parámetros

Paso 2: Verifica la respuesta de tu API

Una respuesta correcta incluye un objeto messages con un valor de id.

{
  "messages": [{
    "id": "gBEGkYiEB1VXAglK1ZEqA1YKPrU"
  }]
}

Una respuesta errónea contiene un objeto incorrecto con una cadena incorrecta, un código de error e información adicional.

Si se envía una plantilla a una cuenta que no puede recibirla, se enviará el error 1026 (ReceiverIncapable) en el objeto de error al servidor del webhook configurado.

Para obtener más información sobre errores, consulta Códigos de error y de estado.

Paso 3 (opcional): Encargarse de las acciones de los usuarios

Cuando un usuario hace clic en un botón de respuesta rápida, se envía una respuesta a la empresa. Para obtener más información, consulta Devolución de llamada de un clic en el botón de respuesta rápida. Además, los usuarios pueden elegir no hacer clic en el botón y enviarte un mensaje sin formato.

Devolución de llamada de un clic en el botón de respuesta rápida

Se envía una respuesta cuando un cliente hace clic en el botón de respuesta rápida. A continuación, se incluye un ejemplo del formato de devolución de llamada. Nota: Los clientes no pueden hacer clic en un botón, responder al mensaje interactivo, ni enviarte un mensaje. Asegúrate de que este tipo de situaciones también se encuentren admitidas. Consulta la documentación de Webhooks para obtener más información.
{
    "contacts": [
        {
            "profile": {
                "name": "Kerry Fisher"
            },
            "wa_id": "16505551234"
        }
    ],
    "messages": [
        {
            "button": {
                "payload": "No-Button-Payload",
                "text": "No"
            },
            "context": {
                "from": "16315558007",
                "id": "gBGGFmkiWVVPAgkgQkwi7IORac0"
            },
            "from": "16505551234",
            "id": "ABGGFmkiWVVPAgo-sKD87hgxPHdF",
            "timestamp": "1591210827",
            "type": "button"
        }
    ]
    # If there are any errors, an errors field (array) will be present        
    "errors": [ { ... } ]
}

Ejemplos

Estos ejemplos muestran el proceso de configuración de plantillas de mensajes interactivos a partir de la creación de plantillas en el administrador comercial y el envío de plantillas de mensajes con llamadas a la API al extremo messages.

Recordatorio de viaje

Este ejemplo muestra la creación de una plantilla de mensajes multimedia interactivos con botones de respuesta rápida.

1. Crea la plantilla de mensajes multimedia interactivos en el administrador comercial.

2. La llamada a la API messages se agrega en la información de parámetros.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "upcoming_trip_reminder",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [
                    {
                        "type": "text",
                        "text": "12/26"
                    }
                ]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "*Ski Trip*"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "29th July 2019, 8:00am",
                            "day_of_month": "29",
                            "year": "2019",
                            "month": "7",
                            "hour": "8",
                            "minute": "00"
                        }
                    },
                    {
                            "type": "text",
                            "text": "*Squaw Valley Ski Resort, Tahoe*"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 0,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "Yes-Button-Payload"
                    }
                ]
            },
            {
                "type": "button",
                "sub_type": "quick_reply",
                "index": 1,
                "parameters": [
                    {
                        "type": "payload",
                        "payload": "No-Button-Payload"
                    }
                ]
            }
        ]
    }
}

3. El cliente recibe un mensaje de recordatorio de viaje con botones de respuesta rápida.

Envío de productos

Este ejemplo muestra la creación de una plantilla de mensajes multimedia interactivos con botones de llamada al número de teléfono y URL.

1. Crea la plantilla de mensajes multimedia interactivos en el administrador comercial.

2. La llamada a la API messages se agrega en la información de parámetros.

POST /v1/messages
{
    "to": "your-test-recipient-wa-id",
    "recipient_type": "individual",
    "type": "template",
    "template": {
        "namespace": "88b39973_f0d5_54e1_29cf_e80f1e3da4f2",
        "name": "oculus_shipment_update",
        "language": {
            "code": "en",
            "policy": "deterministic"
        },
        "components": [
            {
                "type": "header",
                "parameters": [{
                    "type": "image",
                    "image": {
                        "link": "link-to-your-image"
                    }
                }]
            },
            {
                "type": "body",
                "parameters": [
                    {
                        "type": "text",
                        "text": "Anand"
                    },
                    {
                        "type": "text",
                        "text": "Quest"
                    },
                    {
                        "type": "text",
                        "text": "113-0921387"
                    },
                    {
                        "type": "date_time",
                        "date_time" : {
                            "fallback_value": "23rd Nov 2019",
                            "day_of_month": "20",
                            "year": "2019",
                            "month": "9"
                        }
                    }
                ] 
            },
            {
                "type": "button",
                "index": "0",
                "sub_type": "url",
                "parameters": [
                    {
                        "type": "text",
                        "text": "1Z999AA10123456784"
                    }
                ]
            }
        ]
    }
}

3. El cliente recibe un mensaje de envío de producto con botones de llamada de teléfono y URL: