chatwoot-develop/progresso/resolucao-webhook-wuzapi.md

1.6 KiB

Resolução: Falha no Recebimento de Webhooks Wuzapi

Contexto

Mensagens enviadas para o número WhatsApp não estavam chegando na caixa de entrada do Chatwoot no ambiente local, apesar de mensagens de saída funcionarem.

Diagnóstico

  1. Backend (Controller): O Webhooks::WuzapiController existia mas o método process_payload estava vazio. Ele recebia o webhook, retornava 200 OK, mas não fazia nada.
  2. Ambiente (Túnel): O comando make run inicia apenas o servidor Rails/Sidekiq, sem o túnel Ngrok necessário para expor o localhost para a internet (Wuzapi).
  3. Segurança: O ID da Inbox usado nos testes iniciais (3) era diferente do ID do canal para o qual o webhook estava sendo enviado, causando confusão inicial.

Solução Técnica

  1. Implementação do Controller: Conectamos o controller ao serviço existente:

    # app/controllers/webhooks/wuzapi_controller.rb
    def process_payload
      Whatsapp::IncomingMessageWuzapiService.new(inbox: @inbox, params: params.to_unsafe_hash).perform
      head :ok
    rescue StandardError => e
      Rails.logger.error e
      head :internal_server_error
    end
    
  2. Fluxo de Execução: Padronizado o uso de make force_run_tunnel para garantir que o Ngrok suba junto com a aplicação.

Validação

  • Teste simulado via curl confirmou criação de mensagem no banco.
  • Teste real ("Teste 123") confirmado pelo usuário e validado nos logs com resposta automática do Agente ("Olá! Como posso ajudar...").

Arquivos Alterados

  • app/controllers/webhooks/wuzapi_controller.rb
  • task.md, walkthrough.md (Documentação)