n8n-nodes-wa-gateway
v0.8.4
Published
Node n8n para o wa-gateway — API HTTP multi-sessão de WhatsApp
Maintainers
Readme
n8n-nodes-wa-gateway
Node comunitário do n8n para o wa-gateway.
Seis nodes:
| Node | Pra quê |
|---|---|
| wa-gateway | Enviar texto/imagem/documento/vídeo/áudio/localização/enquete/cartão de contato, resultado da enquete (placar), botões e templates (Cloud API), reagir, encaminhar, criar/gerenciar sessões, grupos, contatos (incl. listar agenda), etiquetas do Business, ler histórico. Mencionar usuário em grupo (@número no texto + campo Mencionar) em texto/imagem/documento/vídeo/áudio/enquete. Aceita binário do nó anterior (converte pra base64 sozinho). |
| wa-gateway Trigger | Recebe eventos de uma sessão e roteia por tipo: saídas separadas para Texto · Imagem · Áudio · Vídeo · Documento · Outros · Eventos · Enquete (sem precisar de Switch). A saída Enquete entrega o voto já decifrado e achatado (pollId, voter, voterName, selectedOptions, removed) quando você assina message.poll_vote. Opcionalmente baixa a mídia e anexa como binário (data). Ao ativar o workflow, registra a URL do webhook na sessão automaticamente. Valida HMAC-SHA256 se você definir um segredo. |
| wa-gateway Fila (debounce) | Agrupa mensagens picadas por contato (Redis). Enfileirar → Wait → Coletar: se chegou mensagem nova na janela, sai por Superado (essa execução desiste); senão sai por Continuar com a fila unificada em text / messages. Cancelar descarta lotes pendentes depois que o bot respondeu. Precisa da credencial Redis do n8n. |
| wa-gateway Pausa do bot | Handoff humano por contato (Redis + TTL). Pausar quando você responde manualmente (fromMe), Verificar antes de deixar a IA responder (saídas Ativo / Pausado), Retomar pra devolver pro bot. Precisa da credencial Redis do n8n. |
| wa-gateway Agente | Agente de IA nativo do WhatsApp. Conecte o Chat Model (OpenAI/Anthropic/Gemini/Ollama…) e, opcionalmente, um nó de Memória (chave = chatId) e nós de Ferramenta — reaproveita as credenciais que você já tem no n8n. Traz ferramentas de WhatsApp embutidas (enviar_imagem/_audio/_documento/_localizacao/_botoes, checar_numero, listar_grupos, buscar_historico, escalar_para_humano), entende imagem/áudio recebidos (baixa e manda pro modelo — visão/áudio) e responde sozinho pelo wa-gateway (com "digitando…"). Saídas: Resposta · Handoff · Erro. |
| wa-gateway OTP | Código de verificação de número por WhatsApp. Enviar código (o gateway gera, guarda o hash no Redis, manda — com brand, template, validade e callback de entrega opcionais), Conferir código (saídas Válido / Inválido, com reason e attemptsLeft) e Cancelar código. Rate limit / código errado / envio falho saem por Falha / Inválido sem quebrar o fluxo. Se o seu app já gera e guarda o código, não precisa deste node — use wa-gateway (Enviar texto) com callbackUrl. |
Instalar
Pelo painel do n8n (Settings → Community Nodes → Install): n8n-nodes-wa-gateway
Manual / dev:
cd clients/n8n
npm install
npm run build
# copie a pasta dist para ~/.n8n/custom/ (ou use N8N_CUSTOM_EXTENSIONS)Credencial
wa-gateway API:
- Base URL —
https://seu-gateway.exemplo.com - API Key — a
API_KEYdo.envou uma chave da tabelaapi_keys
Exemplos
Responder mensagem com IA:
wa-gateway Trigger (events: message) → AI Agent → wa-gateway (Mensagem · Enviar texto, chatId = {{$json.payload.chatId}}, text = {{$json.output}}).
Enviar uma imagem que veio de um HTTP Request / Google Drive:
node anterior produz binário na propriedade data → wa-gateway (Mensagem · Enviar imagem, Fonte da mídia = Binário do nó anterior).
Atendente de IA num nó só (o jeito rápido):
wa-gateway Trigger ──▶ wa-gateway Agente
▲ Modelo (OpenAI/Anthropic/…) ▲ Memória (Postgres/Redis, key = {{$json.payload.chatId}}) ▲ Ferramentas (opcional)
├─ Resposta ─▶ (já enviou pro WhatsApp)
├─ Handoff ─▶ notifica um humano
└─ Erro ─▶ logAtendente de IA (controle fino: mensagem picada + handoff):
wa-gateway Trigger ──▶ fromMe? ──true──▶ wa-gateway Pausa (Pausar) ▶ (fim)
└──false──▶ wa-gateway Pausa (Verificar)
├─ Pausado ─▶ (fim)
└─ Ativo ──▶ wa-gateway Fila (Enfileirar)
└▶ Wait 15s
└▶ wa-gateway Fila (Coletar)
├─ Superado ─▶ NoOp
└─ Continuar ─▶ AI Agent
└▶ wa-gateway (Enviar texto)
└▶ wa-gateway Fila (Cancelar)Coletar entrega {{ $json.text }} (mensagens da janela unidas) pro agente. O Cancelar no fim aborta lotes que ainda estejam na janela de 15s.
Anti-ban: marque Enfileirar nos envios pra passar pela fila com pacing por número.
OTP num fluxo só:
Webhook do seu app ──▶ wa-gateway OTP (Enviar código, to = {{$json.phone}}, brand = "MeuApp")
└─ Sucesso ─▶ responde { id } pro app
Webhook "conferir" ──▶ wa-gateway OTP (Conferir código, to = {{$json.phone}}, code = {{$json.code}})
├─ Válido ─▶ marca telefone verificado
└─ Inválido ─▶ devolve reason / attemptsLeft