AUTO_ASSIGNMENT, and raise an assigned conversation on the agent's screen

FeatureMediaService
Shipped
August 10, 2026 at 7:17 PM UTC
Author
Kamo
Commit
7dbe280

A chat request and a submitted ticket are the same unit of work; the topic's strategy is the only thing that decides how either is handed over. The PRE_TICKET special case is gone. AUTO_ASSIGNMENT picks the least-busy agent who is genuinely online — a live WebSocket via PresenceService, never availability_status, which only moves on login, logout and a manual toggle and so reads AVAILABLE indefinitely for anyone who never signs out. With nobody connected it decoders rather than pinning work to an absent agent: an assigned ticket leaves the claimable queue, so a bad pick strands it where no popup can reach it. For the same reason AUTO_ASSIGNMENT joins the claimable strategies — the tickets it decoders are exactly the ones that arrived while nobody was online, and they still have to reach somebody. ADMIN_ASSIGNS remains the only strategy that is never claimable. Workload counts every live status including PRE_TICKET (a person waiting in a chat is the heaviest thing an agent holds) and no terminal one. Two endpoints back the handover: GET /tickets/assigned-unopened, which the client reads on sign-in, and POST **************** which retires one. The read exists because the ASSIGNED push is core NATS with no replay — without it, work assigned while an agent was signed out simply waits in a list to be noticed. The write is scoped to the assignee and stamps only once, so two tabs racing is a no-op rather than a conflict.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing