> ## 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.

# Call park and the lobby: the slot aliasing model

> What parked, held, and transferred calls mean on the floor, how the nine-slot aliasing model names every parked call, which consoles surface the lobby, how park composes with conferences and hand-offs, and the failure modes — recall, expiry, and supervised takeover.

# Call park and the lobby: the slot aliasing model

A call is **parked** when it is put into one of the tenant's nine shared
slots and left for any operator to claim. This page defines that model —
what parked, held, and transferred mean, why slot numbers are the lobby's
public aliases, which consoles render the lobby, and how park interacts
with conferences and hand-offs — so the [Parked Calls lobby
guide](/guides/voice-call-park-lobby) stays a thin procedure surface.

Read this before you brief a new floor on park-versus-queue-versus-transfer,
or wire a client against `/api/v1/voice/park`. The full step-by-step flows
live in the guide; the `PARK_…` error codes live in the
[voice call park troubleshooting catalog](/troubleshooting/voice-call-park).

Park is a softswitch control-plane operation on an already-answered call
leg — no outbound origination. Over the product's termination paths,
origination defaults to the Devotel softswitch and a tenant-configured
trunk is allowed; none of that matters here, because park never originates
at all.

## 1. Parked vs held vs transferred

Operators use three verbs loosely; the platform treats them as three
distinct models.

| State                     | Model                                                                                                                  | Shared lobby?                | Fan-out to the team?         |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------- | ---------------------------- |
| **Held** (softphone Hold) | Device-local. The caller hears music; the holding operator's own surface owns the leg                                  | No — only the holder sees it | No                           |
| **Parked**                | Tenant-shared slot on the control plane. The lobby is published and the first retrieval at any phone claims the caller | Yes — both consoles below    | Yes — that is the point      |
| **Transferred**           | Directed at one named destination (blind or warm), or bridged into a conference                                        | No                           | No — one target, not a lobby |

Choose the model deliberately:

* **Hold** keeps the waiting private to the holder. Two colliding
  retrievals on the same numbered alias become a race; every later attempt
  is rejected rather than race-resolved.
* **Park** publishes the waiting caller to the floor and trades control
  for reachability — anyone can claim the slot, audit-logged per claim.
* **Transfer** addresses exactly one destination. When the destination is
  not "next free person," a transfer is the right primitive; when it is,
  a directed transfer stops retries at the wrong desk.

A held call is not a parked call. Hold never publishes the caller to the
lobby, so no teammate can help with it; park exists precisely for that
publication.

## 2. Park-slot aliasing — deterministic names for the lobby

The tenant's lobby is nine shared slots, numbered **1 through 9** — the
same digits a desk phone dials with `*N` to retrieve. The (slot, occupant)
pair is the coordination contract: "Billing is on 4" is a well-defined
alias the whole floor resolves identically.

The alias is deterministic because anyone can map "slot N" to exactly one
occupant at a time, and a park that omits the slot auto-picks the lowest
free number in one transaction. Deliberately named slots and auto-picked
slots mix freely; `409 PARK_SLOT_OCCUPIED` fires only on a named-slot
collision and names the occupant, the parked-at time, and the caller, so
the operator re-parks elsewhere instead of blind-retrying. Auto-pick is
collision-free by construction — it claims a free slot atomically.

Three rules keep the aliases honest:

* **Auto-pick is the default.** Leave the slot blank and share "lowest
  free" muscle memory — the digits mean "next free slot," not "my slot."
* **Named slots are for deliberate placement.** When a receptionist says
  "Santos on 4," the number is the message — pick the slot explicitly.
* **Release frees the same alias.** The slot is reusable immediately;
  an occupant's `park_…` id is never the public handle — the number is.

The entire role guard (`owner` / `admin` / `developer` / `agent`) sees the
final authority as the tenant's audit trail; PII-bearing rows make the
guard server-side, not cosmetic.

## 3. Which consoles surface parked calls

Two first-party surfaces render the lobby; both read the same
`/api/v1/voice/park` surface and poll it every ten seconds.

* **Voice → Parked Calls** — the dedicated lobby page. Its shell
  (`apps/web/src/app/[locale]/(dashboard)/voice/park/page.tsx` mounts the
  client `parked-calls-content.tsx`) carries the four park endpoints
  (list, park, retrieve, release) under one role guard, because parked
  rows show caller PII. This is the operator-grade surface: rows show the
  slot alias, the caller's E.164 number and name, and a live
  "parked for" counter.
* **Attendant Console** — the four-panel operator workspace with the
  shared lobby as one panel ([attendant console
  guide](/guides/attendant-console)). Parked rows land here alongside
  extensions and ring groups, so a receptionist never leaves the
  workspace to claim a slot.

Beyond the consoles, a desk phone retrieves by number (`*N` on any
registered device) — the lobby's numeric aliases work outside the
browser too. Viewer and observer roles see nothing — the lobby list is
gated server-side, not hidden by the UI.

## 4. How park works with conferences and hand-off

Park is single-leg holding; a conference is multi-leg bridging, and a
warm transfer is an announcement step. Each maps to one leg of the floor's
hand-off lifecycle.

* **Into a conference**: a warm conference bridge announces the caller to
  the specialist before joining. A parked call can supply that leg — the
  retriever hears the party piece before the slot frees. Pure park has no
  announcement step; warm-transfer tooling composes the two.
* **Out of a conference**: a conference leg parked frees the conference
  to shrink; the lobby keeps the held leg visible while the conference
  runs. A blind flip out of conference is the [call-flip
  console](/voice/conference-flip-pickup) path for directed hand-offs.
* **Park or transfer?** If the next handler is "anyone free," park; if it
  is a named person or extension, transfer. The queue alternative is for
  inbound volume never parked at all (see the guide's "When NOT to use
  park" section).

## 5. Failure modes — recall, expiry, and supervised takeover

The lobby's failure modes live on the queue's two tenant limits (mirrored
by the expiry update) — plus the supervisor path for bell calls:

* **Recall** (recall ringback): after the queue's recall window (30s
  default) the parking operator's softphone rings back via SSE — "your
  parked call still waits." Recall is a prompt, not an expire; the slot
  remains claimed until action or expiry.
* **Expiry** (hard cap): after the queue's max park limit (300s default)
  the slot auto-releases with `releaseReason='timeout'`. A hangup webhook
  against the parked leg clears the slot in milliseconds; the sweeper is
  the backstop for silent disconnects.
* **Supervised takeover**: the supervisor's live-monitoring console
  ([guide](/guides/supervisor-live-monitoring-voice)) offers
  listen/whisper/barge/takeover on live calls; a parked call belongs to
  the parking claim, not the supervisor — handle lobby reclaim with
  retrieve/release, and treat barge or takeover as supervision. Audit the
  claim either way.

Match the failure mode to the discipline the guide prescribes: recall is
audible, expiry closes dangling slots, and supervisory takeover is for
on-bell calls, not lobby claims. For a fleet-level diagnosis, the
[troubleshooting catalog](/troubleshooting/voice-call-park) maps every
`PARK_…` code to a fix.

## See also

* [Parked calls lobby guide](/guides/voice-call-park-lobby) — the step-by-step flow, worked envelopes, and the role guard
* [Voice call park troubleshooting](/troubleshooting/voice-call-park) — the `PARK_…` error catalog and slot-state diagnosis
* [The ACD queue model](/concepts/acd-queue-model) — dispatch and overflow for the queue alternative
* [Inbound voice routing](/concepts/inbound-voice-routing) — where a call lands before an operator parks it
* [Attendant console guide](/guides/attendant-console) — the four-panel lobby surface
