Pular para o conteúdo principal

WhatsApp Webhook

Este workflow gerencia o ciclo completo de recebimento de mensagens do WhatsApp:

  1. Valida o webhook com o Facebook (requisito da Meta)
  2. Recebe mensagens de múltiplos números WhatsApp
  3. Armazena logs para auditoria e análise
  4. Roteia cada mensagem para a inbox correta no Chatwoot

O Que Este Fluxo Faz

Fluxo 1: Validação do Webhook (GET)

  • Trigger: Webhook GET /meta
  • Função: Responde ao desafio de verificação do Facebook
  • Resposta: Retorna o parâmetro hub.challenge recebido
  • Uso: Executado uma vez durante a configuração inicial no Facebook Business Manager

Fluxo 2: Recebimento de Mensagens (POST)

  1. Recebe webhook do WhatsApp Business API no endpoint /meta
  2. Armazena no banco MySQL (tabela webhook):
    • payload: JSON completo da mensagem
    • origin: Número de telefone ou ID da conta WhatsApp Business
    • type: "whatsapp"
    • external_id: ID da mensagem do WhatsApp
    • created_at: Timestamp
  3. Identifica o número de destino via Switch baseado no ID da conta WhatsApp Business (entry[0].id)
    • ⚠️ Importante: O identificador usado é o ID da conta WhatsApp Business (ex: 1323147952771978), não o número de telefone
    • Este ID é obtido em: https://developers.facebook.com/ > Seu App > WhatsApp > Configuração > ID da conta do WhatsApp Business
  4. Roteia para Chatwoot enviando POST para a URL específica de cada inbox:
    • Formato: https://chatwoot.zamply.com.br/webhooks/whatsapp/+55XXXXXXXXXXX
    • Body: Payload original do WhatsApp

Fluxo 3: Mensagens de Pedidos (Order Messages)

  • Trigger: Mensagens do tipo order (pedidos do catálogo)
  • Ação: Executa workflow separado para processamento especial de pedidos
  • Modo: Assíncrono (não aguarda conclusão)

Setup

1. Configurar Webhook no Facebook Business Manager

  1. Acesse Meta for Developers > WhatsApp > Configuração
  2. Configure a URL do webhook: https://n8n-queue.incibrasil.com.br/webhook/meta
  3. Ao validar, o Facebook enviará um GET com hub.challenge
  4. Este workflow responderá automaticamente com o valor correto

2. Adicionar Novo Número WhatsApp

Para adicionar um novo número ao roteamento:

  1. No nó Switch, clique em "Add Routing Rule"

  2. Configure a condição:

    • Campo: {{ $('Whatsapp Messages').item.json.body.entry[0].id }}
    • Operador: equals
    • Valor: ID da conta WhatsApp Business (obtido no Facebook)
    • Nome da saída: Número no formato +55 XX XXXX XXXX
  3. Adicione um nó HTTP Request:

    • Método: POST
    • URL: https://chatwoot.zamply.com.br/webhooks/whatsapp/+55XXXXXXXXXXX
    • Body Type: JSON
    • JSON Body: {{ $('Whatsapp Messages').item.json.body }}
  4. Conecte a saída do Switch ao novo nó HTTP Request

Observações Importantes

  • ✅ Este workflow deve estar sempre ativo (marcado como ativo no N8N)
  • ✅ É um dos fluxos principais do sistema (tag: principal_flow)
  • ⚠️ Mudanças neste workflow afetam todos os números WhatsApp configurados
  • ⚠️ O ID da conta (entry[0].id) é diferente do número de telefone
  • ⚠️ Cada número WhatsApp precisa ter uma inbox correspondente no Chatwoot