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:
- Webhook – recebe o POST de novas mensagens do WhatsApp.
- Set (Filtrar Dados) – extrai
remoteJid
(identificador do chat) e o texto da mensagem. - Redis (Listar Mensagens) – adiciona a mensagem ao final de uma lista no Redis, usando o
remoteJid
como chave. - Wait – pausa o fluxo por 6 segundos, permitindo agrupar mensagens enviadas rapidamente.
- Redis (Puxar Mensagens) – lê toda a lista de mensagens armazenadas.
- If – compara a última mensagem bufferizada com a recebida agora, evitando enviar duplicatas.
- No Operation – nó alvo quando a mensagem é igual à última (fluxo parado).
- Set (Edit Fields) – monta um único campo com todas as mensagens concatenadas e preserva o
whatsapp
. - Redis (Delete) – limpa a lista de buffer no Redis.
- LangChain Agent – define o prompt (“define”) usando o texto concatenado.
- OpenAI Chat Model – envia o prompt ao modelo
gpt-4o-mini
. - 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
- 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
).
- OpenAI:
- Crie uma credencial OpenAi API com sua chave secreta.
- Selecione essa credencial no nó OpenAI Chat Model.
- Webhook Externo:
- Aponte seu provedor de WhatsApp (ex.: Twilio, 360dialog) para o endpoint público:
https://SEU_N8N_URL/webhook/buffer
- Aponte seu provedor de WhatsApp (ex.: Twilio, 360dialog) para o endpoint público:
🔎 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
- Inicie o n8n e certifique-se de que esteja ativo (
active: true
). - 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?" } } } }
- 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.