Chatwoot now lets external apps know when an inbox loses its connection and needs re-authentication. When a channel's authorization expires (for example, an email inbox disconnects), Chatwoot fires an `inbox_updated` webhook reflecting the new `reauthorization_required` status, and fires it again once the inbox is re-authenticated. Integrators can keep their own view of which inboxes are healthy without polling the API. This is gated behind the `ENABLE_INBOX_EVENTS` installation flag — the **Inbox updated** webhook subscription only appears in the dashboard when that flag is enabled, so no event is offered that the backend wouldn't dispatch. Fixes https://linear.app/chatwoot/issue/CW-7148/emit-inbox-webhook-when-an-inbox-is-disconnected ## How to test 1. Set `ENABLE_INBOX_EVENTS=true` and restart the app. 2. In **Settings → Integrations → Webhooks**, add a webhook and subscribe to **Inbox updated**. 3. Disconnect an inbox — let an email/Instagram channel hit its auth-error threshold, or run `inbox.channel.prompt_reauthorization!` in a console. 4. The endpoint receives an `inbox_updated` event whose `changed_attributes` shows `reauthorization_required` flipping to `true`. 5. Re-authenticate the inbox (or run `inbox.channel.reauthorized!`) — the endpoint receives the `true → false` transition. 6. Confirm the **Inbox updated** option is hidden when `ENABLE_INBOX_EVENTS` is unset. --------- Co-authored-by: Muhsin <12408980+muhsin-k@users.noreply.github.com>
36 lines
1.0 KiB
Ruby
36 lines
1.0 KiB
Ruby
class Inbox::EventDataPresenter < SimpleDelegator
|
|
def push_data
|
|
{
|
|
# Conversation thread config
|
|
allow_messages_after_resolved: allow_messages_after_resolved,
|
|
lock_to_single_conversation: lock_to_single_conversation,
|
|
|
|
# Auto Assignment config
|
|
auto_assignment_config: auto_assignment_config,
|
|
enable_auto_assignment: enable_auto_assignment,
|
|
|
|
# Feature flag for message events
|
|
enable_email_collect: enable_email_collect,
|
|
greeting_enabled: greeting_enabled,
|
|
greeting_message: greeting_message,
|
|
csat_survey_enabled: csat_survey_enabled,
|
|
|
|
# Outbound email sender config
|
|
business_name: business_name,
|
|
sender_name_type: sender_name_type,
|
|
|
|
# Business hour config
|
|
timezone: timezone,
|
|
out_of_office_message: out_of_office_message,
|
|
working_hours_enabled: working_hours_enabled,
|
|
working_hours: working_hours.as_json,
|
|
|
|
created_at: created_at,
|
|
updated_at: updated_at,
|
|
|
|
# Associated channel attributes
|
|
channel: channel
|
|
}
|
|
end
|
|
end
|