A API Local está sendo descontinuada. Consulte o documento Descontinuação da API Local para ver mais informações e saber como migrar para nossa API de Nuvem de última geração.

We are making changes to the WhatsApp Business Platform pricing model. See Pricing Updates on the WhatsApp Business Platform.

Como enviar modelos de mensagem interativa

Os modelos de mensagem interativa expandem o conteúdo que pode ser enviado ao irem além do modelo de mensagem padrão e dos tipos de modelo de mensagens de mídia para incluir botões interativos com o objeto components.

Estes são os dois tipos de botões predefinidos que oferecemos:

  • Chamada para ação: permite que o cliente ligue para um telefone e visite um site.
  • Resposta rápida: permite que o cliente responda com um SMS simples.

Esses botões podem ser anexados a mensagens de texto ou de mídia. Depois de criados e aprovados, os modelos de mensagem interativa podem ser usados em mensagens de notificação e de atendimento ao cliente.

Antes de começar

Você precisa:

Assim que o modelo for aprovado, você poderá usar a API para enviar mensagens.

Limitações

  • Em modelos de chamada para ação, é possível adicionar dois botões, até um de cada tipo (ligar para o telefone e visitar o site).
  • Em modelos de resposta rápida, você pode adicionar até três botões.

Etapa 1: fazer uma solicitação POST para /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

Etapa 2: verificar a resposta da API

Uma resposta bem-sucedida inclui um objeto messages com um id.

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

Uma resposta malsucedida contém um objeto com uma string de erro, um código correspondente e outras informações.

Se um modelo for encaminhado a uma conta que não pode recebê-lo, o erro 1026 (ReceiverIncapable) será enviado ao servidor de Webhook configurado.

Consulte Mensagens de erro e status para obter mais informações sobre erros.

Etapa 3 (opcional): gerenciar ações do usuário

Uma resposta é enviada à empresa quando o usuário clica no botão de resposta rápida. Para ver mais informações, leia Retorno de chamada para um clique no botão de resposta rápida. Além disso, em vez de clicar no botão, os usuários podem optar por enviar uma mensagem de formato livre.

Retorno de chamada para um clique no botão de resposta rápida

Uma mensagem será enviada quando o cliente clicar em um botão de resposta rápida. Confira abaixo um exemplo do formato de retorno de chamada. Observação: o cliente nem sempre clicará no botão. É possível que ele responda à mensagem interativa ou simplesmente decida enviar uma mensagem por conta própria. Verifique se você oferece compatibilidade para esse tipo de situação. Consulte a documentação de Webhooks para obter mais informações.
{
    "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": [ { ... } ]
}

Exemplos

Estes exemplos ilustram o processo de configuração de modelos de mensagem interativa, desde a criação de um modelo no Gerenciador de Negócios até o envio dele com chamadas de API para o ponto de extremidade messages.

Lembrete de viagem

Este exemplo mostra a criação de um modelo de mensagem interativa com botões de resposta rápida.

1. Crie o modelo de mensagem interativa no Gerenciador de Negócios.

2. A chamada de API messages adiciona as informações do parâmetro.

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. O cliente recebe uma mensagem de lembrete de viagem com botões de resposta rápida.

Envio de produtos

Este exemplo mostra a criação de um modelo de mensagem interativa com botões de número de telefone e URL.

1. Crie o modelo de mensagem interativa no Gerenciador de Negócios:

2. A chamada de API messages adiciona as informações do parâmetro.

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. O cliente recebe uma mensagem de envio de produto com botões de chamada de telefone e URL: