chatwoot-develop/progresso/2026-01-01_fix_wuzapi_connection_500.md

2.2 KiB

Correção de Erro 500 na Conexão Wuzapi

Data: 01/01/2026 Responsável: Antigravity (IA)

Objetivo

Corrigir o erro "500 Internal Server Error" que ocorria ao tentar conectar uma caixa de entrada Wuzapi (clicar em "Conectar" ou visualizar QR Code), impedindo a exibição do QR Code.

Contexto

O controlador Api::V1::Accounts::Inboxes::WuzapiController tentava recuperar o token de autenticação do usuário (wuzapi_user_token) a partir do hash provider_config do canal. No entanto, por questões de segurança, o modelo Channel::Whatsapp (no backend) move esse token para um atributo criptografado dedicado (encrypted_wuzapi_user_token) logo após a criação/atualização, removendo-o do provider_config.

Como resultado, o controlador sempre encontrava um token nil ao buscar no local antigo, levantando uma exceção "Token Wuzapi ausente" que resultava no erro 500.

Passos Realizados

  1. Análise de Logs: Identificado erro 500 e mensagem de log Wuzapi Token Missing for Inbox X.
  2. Análise de Código: Verificado wuzapi_controller.rb e channel/whatsapp.rb.
  3. Identificação da Causa: Confirmado que o token não reside mais em provider_config.
  4. Correção: Alterado o método user_token no controlador para ler do atributo correto.

Arquivos Alterados

app/controllers/api/v1/accounts/inboxes/wuzapi_controller.rb

# Antes
def user_token
  token = @inbox.channel.provider_config['wuzapi_user_token']
  # ...
end

# Depois
def user_token
  token = @inbox.channel.wuzapi_user_token
  # ...
end

API Calls / Variáveis de Ambiente

  • Nenhuma variável de ambiente foi alterada.
  • O endpoint afetado foi POST /api/v1/accounts/{account_id}/inboxes/{inbox_id}/wuzapi/connect e GET .../qr.

Como Validar

  1. Acessar o Chatwoot -> Configurações -> Caixas de Entrada -> [Wuzapi Inbox].
  2. Clicar na aba de configuração do Wuzapi.
  3. O QR Code deve ser gerado e exibido imediatamente (ou status de conectado), sem erro 500 no console/network.

Como Reverter

Se necessário, reverter a alteração no arquivo app/controllers/api/v1/accounts/inboxes/wuzapi_controller.rb voltando a leitura para @inbox.channel.provider_config['wuzapi_user_token'].