chatwoot-develop/progresso/ajuste_erro_inboxes_vazias.md

53 lines
1.9 KiB
Markdown

# 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`
```ruby
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
```