Skip to main content

Como enviar uma Reação à mensagem e/ou Typing no WhatsApp utilizando o Blip

  • November 26, 2025
  • 1 comentário
  • 51 Visualizações

pablosouza
Blipper

Olá, pessoal! Neste tópico quero compartilhar com vocês um método para enviar uma reação à mensagem e também um typing (aquela animação “digitando…”) no seu Contato Inteligente construído com o Blip.
 

 

 

Este método é válido apenas para o canal WhatsApp e será implementado via ação de Requisição HTTP.

Teremos como referência para esse guia, três documentações:
1. Send message | Blip Docs
2. Typing indicators | Meta Developers
3. Reaction messages| Meta Developers

Vamos pro passo-a-passo?

Ah! No final do tópico tem um extra para facilitar a sua implementação 👀
 

Pré-requisitos

  1. ​​​​​Seu Contato Inteligente deve estar publicado no canal WhatsApp.
  2. Você precisará da sua URL de envio de mensagens e da Chave de autorização do seu roteador Blip.

 

Passo 1: Posicionamento da Ação

Como nossa reação e/ou typing será incluída referenciando um input do usuário, a ação deve ser incluída num local onde ela seja executada após a inserção do input. Sendo assim, o local ideal é nas Ações de Saída de um bloco onde você aguarda o input do usuário.

Vamos então criar nossa ação de Requisição HTTP no local indicado. 

 

 

Passo 2: Configuração da Requisição HTTP

Agora faremos o envio de uma requisição para o endpoint de enviar mensagens.

1. Tipo de Requisição

 

2. Headers

Inclua os seguintes headers:

Chave

Valor

Content-Type

application/json

Authorization

Sua chave de autenticação do roteador

 

 

3. Body

O corpo da requisição será um JSON contendo o objeto de typing ou reaction, seguindo a estrutura da API da Meta e utilizando variáveis da biblioteca Blip para referência.

Opção A: Enviar Reação (Emoji)

Para enviar uma reação à mensagem do usuário, utilize o JSON abaixo no corpo da requisição:

 

{

  "id":"{{random.guid}}",

  "to":"{{contact.identity}}",

  "type":"application/json",

  "content":{

    "type":"reaction",

    "reaction":{

      "message_id":"{{input.message.id}}",

      "emoji":"Seu Emoji Aqui"

    }

  }

}

 

  • ➡️ id: Utiliza a variável {{random.guid}} para gerar um guid para a nossa requisição.
  • ➡️ to: Utiliza a variável {{contact.identity}} para recuperar durante a execução o identificador do usuário.
  • ➡️ message_id: Utiliza a variável {{input.message.id}} para reagir à mensagem que o usuário acabou de enviar.
  • ➡️ emoji: Substitua "Seu Emoji Aqui" pelo emoji desejado (ex: "👍", "❤️", "🔥").

 

 

Opção B: Enviar Typing (Animação digitando)

Para enviar a animação de "digitando…" (typing), utilize o JSON abaixo no corpo da requisição:

 

{

  "id":"{{random.guid}}",

  "to":"{{contact.identity}}",

  "type":"application/json",

  "content":{

    "messaging_product":"whatsapp",

    "status":"read",

    "message_id":"{{input.message.id}}",

    "typing_indicator":{

      "type":"text"

    }

  }

}

 

 

Passo 3: Aplicação e cuidados

  • Mensagem por Mensagem: Esta requisição pode ser enviada mensagem por mensagem. Se você deseja que boa parte ou quase todos os inputs do usuário recebam uma reação/typing, você deve incluir esta ação nas Ações de Saída de todos os blocos que você deseja incluir a reação e/ou typing.
  • Ação Global: Para aplicar em todos os inputs do usuário em um fluxo, você pode configurar a requisição nas Ações Globais de Saída. ⚠️ Cuidado: Ao usar ações globais, todos os itens que o usuário enviar (incluindo possíveis inputs inesperados) receberão a reação/typing.
  • Teste e Validação: Sempre faça testes para garantir que a funcionalidade se encaixa corretamente na sua solução.
  • Uso do typing: Para evitar uma experiência ruim para o usuário, faça a exibição da animação somente em casos que haja uma resposta do seu Contato Inteligente.
  • Tempo do typing: Conforme a documentação da Meta, o “digitando…” desaparecerá assim que outra mensagem for enviada, ou após 25 segundos, o que ocorrer primeiro. Nesse sentido, pode ser interessante aumentar o tempo de resposta dos conteúdos no Builder/Studio.

Prontinho! Ao executar o fluxo, a Requisição HTTP será enviada imediatamente após o input do usuário, resultando no envio da reação ou da animação de typing para o usuário final no WhatsApp.

 

EXTRA:

Para facilitar a sua implementação: Use o JSON abaixo para copiar e colar o bloco que utilizamos como exemplo, nele já estão as ações de reação e typing.

Para copiar, basta selecionar todo o texto e, para colar, vá até o seu Builder/Studio, clique com o botão direito e selecione ‘colar’. Apenas certifique-se de atualizar a URL para Enviar Mensagens e a Chave de Autorização.

 

Curtiu o tutorial? Deixe seu comentário e compartilhe sua versão implementada com a gente!


JSON do bloco exemplo:

[{"$contentActions":[{"input":{"bypass":false,"$cardContent":{"document":{"id":"6c8ee4f5-095f-4a85-ab68-a6f8497f62af","type":"text/plain","textContent":"User input","content":"User input"},"editable":false,"deletable":true,"position":"right","editing":false},"$invalid":false},"$invalid":false,"$$hashKey":"object:6596"}],"$conditionOutputs":[],"$enteringCustomActions":[],"$leavingCustomActions":[{"$id":"a9ebc599-281a-4abb-9002-d867c9404065","$typeOfContent":"","type":"ProcessHttp","$title":"Send reaction to user input","$invalid":false,"settings":{"headers":{"Content-Type":"application/json","Authorization":"{{secret.routerKey}}"},"method":"POST","body":"{\n    \"id\": \"{{random.guid}}\",\n    \"to\": \"{{contact.identity}}\",\n    \"type\": \"application/json\",\n    \"content\": {\n        \"type\": \"reaction\",\n        \"reaction\": {\n            \"message_id\": \"{{input.message.id}}\",\n            \"emoji\": \"💙\"\n        }\n    }\n}","uri":"{{resource.urlSendMessage}}","responseStatusVariable":"statusReaction","responseBodyVariable":"responseReaction"},"conditions":[]},{"$id":"38b1a8f5-0600-49ec-80c1-786a8deb8d9a","$typeOfContent":"","type":"ProcessHttp","$title":"Send typing to user input","$invalid":false,"settings":{"headers":{"Content-Type":"application/json","Authorization":"{{secret.routerKey}}"},"method":"POST","body":"{\n    \"id\": \"{{random.guid}}\",\n    \"to\": \"{{contact.identity}}\",\n    \"type\": \"application/json\",\n    \"content\": {\n        \"messaging_product\": \"whatsapp\",\n        \"status\": \"read\",\n        \"message_id\": \"{{input.message.id}}\",\n        \"typing_indicator\": {\n            \"type\": \"text\"\n        }\n    }\n}","uri":"{{resource.urlSendMessage}}","responseStatusVariable":"statusReaction","responseBodyVariable":"responseReaction"},"conditions":[]}],"$inputSuggestions":[],"$defaultOutput":{"stateId":"onboarding","$invalid":false,"typeOfStateId":"state"},"$localCustomActions":[],"isAiGenerated":false,"$tags":[],"id":"dbb07965-7dbf-46c1-9a82-d59d8444e060","root":false,"$title":"ON.1.0.1 - Waiting for user input","$position":{"top":"814px","left":"582px"},"$invalidContentActions":false,"$invalidOutputs":false,"$invalidCustomActions":false,"$invalid":false}]

1 comentário

Luisa_Caldas
Blipper
  • Blipper
  • November 26, 2025

Gente, que sucesso! Deixa o contato inteligente ainda mais humanizado, né?
Mandou bem demais! Super didático!