chatwoot/app/javascript/dashboard
Muhsin Keloth ea87610999
feat(voice): Join active call from the conversation bubble (#14343)
Agents can now click **Join call** directly on the incoming call bubble
in the conversation timeline. If they refresh the page or miss the
floating widget while a call is still ringing, the bubble becomes the
recovery affordance — one click joins the conference, no need to wait
for the next event.

The button only appears when the call is still ringing, no other agent
has claimed it, and the conversation is unassigned or assigned to the
current agent (mirroring the floating widget's eligibility rules). It
disappears as soon as anyone joins the call or it ends.

Fixes
https://linear.app/chatwoot/issue/PLA-117/ability-to-join-the-call-by-clicking-on-call-bubble-in-a-conversation

## How to test

1. Set up a Twilio voice inbox and trigger an inbound call to it.
2. As an agent who is eligible to answer (unassigned conversation, or
assigned to you), open the conversation **without answering from the
floating widget**. The bubble should show a teal **Join call** link
under "Not answered yet".
3. Refresh the page mid-ring — the link should still be there.
4. Click **Join call** — you should be connected to the conference, the
bubble should flip to "Call in progress / You answered", and the link
should disappear.
5. As a second agent who is **not** eligible (conversation assigned to
someone else), open the same conversation — the link should not appear.
6. Wait for the call to end — the bubble should show "Call ended" with
no Join link.

---------

Co-authored-by: Muhsin <12408980+muhsin-k@users.noreply.github.com>
2026-05-04 12:24:31 +04:00
..
api feat(voice): Wire Twilio voice flow through unified call model (#14091) 2026-04-30 11:25:39 +04:00
assets fix(ui): resolve unreadable select options in dark mode (#13207) 2026-03-30 13:05:28 +05:30
components feat(voice): Wire Twilio voice flow through unified call model (#14091) 2026-04-30 11:25:39 +04:00
components-next feat(voice): Join active call from the conversation bubble (#14343) 2026-05-04 12:24:31 +04:00
composables feat(voice): Assignment aware visibility and join conflict for inbound calls (#14333) 2026-04-30 18:38:10 +04:00
constants feat: Add platform-wide status banners for outage notifications (#13943) 2026-04-29 17:18:38 +04:00
helper feat(voice): Assignment aware visibility and join conflict for inbound calls (#14333) 2026-04-30 18:38:10 +04:00
i18n feat(voice): Join active call from the conversation bubble (#14343) 2026-05-04 12:24:31 +04:00
mixins feat: allow configuring attachment upload limit (#12835) 2025-11-17 14:03:08 -08:00
modules fix: prevent country defaulting to Zimbabwe in search result contacts (#14098) 2026-04-28 12:08:46 +05:30
routes fix: Redirect to the conversation URL if custom_view is not available (#14340) 2026-05-01 10:53:01 -07:00
services feat: Add rich template preview for WhatsApp & Twilio Templates (#13206) 2026-04-30 18:54:34 +04:00
store feat: Add rich template preview for WhatsApp & Twilio Templates (#13206) 2026-04-30 18:54:34 +04:00
stores feat(voice): Assignment aware visibility and join conflict for inbound calls (#14333) 2026-04-30 18:38:10 +04:00
App.vue feat: Add platform-wide status banners for outage notifications (#13943) 2026-04-29 17:18:38 +04:00
featureFlags.js feat: Add voice calling as a capability on Twilio SMS channel(Enterprise) (#13963) 2026-04-29 11:32:19 +04:00