chatwoot-develop/progresso/ajuste_erro_inboxes_vazias.md

1.9 KiB

Ajuste de erro: lista de inboxes vazia

Problema

  • A pagina /app/accounts/:id/settings/inboxes/list ficava vazia.
  • A requisicao GET /api/v1/accounts/:id/inboxes retornava 500.

Causa raiz

  • Erro em Inbox#callback_webhook_url quando channel estava nil.
  • O Jbuilder app/views/api/v1/models/_inbox.json.jbuilder chama callback_webhook_url.
  • Resultado: exception undefined method 'phone_number' for nil, quebrando o JSON e a UI.

Correcao aplicada Arquivo: app/models/inbox.rb

  def callback_webhook_url
    return nil if channel.blank?

    case channel_type
    when 'Channel::TwilioSms'
      "#{ENV.fetch('FRONTEND_URL', nil)}/twilio/callback"
    when 'Channel::Sms'
      return nil if channel.phone_number.blank?
      "#{ENV.fetch('FRONTEND_URL', nil)}/webhooks/sms/#{channel.phone_number.delete_prefix('+')}"
    when 'Channel::Line'
      return nil if channel.line_channel_id.blank?
      "#{ENV.fetch('FRONTEND_URL', nil)}/webhooks/line/#{channel.line_channel_id}"
    when 'Channel::Whatsapp'
      return nil if channel.phone_number.blank?
      "#{ENV.fetch('FRONTEND_URL', nil)}/webhooks/whatsapp/#{channel.phone_number}"
    end
  end

Como validar

  1. Reinicie o servidor Rails.
  2. Abra /app/accounts/1/settings/inboxes/list.
  3. Verifique no console que GET /api/v1/accounts/1/inboxes retorna 200.
  4. Confirme que a lista de inboxes aparece.

Observacao

  • Mensagens podem continuar chegando via webhook mesmo se a lista estiver vazia; isso indica falha apenas na renderizacao da API/JSON.

Log de referencia

Started GET "/api/v1/accounts/1/inboxes" for ::1 at 2026-01-21 09:13:52 -0300
Processing by Api::V1::Accounts::InboxesController#index as JSON
Completed 500 in 95ms
ActionView::Template::Error (undefined method 'phone_number' for nil)
app/models/inbox.rb:200:in `callback_webhook_url'
app/views/api/v1/models/_inbox.json.jbuilder:17