{"id":51,"date":"2026-10-20T19:32:50","date_gmt":"2026-10-20T19:32:50","guid":{"rendered":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/"},"modified":"2026-10-20T19:32:50","modified_gmt":"2026-10-20T19:32:50","slug":"mensagens-interativas-whatsapp-api","status":"publish","type":"post","link":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/","title":{"rendered":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows"},"content":{"rendered":"\n<p><em>Atualizado em 20\/10\/2026<\/em><\/p>\n\n\n\n<p>Mensagens interativas s\u00e3o envios com <code>type: \"interactive\"<\/code> que mostram ao usu\u00e1rio bot\u00f5es de resposta (at\u00e9 3), uma lista (at\u00e9 10 op\u00e7\u00f5es), um bot\u00e3o de link, um pedido de localiza\u00e7\u00e3o, um carrossel ou um WhatsApp Flow; quando ele toca, o webhook devolve o <code>id<\/code> que voc\u00ea definiu. S\u00e3o mensagens de servi\u00e7o, portanto s\u00f3 podem ser enviadas com a janela de 24 horas aberta. Para iniciar uma conversa com bot\u00f5es ou Flow, use um template.<\/p>\n\n\n\n<p>Abaixo est\u00e3o os payloads de cada tipo, os limites de caracteres, o formato da resposta no webhook e um roteador em Node.js para tratar tudo. Os exemplos usam a Vectalk (<code>https:\/\/apis.vectalk.com.br\/api\/messages<\/code>), que aceita o mesmo corpo da Cloud API da Meta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vis\u00e3o geral dos tipos<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Tipo<\/th><th><code>interactive.type<\/code><\/th><th>Limites principais<\/th><th>O que volta no webhook<\/th><\/tr><\/thead><tbody><tr><td>Bot\u00f5es de resposta<\/td><td><code>button<\/code><\/td><td>At\u00e9 3 bot\u00f5es; r\u00f3tulo de 20 caracteres; corpo de 1.024<\/td><td><code>interactive.button_reply<\/code> com <code>id<\/code> e <code>title<\/code><\/td><\/tr><tr><td>Lista<\/td><td><code>list<\/code><\/td><td>At\u00e9 10 se\u00e7\u00f5es e 10 linhas no total; bot\u00e3o de 20 caracteres<\/td><td><code>interactive.list_reply<\/code> com <code>id<\/code>, <code>title<\/code> e <code>description<\/code><\/td><\/tr><tr><td>Bot\u00e3o de link<\/td><td><code>cta_url<\/code><\/td><td>1 bot\u00e3o; r\u00f3tulo de 20 caracteres<\/td><td>Nada (abre o navegador)<\/td><\/tr><tr><td>Pedido de localiza\u00e7\u00e3o<\/td><td><code>location_request_message<\/code><\/td><td>Corpo de 1.024 caracteres<\/td><td>Mensagem <code>type: \"location\"<\/code><\/td><\/tr><tr><td>Carrossel de m\u00eddia<\/td><td><code>carousel<\/code><\/td><td>De 2 a 10 cart\u00f5es com imagem ou v\u00eddeo<\/td><td>Depende do bot\u00e3o usado<\/td><\/tr><tr><td>Flow<\/td><td><code>flow<\/code><\/td><td><code>flow_message_version<\/code> igual a <code>\"3\"<\/code><\/td><td><code>interactive.nfm_reply<\/code> com <code>response_json<\/code><\/td><\/tr><tr><td>Produto e multiproduto<\/td><td><code>product<\/code>, <code>product_list<\/code><\/td><td>Ligados a um cat\u00e1logo<\/td><td>Pedido (<code>type: \"order\"<\/code>)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>M\u00eddia simples (imagem, v\u00eddeo, documento, \u00e1udio) e localiza\u00e7\u00e3o fixa n\u00e3o s\u00e3o interativas, mas costumam aparecer nos mesmos fluxos e tamb\u00e9m est\u00e3o neste guia.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bot\u00f5es de resposta<\/h2>\n\n\n\n<p>O formato mais usado para confirmar, escolher entre poucas op\u00e7\u00f5es ou desviar para um atendente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\">curl -X POST https:\/\/apis.vectalk.com.br\/api\/messages \\\n  -H \"Authorization: Bearer SEU_TOKEN\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"messaging_product\": \"whatsapp\",\n    \"to\": \"5584999999999\",\n    \"type\": \"interactive\",\n    \"interactive\": {\n      \"type\": \"button\",\n      \"header\": { \"type\": \"text\", \"text\": \"Consulta de amanh\u00e3\" },\n      \"body\": { \"text\": \"Ol\u00e1, Marina. Sua consulta est\u00e1 marcada para 21\/10 \u00e0s 9h. Voc\u00ea confirma?\" },\n      \"footer\": { \"text\": \"Cl\u00ednica Exemplo\" },\n      \"action\": {\n        \"buttons\": [\n          { \"type\": \"reply\", \"reply\": { \"id\": \"confirmar_8812\", \"title\": \"Confirmar\" } },\n          { \"type\": \"reply\", \"reply\": { \"id\": \"remarcar_8812\", \"title\": \"Remarcar\" } },\n          { \"type\": \"reply\", \"reply\": { \"id\": \"atendente\", \"title\": \"Falar com algu\u00e9m\" } }\n        ]\n      }\n    }\n  }'<\/code><\/pre>\n\n\n\n<p>Regras da Meta para esse tipo:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>at\u00e9 3 bot\u00f5es, com r\u00f3tulos \u00fanicos de at\u00e9 20 caracteres;<\/li>\n\n\n<li><code>id<\/code> de at\u00e9 256 caracteres;<\/li>\n\n\n<li>corpo de at\u00e9 1.024 caracteres e rodap\u00e9 de at\u00e9 60;<\/li>\n\n\n<li>cabe\u00e7alho opcional de texto, imagem, v\u00eddeo ou documento.<\/li>\n\n<\/ul>\n\n\n\n<p>Use o <code>id<\/code> para carregar contexto. No exemplo, <code>confirmar_8812<\/code> j\u00e1 diz a a\u00e7\u00e3o e o agendamento, e o webhook n\u00e3o depende do texto do bot\u00e3o. Quando o usu\u00e1rio toca, chega:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">\"interactive\": {\n  \"type\": \"button_reply\",\n  \"button_reply\": { \"id\": \"confirmar_8812\", \"title\": \"Confirmar\" }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Lista interativa<\/h2>\n\n\n\n<p>Para mais de tr\u00eas op\u00e7\u00f5es: card\u00e1pio, hor\u00e1rios, departamentos, planos. O usu\u00e1rio toca no bot\u00e3o e abre um painel com as linhas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"list\",\n    \"header\": { \"type\": \"text\", \"text\": \"Hor\u00e1rios dispon\u00edveis\" },\n    \"body\": { \"text\": \"Escolha um hor\u00e1rio para a sua visita t\u00e9cnica.\" },\n    \"footer\": { \"text\": \"Hor\u00e1rio de Bras\u00edlia\" },\n    \"action\": {\n      \"button\": \"Ver hor\u00e1rios\",\n      \"sections\": [\n        {\n          \"title\": \"Quarta, 22\/10\",\n          \"rows\": [\n            { \"id\": \"slot_2210_09\", \"title\": \"09:00\", \"description\": \"T\u00e9cnico dispon\u00edvel\" },\n            { \"id\": \"slot_2210_14\", \"title\": \"14:00\", \"description\": \"T\u00e9cnico dispon\u00edvel\" }\n          ]\n        },\n        {\n          \"title\": \"Quinta, 23\/10\",\n          \"rows\": [\n            { \"id\": \"slot_2310_10\", \"title\": \"10:00\" }\n          ]\n        }\n      ]\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Campo<\/th><th>Limite<\/th><\/tr><\/thead><tbody><tr><td><code>action.button<\/code><\/td><td>20 caracteres, um bot\u00e3o<\/td><\/tr><tr><td>Se\u00e7\u00f5es<\/td><td>At\u00e9 10, t\u00edtulo de at\u00e9 24 caracteres<\/td><\/tr><tr><td>Linhas<\/td><td>At\u00e9 10 somando todas as se\u00e7\u00f5es<\/td><\/tr><tr><td><code>rows[].title<\/code><\/td><td>24 caracteres<\/td><\/tr><tr><td><code>rows[].description<\/code><\/td><td>72 caracteres, opcional<\/td><\/tr><tr><td><code>rows[].id<\/code><\/td><td>200 caracteres<\/td><\/tr><tr><td>Corpo<\/td><td>4.096 caracteres<\/td><\/tr><tr><td>Cabe\u00e7alho<\/td><td>S\u00f3 texto, 60 caracteres<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>O limite de 10 linhas \u00e9 o total da mensagem, n\u00e3o por se\u00e7\u00e3o. Se voc\u00ea tem mais op\u00e7\u00f5es, quebre em etapas (primeiro o dia, depois o hor\u00e1rio). A escolha volta como <code>list_reply<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">\"interactive\": {\n  \"type\": \"list_reply\",\n  \"list_reply\": { \"id\": \"slot_2210_14\", \"title\": \"14:00\", \"description\": \"T\u00e9cnico dispon\u00edvel\" }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Bot\u00e3o de link (CTA URL)<\/h2>\n\n\n\n<p>Esconde uma URL longa atr\u00e1s de um bot\u00e3o. \u00datil para boleto, rastreio, \u00e1rea do cliente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"cta_url\",\n    \"body\": { \"text\": \"Sua segunda via est\u00e1 pronta.\" },\n    \"action\": {\n      \"name\": \"cta_url\",\n      \"parameters\": {\n        \"display_text\": \"Abrir boleto\",\n        \"url\": \"https:\/\/cliente.exemplo.com.br\/boletos\/7731?origem=whatsapp\"\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>O r\u00f3tulo vai at\u00e9 20 caracteres e o corpo at\u00e9 1.024. O toque abre o navegador e n\u00e3o gera mensagem do usu\u00e1rio, ent\u00e3o n\u00e3o renova a <a href=\"https:\/\/vectalk.com.br\/blog\/janela-24-horas-whatsapp\/\">janela de 24 horas<\/a>. Para medir cliques, use par\u00e2metros na pr\u00f3pria URL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Localiza\u00e7\u00e3o: enviar e pedir<\/h2>\n\n\n\n<p>Para enviar um endere\u00e7o fixo (loja, ponto de retirada), use <code>type: \"location\"<\/code>. Latitude e longitude s\u00e3o obrigat\u00f3rias; nome e endere\u00e7o s\u00e3o opcionais.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"location\",\n  \"location\": {\n    \"latitude\": -5.7945,\n    \"longitude\": -35.2110,\n    \"name\": \"Loja Exemplo Centro\",\n    \"address\": \"Av. Exemplo, 100 - Natal, RN\"\n  }\n}<\/code><\/pre>\n\n\n\n<p>Para pedir a localiza\u00e7\u00e3o do usu\u00e1rio (entrega, atendimento em campo), use a mensagem interativa com o bot\u00e3o de enviar localiza\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"location_request_message\",\n    \"body\": { \"text\": \"Para calcular o frete, toque no bot\u00e3o e envie a sua localiza\u00e7\u00e3o.\" },\n    \"action\": { \"name\": \"send_location\" }\n  }\n}<\/code><\/pre>\n\n\n\n<p>A resposta chega como uma mensagem comum de localiza\u00e7\u00e3o, com <code>latitude<\/code>, <code>longitude<\/code> e, se o usu\u00e1rio quiser compartilhar, <code>name<\/code> e <code>address<\/code>. O campo <code>context.id<\/code> aponta para a mensagem de pedido, o que ajuda a ligar a resposta ao pedido certo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Carrossel de m\u00eddia<\/h2>\n\n\n\n<p>O carrossel mostra de 2 a 10 cart\u00f5es com rolagem horizontal. Cada cart\u00e3o precisa de cabe\u00e7alho de imagem ou v\u00eddeo, pode ter corpo de at\u00e9 160 caracteres e deve ter um bot\u00e3o de link ou bot\u00f5es de resposta r\u00e1pida, com o mesmo tipo e a mesma quantidade em todos os cart\u00f5es. Funciona bem para mostrar varia\u00e7\u00f5es de um produto. A estrutura completa est\u00e1 na p\u00e1gina de carrossel da documenta\u00e7\u00e3o da Meta.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">WhatsApp Flows<\/h2>\n\n\n\n<p>Flows s\u00e3o formul\u00e1rios de v\u00e1rias telas dentro do WhatsApp: cadastro, agendamento, pesquisa, simula\u00e7\u00e3o de cr\u00e9dito. O conte\u00fado das telas \u00e9 definido num arquivo JSON (Flow JSON), e o resultado volta para voc\u00ea no webhook.<\/p>\n\n\n\n<p>A Meta lista como pr\u00e9-requisitos ter a empresa verificada e manter a qualidade das mensagens alta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Criar, subir o JSON e publicar<\/h3>\n\n\n\n<p>Na Vectalk, o ciclo \u00e9 feito por API com token de inst\u00e2ncia:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-bash\"># Cria o Flow em rascunho\ncurl -X POST https:\/\/apis.vectalk.com.br\/api\/flows \\\n  -H \"Authorization: Bearer SEU_TOKEN_DE_INSTANCIA\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{ \"name\": \"agendamento_visita\", \"categories\": [\"APPOINTMENT_BOOKING\"] }'\n\n# Envia o flow.json (multipart)\ncurl -X POST https:\/\/apis.vectalk.com.br\/api\/flows\/FLOW_ID\/assets \\\n  -H \"Authorization: Bearer SEU_TOKEN_DE_INSTANCIA\" \\\n  -F \"file=@flow.json\" -F \"name=flow.json\" -F \"asset_type=FLOW_JSON\"\n\n# Publica\ncurl -X POST https:\/\/apis.vectalk.com.br\/api\/flows\/FLOW_ID\/publish \\\n  -H \"Authorization: Bearer SEU_TOKEN_DE_INSTANCIA\"<\/code><\/pre>\n\n\n\n<p>A resposta do upload traz <code>validation_errors<\/code>. Corrija tudo antes de publicar: para mudan\u00e7as grandes em um Flow j\u00e1 publicado, a Meta recomenda criar um novo clonando o anterior com <code>clone_flow_id<\/code>, e um Flow publicado n\u00e3o pode ser exclu\u00eddo, s\u00f3 descontinuado.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Enviar o Flow dentro da janela<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"interactive\",\n  \"interactive\": {\n    \"type\": \"flow\",\n    \"header\": { \"type\": \"text\", \"text\": \"Agendar visita\" },\n    \"body\": { \"text\": \"Escolha data, hor\u00e1rio e endere\u00e7o em poucos passos.\" },\n    \"footer\": { \"text\": \"Leva cerca de 1 minuto\" },\n    \"action\": {\n      \"name\": \"flow\",\n      \"parameters\": {\n        \"flow_message_version\": \"3\",\n        \"flow_id\": \"FLOW_ID\",\n        \"flow_token\": \"ag_5584999999999_20261020\",\n        \"flow_cta\": \"Agendar\",\n        \"flow_action\": \"navigate\",\n        \"flow_action_payload\": { \"screen\": \"INICIO\", \"data\": { \"nome\": \"Marina\" } }\n      }\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p>O <code>flow_token<\/code> \u00e9 seu: use-o para identificar a sess\u00e3o quando a resposta voltar. A Meta recomenda CTA de at\u00e9 30 caracteres, sem emoji. Para iniciar o contato com um Flow fora da janela, crie um template com bot\u00e3o do tipo <code>FLOW<\/code>, como explica o guia de <a href=\"https:\/\/vectalk.com.br\/blog\/templates-whatsapp-api\/\">templates da API do WhatsApp<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Receber a resposta<\/h3>\n\n\n\n<p>Quando o usu\u00e1rio conclui, chega uma mensagem interativa do tipo <code>nfm_reply<\/code>. O <code>response_json<\/code> \u00e9 uma string com os dados definidos na a\u00e7\u00e3o de conclus\u00e3o do Flow:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">\"interactive\": {\n  \"type\": \"nfm_reply\",\n  \"nfm_reply\": {\n    \"name\": \"flow\",\n    \"body\": \"Sent\",\n    \"response_json\": \"{\\\"flow_token\\\":\\\"ag_5584999999999_20261020\\\",\\\"data\\\":\\\"2026-10-22\\\",\\\"horario\\\":\\\"14:00\\\"}\"\n  }\n}<\/code><\/pre>\n\n\n\n<p>Fique de olho na sa\u00fade do Flow. Se o endpoint do Flow ficar inst\u00e1vel, a Meta muda o status para <code>THROTTLED<\/code> (envio limitado a 10 mensagens por hora) e, se piorar, para <code>BLOCKED<\/code>, quando ele n\u00e3o pode ser enviado nem aberto. As mudan\u00e7as chegam pelo webhook <code>flows<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00eddia: imagem, v\u00eddeo, documento e \u00e1udio<\/h2>\n\n\n\n<p>M\u00eddia vai por <code>link<\/code> (URL p\u00fablica) ou por <code>id<\/code> (obtido no upload). Pela Vectalk, o upload \u00e9 feito em <code>\/api\/media<\/code> e devolve o <code>media_id<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-json\">{\n  \"messaging_product\": \"whatsapp\",\n  \"to\": \"5584999999999\",\n  \"type\": \"document\",\n  \"document\": {\n    \"link\": \"https:\/\/arquivos.exemplo.com.br\/contratos\/7731.pdf\",\n    \"filename\": \"contrato-7731.pdf\",\n    \"caption\": \"Segue o contrato para assinatura.\"\n  }\n}<\/code><\/pre>\n\n\n\n<p>Com <code>link<\/code>, a Cloud API guarda o arquivo em cache por 10 minutos e reaproveita se a URL for igual. Se o arquivo mudou mas a URL n\u00e3o, acrescente um par\u00e2metro aleat\u00f3rio na query string. Em cabe\u00e7alhos de bot\u00f5es, a Meta indica preferir o <code>id<\/code> de m\u00eddia enviada por upload em vez do <code>link<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Roteando as respostas no webhook<\/h2>\n\n\n\n<p>Um roteador simples para os tipos acima, aproveitando que a Vectalk entrega o payload da Meta sem altera\u00e7\u00e3o:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"language-javascript\">function rotear(msg) {\n  if (msg.type === \"location\") {\n    return calcularFrete(msg.from, msg.location.latitude, msg.location.longitude, msg.context?.id);\n  }\n  if (msg.type !== \"interactive\") return tratarTextoLivre(msg);\n\n  const i = msg.interactive;\n  switch (i.type) {\n    case \"button_reply\":\n      if (i.button_reply.id === \"atendente\") return transferirParaHumano(msg.from);\n      return executarAcao(msg.from, i.button_reply.id);\n    case \"list_reply\":\n      return reservarHorario(msg.from, i.list_reply.id);\n    case \"nfm_reply\": {\n      const dados = JSON.parse(i.nfm_reply.response_json);\n      return salvarAgendamento(dados.flow_token, dados);\n    }\n    default:\n      return registrarNaoTratado(msg);\n  }\n}<\/code><\/pre>\n\n\n\n<p>Respostas de bot\u00f5es de template (resposta r\u00e1pida) chegam com <code>type: \"button\"<\/code>, um formato diferente do <code>button_reply<\/code>; trate os dois. O guia de <a href=\"https:\/\/vectalk.com.br\/blog\/webhook-whatsapp-api\/\">webhooks da API do WhatsApp<\/a> mostra o servidor completo com fila e deduplica\u00e7\u00e3o, e o artigo sobre <a href=\"https:\/\/vectalk.com.br\/blog\/chatbot-ia-whatsapp-api\/\">chatbot com IA no WhatsApp<\/a> mostra como combinar bot\u00f5es e respostas geradas por IA.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como escolher o tipo certo<\/h2>\n\n\n\n<p>A escolha depende do que voc\u00ea precisa receber de volta:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Necessidade<\/th><th>Tipo indicado<\/th><th>Motivo<\/th><\/tr><\/thead><tbody><tr><td>Sim ou n\u00e3o, confirmar ou remarcar<\/td><td>Bot\u00f5es de resposta<\/td><td>Um toque, resposta estruturada e renova\u00e7\u00e3o da janela<\/td><\/tr><tr><td>Escolher entre 4 e 10 op\u00e7\u00f5es<\/td><td>Lista<\/td><td>Cabe numa mensagem s\u00f3, com descri\u00e7\u00e3o por linha<\/td><\/tr><tr><td>Levar para pagamento, rastreio ou portal<\/td><td>Bot\u00e3o de link<\/td><td>Esconde a URL e mant\u00e9m o texto limpo<\/td><\/tr><tr><td>Endere\u00e7o de entrega ou visita<\/td><td>Pedido de localiza\u00e7\u00e3o<\/td><td>Coordenadas exatas, sem digita\u00e7\u00e3o<\/td><\/tr><tr><td>Coletar v\u00e1rios campos (nome, data, endere\u00e7o, prefer\u00eancias)<\/td><td>Flow<\/td><td>Telas com valida\u00e7\u00e3o, sem idas e voltas no chat<\/td><\/tr><tr><td>Mostrar varia\u00e7\u00f5es de produto<\/td><td>Carrossel ou mensagens de cat\u00e1logo<\/td><td>Compara\u00e7\u00e3o visual lado a lado<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Se a conversa precisa de mais de duas perguntas em sequ\u00eancia, um Flow costuma ser mais curto para o usu\u00e1rio do que v\u00e1rios bot\u00f5es seguidos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Boas pr\u00e1ticas<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>R\u00f3tulos curtos e com verbo.<\/strong> &#8220;Confirmar&#8221; e &#8220;Remarcar&#8221; funcionam melhor que frases. O limite de 20 caracteres corta o resto.<\/li>\n\n\n<li><strong>Sempre uma sa\u00edda para pessoa.<\/strong> A Pol\u00edtica de Mensagens do WhatsApp Business pede caminhos claros de escalonamento em experi\u00eancias automatizadas, como a transfer\u00eancia para um atendente humano. Um bot\u00e3o &#8220;Falar com algu\u00e9m&#8221; resolve.<\/li>\n\n\n<li><strong>IDs est\u00e1veis.<\/strong> Trate o <code>id<\/code> como contrato com o seu backend. Mudar o texto do bot\u00e3o n\u00e3o deve quebrar o roteamento.<\/li>\n\n\n<li><strong>Aceite texto livre.<\/strong> O usu\u00e1rio pode ignorar os bot\u00f5es e digitar. O roteador precisa entender &#8220;sim&#8221;, &#8220;pode ser \u00e0s 14h&#8221; ou um \u00e1udio.<\/li>\n\n\n<li><strong>N\u00e3o conte com a ordem de entrega.<\/strong> A Meta avisa que a ordem de entrega de uma sequ\u00eancia de mensagens n\u00e3o \u00e9 garantida. Se a ordem importa, espere o status <code>delivered<\/code> da anterior antes de mandar a pr\u00f3xima.<\/li>\n\n\n<li><strong>Uma pergunta por mensagem.<\/strong> Tr\u00eas mensagens interativas seguidas confundem e geram respostas para a mensagem errada. O <code>context.id<\/code> do webhook mostra a qual mensagem o usu\u00e1rio respondeu.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Perguntas frequentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Posso enviar bot\u00f5es para um cliente que n\u00e3o falou comigo hoje?<\/h3>\n\n\n\n<p>N\u00e3o como mensagem interativa. Fora da janela de 24 horas, use um template com bot\u00f5es de resposta r\u00e1pida, de link ou de Flow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e1 para colocar mais de 3 bot\u00f5es de resposta?<\/h3>\n\n\n\n<p>Na mensagem interativa, n\u00e3o. Use uma lista (at\u00e9 10 op\u00e7\u00f5es). Em templates, o limite \u00e9 de at\u00e9 10 bot\u00f5es, com regras por tipo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mensagens interativas s\u00e3o cobradas?<\/h3>\n\n\n\n<p>S\u00e3o mensagens de servi\u00e7o. Desde 1\u00ba de outubro de 2026, a Meta d\u00e1 1.000 mensagens de servi\u00e7o gratuitas por n\u00famero por m\u00eas e cobra a partir da\u00ed, exceto dentro da janela de ponto de entrada gratuito aberta por an\u00fancio.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Preciso de endpoint pr\u00f3prio para usar Flows?<\/h3>\n\n\n\n<p>N\u00e3o para Flows simples, em que os dados ficam no pr\u00f3prio Flow JSON e voltam no <code>nfm_reply<\/code>. Flows que buscam dados em tempo real (hor\u00e1rios dispon\u00edveis, pre\u00e7o) usam a a\u00e7\u00e3o <code>data_exchange<\/code> e exigem um endpoint seu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Construa conversas interativas com a Vectalk<\/h2>\n\n\n\n<p>Na Vectalk, bot\u00f5es, listas, localiza\u00e7\u00e3o, m\u00eddia e Flows usam o mesmo payload da Cloud API, e as respostas chegam no webhook no formato da documenta\u00e7\u00e3o da Meta. Um token atende todas as suas contas, a coexist\u00eancia com o app WhatsApp Business est\u00e1 dispon\u00edvel e a cobran\u00e7a da Meta passa pela Vectalk, sem cart\u00e3o cadastrado na Meta. Crie sua conta em <a href=\"https:\/\/apps.vectalk.com.br\/register\">apps.vectalk.com.br\/register<\/a>, veja os exemplos em <a href=\"https:\/\/docs.vectalk.com.br\/\">docs.vectalk.com.br<\/a> ou fale com o time pela <a href=\"https:\/\/vectalk.com.br\/ajuda.html\">Central de Ajuda<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Fontes oficiais consultadas em 20\/10\/2026:<\/strong> <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/interactive-reply-buttons-messages\">Mensagens com bot\u00f5es de resposta<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/messages\/interactive-list-messages\">Mensagens de lista<\/a>, <a href=\"https:\/\/developers.facebook.com\/documentation\/business-messaging\/whatsapp\/flows\/guides\/sendingaflow\">Envio de Flows<\/a>.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[8],"tags":[],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-uncategorized-pt"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk<\/title>\n<meta name=\"description\" content=\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk\" \/>\n<meta property=\"og:description\" content=\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Vectalk\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-20T19:32:50+00:00\" \/>\n<meta name=\"author\" content=\"wanderleyfcunha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"wanderleyfcunha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/\"},\"author\":{\"name\":\"wanderleyfcunha\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"headline\":\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows\",\"datePublished\":\"2026-10-20T19:32:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/\"},\"wordCount\":1705,\"commentCount\":0,\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/\",\"name\":\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-20T19:32:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\"},\"description\":\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/mensagens-interativas-whatsapp-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/\",\"name\":\"Blog Vectalk\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/vectalk.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/ff36ecd9d8257856f227f8e5d639db2b\",\"name\":\"wanderleyfcunha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g\",\"caption\":\"wanderleyfcunha\"},\"sameAs\":[\"https:\\\/\\\/vectalk.com.br\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk","description":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/","og_locale":"en_US","og_type":"article","og_title":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk","og_description":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.","og_url":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/","og_site_name":"Blog Vectalk","article_published_time":"2026-10-20T19:32:50+00:00","author":"wanderleyfcunha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"wanderleyfcunha","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/#article","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/"},"author":{"name":"wanderleyfcunha","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"headline":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows","datePublished":"2026-10-20T19:32:50+00:00","mainEntityOfPage":{"@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/"},"wordCount":1705,"commentCount":0,"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/","url":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/","name":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows - Blog Vectalk","isPartOf":{"@id":"https:\/\/vectalk.com.br\/blog\/#website"},"datePublished":"2026-10-20T19:32:50+00:00","author":{"@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b"},"description":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, link, m\u00eddia, localiza\u00e7\u00e3o e Flows, com payloads, limites de cada tipo e leitura no webhook.","breadcrumb":{"@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vectalk.com.br\/blog\/mensagens-interativas-whatsapp-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vectalk.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Mensagens interativas na API do WhatsApp: bot\u00f5es, listas, m\u00eddia, localiza\u00e7\u00e3o e Flows"}]},{"@type":"WebSite","@id":"https:\/\/vectalk.com.br\/blog\/#website","url":"https:\/\/vectalk.com.br\/blog\/","name":"Blog Vectalk","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vectalk.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/vectalk.com.br\/blog\/#\/schema\/person\/ff36ecd9d8257856f227f8e5d639db2b","name":"wanderleyfcunha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/21c37077f1731eb558973f27a7b647d55f72fde5200a843ac5f5345b247ea725?s=96&d=mm&r=g","caption":"wanderleyfcunha"},"sameAs":["https:\/\/vectalk.com.br\/blog"]}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":0,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"wp:attachment":[{"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vectalk.com.br\/blog\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}