wwebjs-rd

n8n community node for WhatsApp Web using whatsapp-web.js in-process (no external API needed)

Package Information

Released: this month
Downloads: 0 weekly / 0 monthly
Latest Version: 1.0.5

Documentation

n8n-nodes-wwebjs

Pacote de Custom Nodes para n8n que executa o whatsapp-web.js diretamente dentro do processo do n8n (em memória via Singleton globalThis), sem precisar rodar nenhuma API ou servidor Node.js separado.


Como funciona (Sem Servidor Externo)

  1. WWebJsManager (Singleton em Memória): Mantém um Map global (globalThis.__N8N_WWEBJS_SESSIONS__) dentro do processo do n8n com as instâncias ativas do Client do whatsapp-web.js e autenticação persistente via LocalAuth (salva em ~/.n8n/wwebjs_sessions).
  2. WhatsApp Web (wwebjs) Trigger: Inicia a sessão quando o workflow é ativado (ou clicando em Listen for Test Event), gera o QR Code (já convertido para imagem PNG binária + Base64 no output do n8n!) e escuta mensagens recebidas em tempo real.
  3. WhatsApp Web (wwebjs) (Action Node): Reutiliza a mesma sessão aberta em memória pelo sessionId para enviar textos, arquivos/mídias (URL, Binário do n8n ou Base64), áudios PTT (como gravados na hora), figurinhas, simular "digitando...", listar conversas ou consultar/gerar QR Code sob demanda.

Instalação na sua Instância do GCP

Como o whatsapp-web.js utiliza o Puppeteer (Chromium headless) por baixo dos panos, a máquina ou container onde o n8n roda precisa ter as bibliotecas gráficas básicas do Chromium instaladas.

Cenário A: n8n instalado direto na VM do GCP (PM2 / systemd / npm)

  1. Copie esta pasta para a sua instância no GCP (ou suba em um repositório Git/NPM).
  2. Na pasta do projeto na VM, execute o script automatizado:
    chmod +x setup-gcp.sh
    ./setup-gcp.sh
    
    (O script instala as bibliotecas do Chromium via apt-get, compila o TypeScript com npm run build e instala o pacote dentro de ~/.n8n/custom).
  3. Reinicie o n8n (pm2 restart n8n ou sudo systemctl restart n8n).

Cenário B: n8n rodando em Docker na VM do GCP

Se o seu n8n roda em container Docker no GCP:

  1. Compile o projeto:
    npm install
    npm run build
    
  2. Use o Dockerfile.n8n incluso neste projeto para gerar uma imagem do n8n já com o Chromium e o seu nó pré-instalados:
    docker build -f Dockerfile.n8n -t meu-n8n-wwebjs:latest .
    
  3. Suba o seu container usando a imagem meu-n8n-wwebjs:latest (mantendo o volume -v ~/.n8n:/home/node/.n8n para persistir tanto seus workflows quanto a sessão autenticada do WhatsApp).

Cenário C: Publicar no NPM (Instalação pela Interface Web do n8n)

Se quiser instalar direto pela tela Settings -> Community Nodes do n8n:

  1. Certifique-se de que o Chromium está instalado na máquina/container do GCP (apt install -y chromium ou apk add chromium).
  2. Altere o "name" no package.json caso queira publicar na sua conta do npm (precisa começar com n8n-nodes-) e rode npm publish.
  3. No painel do n8n, vá em Settings -> Community Nodes -> Install e digite o nome do pacote.

Como Ler o QR Code e Usar no n8n

Você tem duas formas de conectar o WhatsApp sem sair do n8n:

Forma 1: Pelo Action Node (Mais Fácil para Conectar a Primeira Vez)

  1. Adicione o nó WhatsApp Web (wwebjs) em um workflow.
  2. Escolha:
    • Session ID: default
    • Recurso: Sessão
    • Operação: Iniciar / Obter Status e QR Code
  3. Clique em Test step (Executar nó).
  4. O nó aguardará alguns segundos até o Chromium abrir e retornará o QR Code como uma imagem binária (qrCode) no painel da direita do n8n! Basta clicar em View na imagem binária e escanear com seu celular.

Forma 2: Pelo Trigger Node

  1. Adicione o nó WhatsApp Web (wwebjs) Trigger.
  2. Deixe marcado o evento QR Code Gerado (qr) e Mensagem Recebida (message).
  3. Quando o QR Code for gerado, o Trigger disparará um evento contendo a imagem PNG binária do QR Code (que você pode visualizar na execução ou até enviar para seu e-mail/Telegram automaticamente).
  4. Assim que autenticado, a sessão fica salva em ~/.n8n/wwebjs_sessions e os outros nós WhatsApp Web (wwebjs) com o mesmo Session ID já podem enviar mensagens!

Discussion