Run the Attendant Console front desk
The Attendant Console is the receptionist and switchboard workspace in the Orbit dashboard. Where a voice queue is an automated ACD that dispatches callers to a pool of agents, the console puts a human operator in charge: one screen shows every waiting inbound caller, the live presence of every extension, the shared park lobby, and the calls ringing unanswered on colleagues’ phones — and every action is one click. Find it under Voice → Attendant Console. Because the console lists caller numbers and names, it is restricted to the workspace’s owner, admin, and developer roles. Unlike the agent-facing browser softphone, the console never originates an outbound call. Every action re-targets an inbound call that is already in progress — answer, transfer, park, retrieve, pick up.When to use the console vs. queues
Use the console when a front desk — a receptionist, office administrator, or dispatch desk — personally decides where each inbound call goes. Use queues when inbound callers should distribute to an agent pool automatically, with FIFO order, skills matching, and SLA reporting. The split in practice: route a number’s inbound traffic to a queue (see voice queues) and let operators run their desk from the console; whatever the queue cannot dispatch becomes visible on the console’s Waiting calls panel for a human to handle.Open the console and read the layout
Open Voice → Attendant Console. Four panels load, and a header badge counts how many extensions are currently free:- Waiting calls — inbound callers still ringing or queued, sorted longest-waiting first. Each row shows the caller’s number (or a resolved name), a live elapsed-time counter, and the number or extension the caller reached.
- Extensions — the lamp field: a grid of every extension and its live presence state. This tells the operator who can take a call right now.
- Parked — the shared park lobby: callers placed into numbered slots, each with a running timer and a retrieve action.
- Calls you can pick up — calls ringing on colleagues’ extensions that the operator can grab before they roll to voicemail.
Presence states
Each extension lamp shows one of six states:
Only Idle and Away extensions are selectable transfer targets.
The full state-by-transfer-mode matrix, including what happens when a
target changes state mid-transfer, is covered under
Presence-gated transfer targets.
Colleagues and their extensions appear in the lamp field the moment
each one has an enabled SIP credential — the same credentials the
extensions and colleagues
reference pages describe. A colleague with no enabled credential never
lights up and cannot receive a console transfer.
Handle an inbound call
A caller lands in Waiting calls and rings the operator’s own answering device (browser softphone or desk phone). The operator answers there, then uses the console to move the call.Transfer to a colleague — blind
- On the caller’s row, click Transfer. A banner opens naming the caller, and the Extensions grid enters pick-target mode.
- Click a free extension (Idle or Away). The caller moves straight to that extension’s ringing device and the operator’s leg closes.
- To back out before picking a target, click Cancel in the banner — the caller stays with the operator.
POST /api/v1/voice/calls/{id}/transfer in the
Voice API reference. When the destination
should hear who is on the line first, use a warm transfer instead —
the full click-path, whisper prompt, and failure modes are covered in
Transfer workflows in depth below.
Transfer workflows in depth
A front desk transfers dozens of calls a day, and each transfer has a shape with its own click-path, API endpoint, and failure mode. This section covers the four shapes the console supports, how presence gates the target picker, the warm-transfer consult flow end to end, and what to do when every queue is full.The four transfer shapes
Every shape re-targets an inbound call already in progress; none of
them originates an outbound call. A blind transfer is the fastest hand
when the operator already knows the caller’s need; a warm transfer is
the right one when the colleague needs context before the caller
arrives; park is the right one when nobody is free right now but will
be shortly; voicemail is the right one when the desk is closing or the
caller prefers to leave a message.
Presence-gated transfer targets
In pick-target mode the console enables only Idle and Away lamps. The same gate applies to both transfer shapes, because the consult leg of a warm transfer is a real inbound call to the target device: if the device cannot be offered a call, neither shape can use it.
When a target flips state mid-transfer. Presence is live, and a
desk in a rush will click a lamp that was Idle a second ago. The two
shapes fail differently:
- Blind, target flipped to busy after the click — the call has already been offered to the device. The device rings (or rejects); if it never answers, the destination’s own no-answer routing, typically its voicemail box, takes the caller. The console does not recall the call, so retrieve it from voicemail or have the box’s owner return it.
- Warm, target flipped to busy while the consult leg rings — the consult leg meets busy or rings out. The warm transfer ends without completing: the caller comes back to the operator, nothing is parked, and no leg is left stranded on the floor. Click Cancel to clear the session, then pick a different lamp or park the caller.
- The only agent with the right skill went busy — do not hold the caller on your leg while you wait for the lamp to free up. Park the caller on a slot (the whole team sees it), and retrieve it when the agent’s lamp returns to Idle.
Warm transfer click-path
A warm transfer keeps three parties straight: the caller (on hold), the operator, and the consult leg (the colleague). The flow:- With the caller connected, open the warm-transfer control on the operator’s connected call. The caller is placed on hold and the consult leg dials out to the colleague you pick. [Screenshot: connected-call controls with the warm-transfer action and the caller on hold.]
-
When the colleague answers, they hear a short whisper prompt — a
context sentence such as the caller’s name and the reason for the
handoff — before your audio bridges in. The caller never hears
this window; it exists so the colleague lands with context. At the
API level this is the
contextWhisperflag plus an optional custom text of up to 220 characters onPOST .../warm-transfer. - You and the colleague now talk privately while the caller holds. This is the consult window.
-
Click Complete to bridge the caller into the colleague and
close your leg (
POST .../warm-transfer/complete), or Cancel to hang up the consult leg and bring the caller back to you (POST .../warm-transfer/cancel).
- A custom whisper text replaces the generated context sentence when your desk standardizes handoffs (“billing dispute, account on record, wants a refund decision”).
- Disabling the private consult window bridges the caller in the moment the colleague answers — use it when the colleague already knows the caller and the whisper is all they need.
Queue overflow during a transfer
Sometimes the transfer you want is into a queue, and every queue the caller qualifies for is at cap. Three playbooks, in the order a desk usually reaches for them:- Park with a label. Park the caller from the call controls and note the slot. The Parked panel row carries the caller’s name and number plus the running timer — that row is the label the rest of the team reads. Message the destination agent the slot number; they retrieve it from their own console or by dialling the slot short code. Console clicks: park from the call controls, then Retrieve on the row when the agent frees up.
- Offer a callback. If your queues have callback rescue enabled (a queue setting, configured once by an admin), route the caller back into the queue: when the wait breaches the queue’s limits, the caller is offered a callback instead of holding forever. The operator’s move is to hand the caller to the queue rather than hold them on the desk; the offer itself is the queue’s, not a console button. See voice queues for the callback settings.
- Transfer to a failover DID. For a desk-level outage — every queue saturated or the floor offline — the queue’s emergency override arms with an E.164 destination (a failover DID, an after-hours line, a sister site) and sends new and overflow callers straight there. Arming is a supervisor action with an API and a dashboard control, not a per-call console click; the operator’s per-call tool while it is unarmed is still park. The override and its destination are covered in voice queues.
Park and retrieve
Park moves a caller into a numbered slot in the shared lobby, visible to every teammate with the console open.- Park the caller from the call controls. The caller lands on a free slot and appears in the Parked panel with the slot number and a running timer.
- Any teammate clicks Retrieve on the row, or dials the slot’s short code from their own device — the first retrieval wins.
- If the caller should never have been parked, click the release (circle-x) action and confirm. Release clears the slot and disconnects the held caller — it cannot be undone.
Pick up a colleague’s ringing call
When a colleague’s phone rings unanswered, the call appears in the Calls you can pick up panel, with the extension it is ringing on and how long it has been ringing.- Choose the operator’s answering device in the Answer on… selector (it lists the organization’s enabled SIP credentials).
- Click Pick up on the specific row, or Pick up oldest to grab the longest-ringing call without choosing a row.
- The call connects to the selected device and disappears from every operator’s panel.
*97-style) or group
(*8-style) feature codes.
The auditor’s view of a transfer
Every transfer the console or the API performs is written to the call’s record:call_logs.metadata.transfer_history[] is an
append-only, ordered array with one entry per transfer event, each
carrying the destination (to), the transfer type (type: blind,
attended/warm, warm completed, or queue), an optional reason, and a
timestamp (at).
Reading a multi-hop transfer. A call that the receptionist
warm-transferred to sales, and sales then blind-transferred to
billing, shows two entries in order — the auditor reads the path the
caller took hop by hop, not just the final destination. The latest
hop also lands in the record’s top-level transferred_to and
transfer_type fields for tools that only read the summary.
Reasons. Both transfer endpoints accept an optional reason from a
fixed list — wrong queue, escalation, language mismatch, expertise,
or other. Submitted reasons roll up into per-reason transfer
reporting (the “transfers by reason” view) and ride along in each
transfer_history[] entry. The field is optional, so desks that do
not tag reasons lose nothing.
Tie-in to QA scoring. Automated scoring and the weekly human QA
sample draw from completed conversations that had a human agent on
record; a transferred call is sampled and scored like any other
completed conversation, per leg. There is no rule that drops a
transferred leg from scoring — which is exactly why the audit array
matters to reviewers: it tells a scorer which leg of a multi-hop call
their scorecard covers, and it lets a QA lead split scores by hop
when coaching. Sampling quotas and lookback windows are set under
Settings → QA Sample Assignment; the scorecard surface is covered
in call QA scorecards and
QA sampling.
Supervisor override during a consult leg
A warm transfer’s consult window is a live two-party call, and supervisors hold the same real-time controls over it as over any active call: listen silently, whisper to the operator without the caller hearing, or barge in as an audible third participant when the dispute needs a decision-maker now.- Listen joins the supervisor muted; neither party is notified.
- Whisper reaches only the operator’s ear — the classic move is a supervisor feeding the operator authority (“offer the one-month credit”) mid-consult while the caller stays on hold.
- Barge makes the supervisor audible to everyone on the leg; use it when the consult has turned into an escalation that needs a third voice in the room.
Worked example: a front-desk transfer
Acme’s receptionist covers inbound calls on the main number.- A caller asking for sales lands in Waiting calls. The receptionist answers on the browser softphone, speaks to the caller, and clicks Transfer.
- The banner reads “Transferring +14155550123 — pick a free extension below.” The lamp field shows the sales manager Idle, so the receptionist clicks that lamp. The sales manager’s phone rings; the receptionist’s leg closes.
- During a rush, both sales extensions are On call. The receptionist parks the next caller on slot 2 and tells the sales manager “client parked on 2.” The sales manager retrieves slot 2 from the Parked panel when free — no front-desk step needed.
- Meanwhile a colleague’s phone rings unanswered. The call shows in Calls you can pick up; the receptionist clicks Pick up, answers on the selected SIP device, and runs the same transfer flow again.
Worked example: warm transfer to an Away agent
The same receptionist fields a billing dispute the first-line script cannot resolve. The only billing agent’s lamp reads Away — selectable, but no guarantee the agent hears the ring.- The receptionist answers, confirms the dispute needs a billing decision, and opens the warm-transfer control on the connected call. The caller goes on hold. [Screenshot: transfer banner naming the caller, caller on hold, lamp field in pick-target mode.]
- The receptionist picks the billing agent’s lamp. The agent’s device rings; on answer, the agent hears the whisper prompt — “caller +14155550123, billing dispute, needs a credit decision” — then the receptionist’s voice bridges in for the private consult. [Screenshot: consult window active; caller row shows on-hold timer.]
-
The agent agrees to take it. The receptionist clicks Complete;
the caller bridges to the agent and the receptionist’s leg closes.
The call record now carries one
transfer_history[]entry: type warm completed, destination the agent’s extension, timestamped. - Failure branch: on a busier morning the agent’s lamp flips to On call while the consult leg is ringing. The consult leg meets busy, the warm transfer does not complete, and the caller returns to the receptionist’s hold leg. The receptionist clicks Cancel, parks the caller on slot 3, and messages the agent “billing dispute parked on 3.” When the agent’s lamp returns to Idle, they retrieve slot 3 and the caller never hears the failed consult. [Screenshot: Parked panel row for slot 3 with caller name and elapsed timer.]
Troubleshooting
- Nothing appears in Waiting calls — confirm the signed-in role is owner, admin, or developer; confirm the inbound number’s routing lands callers on a queue the desk monitors; then hit Refresh once before assuming the lane is empty.
- The Extensions grid is empty or missing people — those colleagues have no enabled SIP credential. Issue or re-enable the credential under Voice → SIP credentials and the lamp appears on the next poll.
- Pickup actions are greyed out — the tenant has no enabled SIP credential to answer on. Add one under Voice → SIP credentials, then select it in the Answer on… selector.
- Retrieve fails on a parked call — another teammate already retrieved it (first retrieval wins), or the caller hung up. The row disappears on the next poll.
- A transfer target stays unselectable — the extension is ringing, on call, do-not-disturb, or disabled. Only Idle and Away extensions accept a transfer.
- The warm consult rings out — the colleague’s device rang unanswered (an Away lamp does not guarantee an ear). The caller returns to your hold leg automatically; click Cancel to clear the session, then retry another lamp or park the caller.
- A blind transfer landed in the wrong voicemail — the target extension flipped busy or silent after the click and its no-answer routing took the caller. Retrieve from the voicemail box or have the box’s owner hand the call back; next time, park instead of blind-transferring into a rush.
- The caller hears hold music forever after a failed transfer — the operator leg was never resumed because the session was not cancelled. Clear the stale session with Cancel; if the caller was parked, retrieve the slot from the Parked panel.
See also
- Attendant console reference — the panel-by-panel reference for the same workspace
- Voice queues — the ACD queues that feed the waiting lane, overflow and callback settings
- Browser softphone — the answering device operators pick up and transfer with
- Voice voicemail boxes — voicemail destinations for overflow handoff
- Supervisor live monitoring — listen, whisper, and barge over live and consult legs
- Call QA scorecards — scoring the legs a transfer creates
- Voice API reference — the transfer, park, and pickup endpoints behind the console