Zoom Wallboard Inside the Dialer
Real-time Zoom Contact Center availability inside the dialer — no second license, no tab-switching
- Result:
- Dialer agents see which Zoom agents are free for a warm transfer without leaving the dialer; a companion Chrome extension picks the transfer target in one click.
- Stack:
- Python, FastAPI, Google Cloud Run, Docker, HTML, CSS, JavaScript
- Published:
- Updated:
Context
The contact center I work in runs two platforms at once: a predictive dialer for outbound calls and Zoom Contact Center for warm transfers.
The manual problem
When an agent had a live prospect ready to transfer, they had to switch to Zoom, find someone available, switch back and attempt the transfer — seconds of friction in a handoff that’s already under time pressure. Showing Zoom availability inside the dialer couldn’t mean buying every dialer agent a second license.
What I built
- Proof first. Before writing real code, I loaded a public web page inside the dialer’s embedded-website feature to confirm the iframe route worked on a closed platform.
- The wallboard. A FastAPI backend polls Zoom Contact Center’s availability API every few seconds; a static HTML page shows color-coded agent cards that match Zoom’s own look. It runs on Google Cloud Run and loads inside the dialer.
- Auth inside an iframe. Headers can’t be set on a cross-origin embed, so requests authenticate with a token in the URL, validated server-side on every request.
- Per-campaign views. Each campaign gets its own URL from one JSON config file, set once by an operations manager — no code change to add a campaign.
- One-click transfers. A companion Chrome extension lets an agent click a “Ready” card to select that person in the dialer’s transfer dropdown.
Result
Transfer availability is visible where agents already work, at no per-seat license cost beyond one small backend container. Per-agent filtering is documented and deferred: the dialer’s variable-substitution field arrived empty inside the iframe, which I confirmed from live request logs rather than documentation.
Tech notes
Python, FastAPI, Docker, Google Cloud Run, plain HTML/CSS; the transfer helper is a Manifest V3 Chrome extension. Deployed end to end in an afternoon. The code is internal to the contact center.
Doing something like this by hand in your own contact center? See how a fixed-scope project works.