Tutorial Completo: Buffer de Mensagens do WhatsApp no N8N

Este artigo mostra passo a passo como construir um buffer de mensagens enviadas via WhatsApp utilizando o n8n. O fluxo recebe cada nova mensagem, armazena em uma fila no Redis, aguarda um intervalo para agrupar mensagens enviadas em sequência, filtra duplicatas e então envia todo o histórico agrupado para um agente de IA (LangChain + OpenAI).


🛠️ Pré-requisitos

Antes de começar, você precisará de:

  • n8n (v3.x) instalado e rodando.
  • Redis acessível (local ou remoto), com credenciais configuradas no n8n.
  • Conta e credenciais OpenAI (usadas no nó de AI Agent).
  • Um webhook público ou túnel (ex.: ngrok) para expor o endpoint /buffer do n8n e receber chamadas do WhatsApp.

🔍 Visão Geral do Fluxo

O fluxo “Buffer Mensagem” é composto por 12 nós:

  1. Webhook – recebe o POST de novas mensagens do WhatsApp.
  2. Set (Filtrar Dados) – extrai remoteJid (identificador do chat) e o texto da mensagem.
  3. Redis (Listar Mensagens) – adiciona a mensagem ao final de uma lista no Redis, usando o remoteJid como chave.
  4. Wait – pausa o fluxo por 6 segundos, permitindo agrupar mensagens enviadas rapidamente.
  5. Redis (Puxar Mensagens) – lê toda a lista de mensagens armazenadas.
  6. If – compara a última mensagem bufferizada com a recebida agora, evitando enviar duplicatas.
  7. No Operation – nó alvo quando a mensagem é igual à última (fluxo parado).
  8. Set (Edit Fields) – monta um único campo com todas as mensagens concatenadas e preserva o whatsapp.
  9. Redis (Delete) – limpa a lista de buffer no Redis.
  10. LangChain Agent – define o prompt (“define”) usando o texto concatenado.
  11. OpenAI Chat Model – envia o prompt ao modelo gpt-4o-mini.
  12. Simple Memory – armazena sessão de conversa com base no remoteJid.

O resultado é que, se um usuário enviar várias mensagens em até 6 segundos de intervalo, elas serão agrupadas e enviadas juntas para o agente de IA; mensagens repetidas são filtradas.


⚙️ Configurando Credenciais

  1. Redis:
    • No painel Credentials do n8n, adicione uma credencial do tipo Redis apontando para seu servidor (host, porta, senha).
    • Use o mesmo nome nas configurações de cada nó Redis (ex.: Redis account 3).
  2. OpenAI:
    • Crie uma credencial OpenAi API com sua chave secreta.
    • Selecione essa credencial no nó OpenAI Chat Model.
  3. Webhook Externo:
    • Aponte seu provedor de WhatsApp (ex.: Twilio, 360dialog) para o endpoint público: https://SEU_N8N_URL/webhook/buffer

🔎 Detalhamento dos Nós

1. Webhook

  • Método: POST
  • Path: buffer
    Recebe payload JSON do WhatsApp.

2. Set (“Filtrar Dados”)

Extrai:

  • whatsapp{{ $json.body.data.key.remoteJid }}
  • mensagem{{ $json.body.data.message.conversation }}

3. Redis (“Listar Mensagens”)

  • Operação: push
  • Lista: chave igual ao remoteJid
  • Mensagem: o texto recebido

4. Wait

  • Intervalo: 6 segundos
    Agrupa mensagens enviadas em curto espaço de tempo.

5. Redis (“Puxar Mensagens”)

  • Operação: get
  • Key: remoteJid
  • Output: array de mensagens em mensagens.

6. If

Compara último elemento de mensagens com mensagem atual.

  • Se iguais, evita reprocessamento (vai para No Operation).
  • Caso contrário, segue o fluxo de envio.

7. Set (“Edit Fields”)

Concatena o array:

{{ $('Puxar Mensagens').item.json.mensagens.join('\n') }}

Guarda em mensagens e preserva whatsapp.

8. Redis (Delete)

Limpa a lista, preparando para o próximo agrupamento.

9–12. AI Agent & OpenAI & Memory

  • AI Agent: define como prompt tipo “define” usando todo o texto concatenado.
  • OpenAI Chat Model: envia para gpt-4o-mini.
  • Simple Memory: mantém contexto de conversa por remoteJid.

🚀 Testando o Fluxo

  1. Inicie o n8n e certifique-se de que esteja ativo (active: true).
  2. Envie mensagens sequenciais via WhatsApp (ou simule o POST) para o endpoint: POST https://SEU_N8N_URL/webhook/buffer Content-Type: application/json { "body": { "data": { "key": { "remoteJid": "[email protected]" }, "message": { "conversation": "Olá, tudo bem?" } } } }
  3. Aguarde ≥ 6 segundos e envie outra mensagem. Observe no Execution List do n8n como as mensagens são agrupadas e enviadas ao nó AI Agent.

🎯 Conclusão & Próximos Passos

  • Customização: Ajuste o intervalo do Wait, filtros no If ou crie tratamentos para tipos diferentes de mensagem (imagens, áudios).
  • Escalabilidade: Para alto volume, considere usar listas Redis por TTL ou streams.
  • Monitoramento: Adicione nós de Logging ou Error Workflow para capturar falhas.

Com este fluxo, você garante que seu agente de IA receba blocos de conversas mais coerentes — melhorando qualidade das respostas e evitando retrabalho em casos de mensagens enviadas em sequência.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *