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

# Voice wallboard console: TV mode and SLA telemetry

> Run the dedicated operations-floor wallboard at Voice → Wallboard — the five KPI tiles, per-queue breakdown, agent grid, alarm rules, SLA and call-quality banners — and harden a TV display for a 24/7 standup screen.

The **voice operations wallboard** is the dedicated supervisor screen for the contact-center floor: five headline KPI tiles across every ACD queue, a per-queue breakdown table, the per-agent state grid, alarm rules, SLA breach warnings, and live call-quality alerts, all on one full-bleed page built for a wall-mounted TV. It lives at **Voice → Wallboard** in the dashboard, separate from the cross-channel **Wallboard** top-nav board.

This guide covers what the console shows, who can reach it, how to choose which queues and widgets a standup screen displays, and how to harden the display for unattended running.

## Where the console lives

In the dashboard sidebar, open **Voice → Wallboard**. The page renders at a fixed set of surfaces:

* The **header** — connection status pill (Live / Disconnected), a live wall clock, a last-updated timestamp, the abandoned-callbacks tile, a manual refresh button, and the fullscreen toggle.
* A **five-tile KPI grid** — calls waiting, average wait, service level, agents available, and longest wait — each flipped green / amber / red by threshold, with a distinct status icon per state.
* A **per-queue breakdown table** — waiting, average wait, longest, and agents available/total for every queue.
* **Alarm rules** — the supervisor-editable threshold alarms on wallboard metrics.
* **Agent grid, omnichannel capacity, live sentiment, supervisor coach, and leaderboard panels** — the detail panes that follow the KPI grid down the page.

The page is unauthenticated-mountable in the sense that it is your own tenant's data on your own display: anyone who can sign in with a supervisor-level account can leave it on screen. It streams updates over the live event channel and falls back to a 5-second poll while that channel is down; a manual refresh re-polls on demand.

## What each KPI tile reads

| Tile | Definition | Thresholds |
| - | - | - |
| **Calls Waiting** | Total waiting callers summed across every queue | 0 green, 1–5 amber, 6+ red |
| **Avg Wait** | Average call wait, weighted by the number of callers waiting in each queue | ≤20s green, ≤60s amber, above red |
| **Service Level** | Share of queues currently covered (no callers waiting, or at least one available agent) | ≥90% green, ≥70% amber, below red |
| **Agents Available** | Distinct agents who can take a call now, out of every logged-in agent | 3+ green, 1–2 amber, 0 red |
| **Longest Wait** | The longest current wait **across** queues (a maximum, never a sum) | ≤60s green, ≤180s amber, above red |

The Agents Available numerator and denominator come from the distinct agent-count feed rather than summing per-queue availability — an agent skilled for three queues still counts once. On an empty floor (no queues yet) the page shows a "no queues configured" empty state pointing at **Voice → Queues**, and Service Level reads 100% rather than flashing red.

## Provisioning access and what each role sees

The console is guarded per role:

* **Owner / admin / supervisor** — the full view as mounted on a TV: KPI grid, per-agent grid, alarm-rule editing, SLA and quality banners, plus (owner/admin only) the **Push announcement** composer in the header that broadcasts a short text to every logged-in agent in a queue.
* **Developer / viewer / billing** — the read-only wallboard without the override actions. The server enforces the bound; the hidden buttons are only the UI affordance.
* **Agent** — a restricted view on the leaderboard (own row only); supervisor feeds fail closed rather than leak other agents' figures.

Sign the TV into a **supervisor-level** account; an owner or admin signs the display in if the Push announcement affordance should stay reachable.

## Choosing queues and widgets for a standup screen

Which **queues** appear is decided upstream: the console aggregates every queue in **Voice → Queues**. Retire or rename queues there to shape what the standup screen shows — there is no on-page queue filter to hide a queue from the tiles. The **Longest Wait** tile names the worst-offending queue underneath its value, so a supervisor reads the queue to staff without scanning the table.

Which **widgets** are visible is where-tuned:

* **Collapse panels off-screen.** The KPI grid is the anchor; the stacked panels below it (agent grid, omnichannel capacity, live sentiment, supervisor coach, leaderboard) render when you scroll. A TV stays on the KPI grid.
* **Alarm rules panel.** Wire only the thresholds the floor pages on; delete or mute the rest so the panel stays short.
* **Abandoned-callbacks tile** in the header shows the rescue-callback queue; the Push announcement trigger (owner/admin) opens the broadcast composer.

## Alarm rules on the console

The **Alarm rules** panel on this page is the in-dashboard editor for the same rules the alarm-rules guide describes over the API: metric, comparator, threshold, optional queue scope (or tenant-wide), duration, channel (`sse`, `sse+notification`, `webhook`, `email`), and enabled. A breach banner here is a visual state; an alarm rule is the escalation on top of it. Keep rules aligned with what the SLA policy allows — a rule that pages faster than the floor can staff is noise. The full rule vocabulary and worked API examples live in [Wallboard alarm rules](/guides/wallboard-alarm-rules).

## SLA breach and call-quality banners

Two live banner streams layer on top of the tiles:

* **SLA breach early warnings** — one banner per at-risk queue when the scheduler sees the predicted wait approach the queue's SLA target. Each carries predicted wait vs target, waiting callers, free agents, and an **Add agents to queue** deep-link to the queue membership page. A banner self-dismisses once the breach drains; while the condition persists the scheduler re-fires it so it stays up.
* **Live call-quality alerts** — one dismissible badge per degraded call (MOS, packet loss, or jitter over threshold) with a **View quality** deep-link to the voice-quality dashboard. At most six badges stack at once; each expires after a minute.

Both streams push over the live event channel. When the tab is in the background and notification permission is granted, the same frames arrive as OS browser notifications — the display asks for that permission once, on the first warning.

## Hardening the display for TV mode

For an always-on standup screen:

1. **Dedicated profile.** Run the display browser in a dedicated profile signed into the supervisor-level account so casual browsing never touches the tab.
2. **Fullscreen.** Press `F` to strip browser chrome; press `F` again or `Esc` to leave. The fullscreen button in the header does the same.
3. **Keyboard control.** `Space` pauses/resumes the tile auto-rotation, `R` forces a refresh, arrow keys step tile pages. Keystrokes inside any text input are ignored, so an operator typing nearby cannot disturb the board.
4. **Connection visibility.** The header pill flips to **Disconnected** on a lost feed and a banner with retry appears; last-known values stay on screen rather than blanking.
5. **Idle-cycle.** A 24/7 display benefits from a daily browser restart and a periodic cache clear — schedule both in display management, not in the app.

## Renewal cycle and HTTPS tuple rotation

Two operational renewals apply to a mounted display:

* **Session renewal.** The dashboard session a mounted display runs on rotates on the platform's normal schedule. When a display signs out, sign the dedicated profile back in — keep the supervisor-level credentials in the same place as the display's other secrets. The pause state survives a browser refresh but not a profile reset, so a profile that discards storage loses paused/expanded state on every restart.
* **HTTPS tuple rotation.** The dashboard and the event stream are served over TLS; certificate rotation on `orbit.devotel.io` is platform-managed and needs no action on the display. What interrupts a TV is a **local** TLS-inspecting proxy or a captive network appliance with its own certificate: when that appliance rotates its certificate chain, the display needs the new root before the event stream reconnects. After any local network appliance cert rotation, reload the display profile and confirm the header pill reads **Live**.

## Troubleshooting

* **The Service Level tile reads 100% on an idle floor.** That is the design — no queues with waiting callers means nothing is outside coverage; the tile is intentionally quiet until there is work to miss.
* **A tile shows a blank or missing count.** The per-queue row was unparseable in the current refresh and was dropped rather than mis-aggregated; it recovers on the next tick. A persistent drop means the feed for that queue needs attention.
* **The disconnected pill stays on.** The event channel fell back to polling; if a reload does not restore **Live**, check the network path to `orbit.devotel.io` and any local TLS-inspecting appliance.
* **Push announcement is missing.** The signed-in role is not owner or admin; the composer is hidden for other roles and the server refuses the call anyway.

## See also

* [Wallboard: supervisor real-time tiles](/guides/wallboard) — the supervisor board concepts and the API feeds behind these tiles
* [Set up the omnichannel wallboard on a TV display](/guides/wallboard-tv-setup) — the cross-channel board and its kiosk setup
* [Wallboard alarm rules](/guides/wallboard-alarm-rules) — the full rule vocabulary, evaluation cadence, and API
* [On-call alerting](/guides/oncall-alerting) — the on-call warning feed the SLA banners ride on
* [Wallboards and SLA telemetry](/concepts/wallboard-and-sla-telemetry) — the metric families and SLA policy model behind the console
