Agent Desk & Clients

Agents answer calls through one of three clients. All three share the same ACD core, agent state machine, and screen-pop / after-call work flows — pick the one that fits your deployment.

ClientWhat it isBest for
CC Desk (web)Browser-based agent workstation bundled with the CC addon (/console/cc → Agent Desk)Zero-install deployments, CRM-in-browser workflows
RustPhone Desk (PC)Standalone cross-platform desktop client (restsend-call project) — full desk window + always-on-top minibarHigh-volume contact centers, CRM in a separate app, headset-heavy agents
SIP softphoneAny standard SIP endpoint (Linphone, hardware phones)Simple setups; screen-pop handled by your CRM via SIP headers
CC Desk agent workstation login

1. CC Desk (web workstation)

CC Desk ships inside the contact-center addon. Open Console → Contact Center → Agent Desk, pick an auth mode, and log in:

  • JWT (default) — console session issues a short-lived JWT; agents already signed into the console log in with one click.
  • Phone Token — phone-style auth token issued via /cc/phone/config.
  • SIP + Password — the agent’s SIP extension credentials, for deployments that manage extensions directly.

The login form takes the SIP WebSocket URL (/ws on the PBX host) and the API prefix (/api), so the desk can point at any cluster node or load balancer.

1.1 Agent states

Once signed in, the desk drives the standard agent state machine (see Agent Management): Idle → Ringing → Busy → Wrap-up (ACW) → Idle, with break states (away / training / lunch / custom) on the side. The desk shows the current state with a live duration timer.

1.2 Configuration panel

The desk’s config panel exposes per-agent preferences:

  • CRM screen-pop URL template — e.g. https://crm.example.com/customer/${customerId}?phone=${phone}; the desk opens this URL in a new tab at ring time with the caller’s data substituted.
  • Feature toggles (auto-answer, notifications), ring tone, and device selection.
  • Quick-transfer contact list shared from the skill-group config.

2. Screen-Pop (incoming call)

ScreenPopFlow

When a queued call is dispatched, the desk pops the customer record at ring time, before the agent answers:

  1. The ACD stamps the agent INVITE with Call-Info and User-to-User (RFC 7433) headers built from the queue-entry trace — caller number, IVR business type, session id, and any X-<key> user-data your routing attached.
  2. These headers survive re-rings and overflow (they are re-resolved through dynamic dial-list re-resolution), so the pop does not break when the call bounces between agents.
  3. The desk matches the popup URL template and opens it — phone, customerId, and session values are substituted.
  4. Your CRM looks the customer up and shows the record; the agent answers with context.

For CRM systems that listen instead of receive, the same data is available as SIP headers on the ringing leg — one X-<key>: value header per key (the aggregated X-User-Data form is deprecated).

3. After-Call Work (ACW)

When either side hangs up:

  1. The agent enters Wrap-up automatically; the desk shows a countdown (default 120s, per-agent or per-group configurable — see Agent Management → Wrap-up).
  2. The disposition/notes popup rides the same UUI channel, so notes stay attached to the call record.
  3. The agent can finish early (back to Idle) or let the timer expire; no new ACD calls arrive during ACW.
  4. Calls that were transferred skip the CSAT survey by default (opt-in per skill group) — see CSAT.

4. In-call tools

  • Hold / resume with hold music (queue_hold_music applies).
  • Blind transfer to an extension, or to typed quick contacts — a contact can target an agent, a skill group, or an IVR, with feature codes dialed automatically and hidden in the UI.
  • Consult transfer — call the target first, then complete or switch the talking party; unanswered consults fail cleanly (409) instead of stranding both legs.
  • Conference — merge the consult into a three-way call (conference factory URI is configurable per deployment).
  • DTMF pad, mute, and outbound line picker (per-agent outbound policies decide which lines/trunks/caller-ids the agent may use — see Agent Management).
Contact center transfer configuration Contact center conference configuration

5. RustPhone Desk (PC client)

For teams that keep the CRM in a browser and want the phone as a separate always-available app, the restsend-call project provides RustPhone — a Rust-based desktop client for Windows/macOS:

  • Two surfaces: the full desk window (contacts, transfers, call history, diagnostics) and the minibar — a 70px strip pinned to the top of the screen with the state buttons, so agents never lose access when the CRM is fullscreen.
  • SSO / OTC login — native clients authenticate through a one-time-code exchange instead of embedding credentials; the login window binds to the --app process and closes on callback.
  • Screen-pop into any browser — RustPhone is browser-independent: it opens the popup URL in the default browser, avoiding the perf ceiling of embedded-iframe CRM integrations.
  • ACW with reason capture and per-break-type timing, reported to the agent stats tables.
  • In-call controls — hold/resume, consult & quick transfer (typed skill_group/IVR contacts), merge chips, DTMF, local recording indicator.
  • Diagnostics panel — network, per-target STUN/TURN probes, sound devices, and current-call media segments (ICE pair, RTP counters, codec); reports upload to CTI /cc/agents/{id}/logs so support can read them.
  • Ops-friendly — bootstrap file delivers sipWsUrl / apiPrefix / iceserverUrl from the server, media policy follows agent-config ICE servers, and an auto-update window (default 12:10–13:20, midnight-crossing capable) keeps fleets current without user action.

Point the client at the PBX bootstrap URL and it discovers the rest; agents sign in with their SSO account or agent id, and the client handles SIP registration + CC sign-in in one step.

6. Which client for screen-pop?

RequirementRecommended
CRM is a web appCC Desk or RustPhone — both open the popup URL with substituted values
CRM must receive data at ring timeAny — consume Call-Info / X-<key> headers on the ringing leg
Agents work in fullscreen CRM all dayRustPhone minibar
No software installs allowedCC Desk