Web Phone
The Web Phone is an in-browser softphone that lets any user place and receive calls directly from the OPBX interface — no desk phone or external SIP client required. It registers with Cloudonix over WebRTC using the user's own extension. Owners and Supervisors can additionally coach live calls.
Purpose
Use the Web Phone to:
- Make and receive calls from any page in the application
- Coach live calls (spy, whisper, barge) from the Live Calls page
- Work without provisioning a physical SIP device
The same Web Phone can also be embedded into third-party websites (such as a CRM) with a single script snippet — see the Embedded Dialer.
Availability
The Web Phone is available to every role. What determines whether it works is not the role but whether the signed-in user has an assigned extension:
| Role | Web Phone access |
|---|---|
| Owner | Yes |
| Supervisor | Yes |
| PBX Admin | No |
| PBX User | No |
| Reporter | No |
The Web Phone requires:
- A user-type extension assigned to the signed-in user
- Configured Cloudonix settings for the organization
If either is missing, the Web Phone shows an "unavailable" state instead of registering. remains limited to Owners and Supervisors.
How It Works
- The frontend calls
GET /v1/webphone/configto retrieve JsSIP-compatible SIP provisioning for the user's extension. - It loads the JsSIP library and creates a SIP user agent.
- The user agent registers with Cloudonix over secure WebSocket
(
wss://webrtc.cloudonix.io:443). - Once registered, the phone is ready to place and receive calls.
The SIP credentials are the user's own extension number and password; the SIP domain is the organization's Cloudonix domain.
User Interface
The Web Phone is an app-wide floating dialer available on every page:
- Collapsed — a fixed "Web Phone" pull tab on the right edge of the screen.
- Expanded (idle) — a centered floating dialer panel; the rest of the page stays interactive.
- Expanded (active call) — a dimming backdrop blocks the rest of the UI, and the close button is disabled until the call ends.
The dialer provides an iOS-style keypad with:
- A large number display that auto-scales for long numbers
- Backspace
- A green call button and a red hangup/end button
- Answer / reject controls for incoming calls
- Mute, hold, and an in-call volume slider with a speaker toggle
Call-Progress Tones
The Web Phone plays country-appropriate call-progress tones (ring, busy,
congestion, dial) using the Web Audio API. The country is read from the
organization's settings (defaulting to us) and returned in the country
field of the Web Phone config. Tone cadences are derived from the standard
Asterisk indications data set.
Coaching Calls
When an Owner or Supervisor starts a spy, whisper, or barge action on the Live Calls page, the Web Phone automatically opens, dials the coaching target, and shows a short label (Spy, Whisper, or Barge). When the coaching call ends, the Web Phone closes and collapses back to the pull tab.
See Live Calls → Call Coaching for the full workflow.
Recents (Calls Log)
The Recents tab shows the last 50 calls the signed-in user placed from
their own extension, newest first. Each row shows the dialed number, when the
call was placed, its duration, and its disposition. Answered calls (disposition
ANSWER) are color-coded green; all other dispositions are shown in red.
Tap any row to redial: the Web Phone switches to the Keypad tab, prefills the number, and places the call automatically.
Each calls-log entry returns the fields to, session_timestamp, duration,
duration_formatted, and disposition.
The log is refreshed each time the Recents tab is opened. Coaching calls (spy, whisper, barge) are excluded — only regular outbound calls appear. The list is scoped to the signed-in user's extension only; it never shows other users' or other organizations' calls.
Related API Endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /v1/webphone/config | Get SIP provisioning for the signed-in user |
| GET | /v1/webphone/calls-log | Last 50 calls placed from the user's extension |
| POST | /v1/session-updates/{sessionId}/coach-target | Resolve a coaching dial target |
See the OPBX REST API reference for full schemas.
Config Response Fields
| Field | Description |
|---|---|
sip_username | Extension number used as the SIP username |
sip_password | Extension SIP password |
sip_domain | Cloudonix domain name |
sip_uri | Full SIP URI (sip:{ext}@{domain}) |
display_name | User's display name |
wss_server | WebRTC WebSocket server |
websocket_port | WebSocket port (443) |
server_path | WebSocket server path |
sip_contact | SIP contact (extension number) |
profile_name | JsSIP profile name |
registration_mode | SIP registration mode (for example Direct) |
country | ISO country code driving tone cadences |
The Web Phone uses the MIT-licensed JsSIP library, keeping OPBX fully MIT-compatible.
Related Modules
- Live Calls — Monitor and coach active calls
- Supervisors — The other role that can use the Web Phone
- Extensions — Provision the extension the Web Phone registers as
- Settings — Configure Cloudonix integration
- Settings — Configure Cloudonix integration