53 lines
1.9 KiB
Markdown
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
|
|
```
|