> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Attendant console: run a front desk from one screen

> See waiting callers, colleague presence, parked calls, and calls you can pick up from one operator screen — then transfer, park, retrieve, or answer them without leaving the page.

# Attendant Console

The attendant console is the operator workspace for a front desk: a
receptionist, office administrator, or dispatch desk that handles live
inbound calls for your team. One screen shows every caller still
waiting, the live presence of every extension, the shared park lobby,
and the calls ringing on colleagues' phones that the operator can grab.

Find it in the dashboard under **Voice → Attendant Console**. Every
action on the page — transfer, park, retrieve, pickup — re-targets an
inbound call that is already in progress. The console never originates
a new outbound call.

## Console layout

The console is organized into four panels:

* **Waiting calls** — inbound callers currently ringing or queued, sorted
  longest-waiting first. Each row shows the caller's number (or a
  name when one resolves), a live elapsed-time counter, and the
  destination number or extension the caller reached.
* **Extensions (lamp field)** — a grid of every extension with its
  live busy-lamp presence state. This is the operator's view of who
  can take a call right now.
* **Parked** — the shared park lobby: callers placed in one of nine
  numbered park slots, with how long they have been waiting and a
  retrieve action on each row.
* **Calls you can pick up** — calls currently ringing on colleagues'
  extensions. Each row can be answered on the operator's own SIP
  device, or the operator can grab the oldest ringing call in one
  click.

A header badge counts how many extensions are currently free, and a
refresh button reloads all four panels on demand. The panels also
update automatically every few seconds.

## Presence states

Each extension in the lamp field carries one of six presence states:

| State              | Meaning                                                  | Can receive a transfer |
| ------------------ | -------------------------------------------------------- | ---------------------- |
| **Idle**           | Free to take a call                                      | Yes                    |
| **Ringing**        | A call is coming in to this extension now                | No                     |
| **On call**        | Talking on an active call                                | No                     |
| **Do not disturb** | Present but not accepting calls                          | No                     |
| **Away**           | Stepped away; the desk phone can still be offered a call | Yes                    |
| **Disabled**       | The SIP credential is disabled                           | No                     |

Only **Idle** and **Away** extensions accept a transfer; every other
state is shown but not selectable as a transfer target.

## Core workflows

All workflows start from a caller in the **Waiting calls** panel.

### Answer then transfer — blind

1. Answer the waiting caller on your own device or softphone.
2. Click **Transfer** on the caller's row. The lamp field enters
   pick-target mode and a banner shows which caller you are moving.
3. Click a free extension in the **Extensions** grid. The caller goes
   straight to that extension's ringing device; your call with the
   caller closes.
4. To abandon the pick, click **Cancel** in the banner — the caller
   stays with you.

The result is a blind transfer: the destination extension rings and,
when it answers, hears the caller with no announcement. For the
equivalent API operation see the
[blind transfer endpoint](/api-reference/voice) (`POST
/api/v1/voice/calls/{id}/transfer`).

### Warm (attended) transfer with an announcement

When the destination must hear who is on the line before the caller
arrives, use a warm transfer instead of a blind one: the original
caller goes on hold, you speak to the colleague privately, then
complete the handoff. Warm transfer is the attended counterpart and is
available from the call controls on the connected call — see
`POST /api/v1/voice/calls/{id}/warm-transfer` in the
[voice API reference](/api-reference/voice).

On the console grid, an extension already ringing or talking shows its
state so the operator can wait for it to free up before completing the
handoff.

### Park a call, then retrieve it

Park moves the caller into a numbered holding slot visible to every
operator on the console.

1. From the caller's row, park the call — the caller lands on a free
   slot between 1 and 9 and appears in the **Parked** panel with the
   slot number and a running timer.
2. Any colleague retrieves it by clicking **Retrieve** on the row, or
   by dialling the slot's short code from their own device — whichever
   happens first wins the call.
3. If the caller should not have been parked at all, click the release
   action on the row and confirm. Release clears the slot and
   disconnects the held caller — it cannot be undone.

Park etiquette: agree on a longest-hold window (for example two
minutes) after which the parking operator retrieves the call back
instead of letting the caller sit. The elapsed-time counter on every
parked row makes that timeout visible to the whole team.

For more on park slots, retrieve-by-code, and the softphone side, see
the **Parked calls** page under **Voice** in the dashboard and the
`/api/v1/voice/park` endpoints.

### Take over a colleague's unattended 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.

1. Pick the device you want to answer on in the **Answer on…**
   selector (it lists your enabled SIP devices).
2. Click **Pick up** on the row to take that specific call, or **Pick
   up oldest** to grab the longest-ringing call without choosing a row.
3. The call connects to your selected device; it disappears from every
   operator's panel.

This is the directed and group call-pickup workflow — the same calls
you could also take from a desk phone with directed (`*97`-style) and
group (`*8`-style) pickup feature codes.

## Set up the console for a team

1. **Grant access.** The console lists caller numbers and names, so it
   is limited to workspace owner, admin, and developer roles. Assign
   one of those roles to each receptionist or operator who needs the
   console page.
2. **Give every colleague an extension.** Issue a SIP credential per
   teammate (Voice → SIP credentials in the dashboard, or the
   `/api/v1/sip-credentials` API). Each enabled credential lights up
   as a lamp in the **Extensions** grid; colleagues with no credential
   cannot appear in presence or receive a console transfer.
3. **Give operators an answering device.** The pickup panel needs at
   least one enabled SIP device per operator to answer picked-up calls
   on; without one, the pickup actions stay disabled.
4. **Wire inbound calls to the team.** Point the inbound number at a
   ring group containing the teammates' extensions (see the ring-group
   section of the [voice API reference](/api-reference/voice)), and
   use that ring group as the console team's overflow lane — when the
   desk is fully occupied, callers land on the group and reappear in
   the **Waiting calls** panel instead of going to voicemail.
5. **Standardize park usage.** Decide who owns each retrieving habit
   (front desk vs. floor) and the hold-timeout window, then stick to
   the nine numbered slots the lobby exposes.

## Worked example: front desk with ring-group overflow

Acme's front desk takes every inbound call on `+14155551234`.

1. The number's inbound routing points at the **Front desk** ring
   group, which contains the receptionist's extension and two
   back-office extensions.
2. In calm hours, the waiting caller lands in the receptionist's
   **Waiting calls** panel, gets answered, and is blind-transferred to
   the Idle extension of the right colleague.
3. In rush hours, both back-office extensions are **On call**. The
   receptionist parks the caller on slot **2**, messages the sales
   manager ("client parked on 2"), and keeps answering new callers.
   The sales manager finishes, retrieves slot 2 from the **Parked**
   panel — or dials the slot's short code from a desk phone — and the
   call moves without the front desk touching it again.
4. Meanwhile a new caller rings the sales manager's still-off-hook
   desk. The call shows in the receptionist's **Calls you can pick
   up** panel; the receptionist takes it with **Pick up** and starts
   the same transfer flow again.

## Limits

* **One organization per console.** The console shows the callers,
  extensions, park lobby, and ringing calls of the organization the
  signed-in operator belongs to. It does not span multiple
  organizations; a shared-services desk that serves several Orbit
  workspaces needs a separate console sign-in per workspace.
* **Roles see everything, others see nothing.** Owner, admin, and
  developer roles see the same four panels in full. Teammates without
  those roles cannot open the page at all — there is no reduced view.
* **Inbound callers only.** The waiting list deliberately excludes
  outbound legs; the console is a front-desk surface, not an outbound
  dialer.
* **Nine park slots.** The lobby has numbered slots 1–9. A tenth
  parking attempt on a full lobby fails, so retrieve or release before
  parking more.
* **Polling, not push.** Panels refresh on a short interval (seconds),
  so a brand-new call can take a few seconds to appear.

## Troubleshooting

* **Calls not appearing in Waiting calls** — confirm the operator's
  workspace role is owner, admin, or developer; confirm the inbound
  number's routing actually lands the call on the team's queue or ring
  group; then hit **Refresh** once before assuming the queue is empty.
* **Extensions panel is empty or missing people** — the missing
  colleagues have no enabled SIP credential, or their credential is
  disabled. Issue or re-enable the credential and the lamp appears on
  the next refresh.
* **Pickup actions greyed out** — no enabled SIP device exists for the
  operator to answer on. Add one under Voice → SIP credentials, then
  select it in the **Answer on…** selector.
* **Retrieve fails on a parked call** — another operator 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.

## Cross-references

* Blind and warm transfer endpoints, ring groups, and shared lines:
  [Voice API reference](/api-reference/voice)
* Queue routing that feeds the waiting lane:
  [Voice queues](/guides/voice-queues)
* Handing an escalated call back to an AI agent:
  [AI agent handback](/voice/ai-agent-handback)
* Call-quality troubleshooting for the console's device leg:
  [Troubleshooting: voice call quality](/troubleshooting/voice-call-quality)
