1.6 KiB
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
- Backend (Controller): O
Webhooks::WuzapiControllerexistia mas o métodoprocess_payloadestava vazio. Ele recebia o webhook, retornava 200 OK, mas não fazia nada. - Ambiente (Túnel): O comando
make runinicia apenas o servidor Rails/Sidekiq, sem o túnel Ngrok necessário para expor o localhost para a internet (Wuzapi). - 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
-
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 -
Fluxo de Execução: Padronizado o uso de
make force_run_tunnelpara garantir que o Ngrok suba junto com a aplicação.
Validação
- Teste simulado via
curlconfirmou 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.rbtask.md,walkthrough.md(Documentação)