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.
Este guia ensina a enviar cada um dos tipos de mensagem interativa. As mensagens interativas fornecem aos usuários uma forma mais simples de encontrar e selecionar o que eles querem da sua empresa no WhatsApp. Durante os testes, os bots de bate-papo que usaram os recursos de mensagens interativas alcançaram taxas de resposta e conversão significativamente mais altas em comparação com aqueles baseados em texto.
Tipos de mensagens interativas:
Veja como as mensagens de texto se comparam às interativas:
Veja um exemplo de como combinar mensagens de lista e com botões de resposta no mesmo fluxo:
Quando comparadas com listas baseadas em texto, as mensagens interativas fornecem um formato mais simples e consistente para as pessoas encontrarem e selecionarem o que querem da empresa. Durante os testes, as pessoas tinham níveis de compreensão mais elevados ao interagir com esses recursos.
Durante os testes, os bots de bate-papo que usaram os recursos de mensagens interativas alcançaram taxas de resposta e conversão significativamente mais altas em comparação com aqueles baseados em texto.
Com preenchimento dinâmico em tempo real, as mensagens podem ser personalizadas para cada cliente ou situação. Por exemplo, você pode mostrar uma mensagem de lista com horários disponíveis para agendamento ou usar os botões de resposta para mostrar endereços de entrega anteriores.
Para usar as mensagens interativas, não é preciso aplicar modelos nem receber aprovação prévia.
As mensagens de lista são a melhor escolha para apresentar várias opções, por exemplo:
Os botões de resposta são os melhores para oferecer respostas rápidas com um conjunto limitado de opções, como:
Os botões de resposta são úteis em casos de uso "personalizados", para os quais uma resposta genérica não é adequada.
As mensagens do Flows são indicadas para comunicação estruturada em uma ou mais telas, como nestes casos:
Com as mensagens do Flows, as empresas oferecem uma experiência de usuário mais rica e envolvente que ajuda os clientes a realizar ações no WhatsApp sem visitar outro app ou site.
No nível da API, as mensagens interativas são definidas ao especificar type
como interactive
e adicionar o objeto interactive
. Em geral, elas incluem as quatro partes principais header
, body
, footer
e action
:
{ "recipient_type": "individual", "to" : "whatsapp-id", "type": "interactive" "interactive":{ "type": "list" | "button" | ..., "header": {}, "body": {}, "footer": {}, "action": {} } }
Veja abaixo mais informações sobre como enviar essas mensagens.
Antes de enviar a mensagem, obtenha o ID do WhatsApp do destinatário fazendo uma chamada para o nó /contacts
.
Recomendamos que você configure os webhooks para receber notificações sobre mensagens de entrada e o status de mensagens. Dessa forma, é possível acompanhar o envio da mensagem e as respostas recebidas de usuários. Consulte Webhooks para a API Local para ver mais informações.
interactive
Para enviar uma mensagem de lista, monte um objeto interactive
do tipo list
com estes componentes:
Objeto | Descrição |
---|---|
| Opcional. Se você incluir o objeto, será necessário definir o tipo de cabeçalho como texto e adicionar um campo com o conteúdo desejado. Máximo de 60 caracteres. |
| Obrigatório. O corpo da mensagem. Máximo de 1.024 caracteres. |
| Opcional. O rodapé da mensagem. |
| Obrigatório. Na ação, você deve aninhar estes elementos:
Adicione no mínimo um objeto |
Ao final do processo, o objeto interactive
deverá ter a seguinte aparência:
"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 uma mensagem com botão de resposta, monte um objeto interactive
do tipo button
com estes componentes:
Objeto | Descrição |
---|---|
| Opcional. Para mensagens interativas com Depois de selecionar o
Exemplo: "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" } } } |
| Obrigatório. |
| Opcional. |
| Obrigatório. Adicione pelo menos um Não é possível usar espaços no começo ou no final dos IDs de botões. Exemplo: "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" } } ] } |
Ao final do processo, o objeto interactive
deverá ter a seguinte aparência:
"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
As mensagens de solicitação de localização incluem um corpo de texto e o botão Enviar localização, no qual os usuários podem tocar. Quando o usuário toca no botão, uma tela para compartilhar a localização é exibida, permitindo que o usuário a use a fim de realizar essa ação.
Para enviar uma mensagem de solicitação de localização, primeiro monte um objeto interactive
com texto a ser exibido:
{ "type": "location_request_message", "body": { "type": "text", "text": "<TEXT>" }, "action": { "name": "send_location" } }
Propriedade | Descrição |
---|---|
| Defina como |
| Defina como |
| Defina o texto que deseja exibir acima do botão Enviar localização. |
| Defina como |
As mensagens do Flows incluem um botão de chamada para ação no qual os usuários podem tocar. Quando clicam no botão, o fluxo personalizado é exibido.
Para enviar uma mensagem do Flows, monte um objeto interactive
do tipo flow
. Veja aqui todas as informações.
Quando o objeto interativo estiver pronto, acrescente os outros parâmetros que compõem a mensagem (recipient_type
, to
e type
). Lembre-se de definir type
como interactive
.
{ "recipient_type": "individual", "to" : "whatsapp-id", // WhatsApp ID of your recipient "type": "interactive", "interactive":{ // Your interactive object } }
Consulte os parâmetros comuns a todos os tipos de mensagem aqui.
POST
para /messages
Faça uma chamada POST
para o ponto de extremidade /messages
com o objeto JSON
criado nas etapas 1 e 2. Caso a mensagem seja enviada com sucesso, você receberá a seguinte resposta:
{ "messages": [{ "id": "{message-id}" }] }
Se você configurou os webhooks, verifique se há alterações no status da mensagem, bem como respostas vindas dos usuários.
Os webhooks de respostas a mensagens interativas incluem o novo componente interactive
, que contém informações sobre a escolha do usuário. Consulte Components para ver mais informações.
Veja uma solicitação de webhook descrevendo que um usuário compartilhou a própria localização:
{ "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" } ] } ] }
O componente location
na carga contém a latitude e a longitude do usuário. Vale ressaltar que address
e name
são opcionais para o usuário e podem não ser incluídos.
"location": { "address": "1071 5th Ave, New York, NY 10128", #Optional "latitude": 40.782910059774, "longitude": -73.959075808525, "name": "Solomon R. Guggenheim Museum" #Optional }