Enviar plantillas de mensajes interactivas

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

Se ofrecen dos tipos de botones predefinidos:

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

Estos botones se pueden adjuntar a mensajes de texto o multimedia. Una vez creadas y aprobadas las plantillas de mensajes interactivas, puedes usarlas en los mensajes de notificaciones, así como en los mensajes del servicio de atención al cliente.

Antes de empezar

Debes:

Cuando se apruebe la plantilla de mensaje, puedes usar la API para enviar un mensaje.

Restricciones

  • En el caso de las plantillas de llamada a la acción, puedes añadir dos botones (un botón de cada tipo como máximo: para llamar a un número de teléfono o para visitar un sitio web).
  • En el caso de las plantillas de respuesta rápida, puedes añadir un máximo de tres botones.

Paso 1: Realizar 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: Comprobar la respuesta de la API

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

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

Una respuesta incorrecta contiene un objeto de error que incluye una cadena de error, un código de error y otros datos.

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 de webhook configurado.

Consulta Mensajes de error y de estado para obtener más información sobre los errores.

Paso 3 opcional: Administrar la acción de un usuario

Cuando un usuario hace clic en un botón de respuesta rápida, se envía una respuesta a la empresa. Consulta Devolución de llamada con un clic del botón de respuesta rápida para obtener información. Los usuarios también pueden decidir no hacer clic en el botón y simplemente enviarte un mensaje de formato libre.

Devolución de llamada con un clic del botón de respuesta rápida

When your customer clicks on a quick reply button, a response is sent. Below is an example of the callback format. Nota: A customer may not click a button and either reply to the interactive message or just send you a message. Make sure that you are able to support this type of scenario as well. See the Webhooks documentation for more information.
{
    "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

En estos ejemplos se muestra el proceso de configuración de plantillas de mensajes interactivas, que comienza con la creación de la plantilla en Business Manager y el envío de las plantillas de mensajes con llamadas a la API al extremo messages.

Recordatorio de un viaje

En este ejemplo se muestra la creación de una plantilla interactiva de mensaje multimedia con botones de respuesta rápida.

1. Crea la plantilla interactiva de mensaje multimedia en Business Manager.

2. La llamada a la API messages añade la información de los 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 el mensaje recordatorio del viaje con botones de respuesta rápida.

Envío de un producto

En este ejemplo se muestra la creación de una plantilla interactiva de mensaje multimedia con botones de número de teléfono y URL.

1. Crea la plantilla interactiva de mensaje multimedia en Business Manager:

2. La llamada a la API messages añade la información de los 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 el mensaje de envío del producto con botones de llamada telefónica y URL: