Skip to main content

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:

RoleWeb Phone access
OwnerYes
SupervisorYes
PBX AdminNo
PBX UserNo
ReporterNo

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

  1. The frontend calls GET /v1/webphone/config to retrieve JsSIP-compatible SIP provisioning for the user's extension.
  2. It loads the JsSIP library and creates a SIP user agent.
  3. The user agent registers with Cloudonix over secure WebSocket (wss://webrtc.cloudonix.io:443).
  4. 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.

MethodEndpointPurpose
GET/v1/webphone/configGet SIP provisioning for the signed-in user
GET/v1/webphone/calls-logLast 50 calls placed from the user's extension
POST/v1/session-updates/{sessionId}/coach-targetResolve a coaching dial target

See the OPBX REST API reference for full schemas.

Config Response Fields

FieldDescription
sip_usernameExtension number used as the SIP username
sip_passwordExtension SIP password
sip_domainCloudonix domain name
sip_uriFull SIP URI (sip:{ext}@{domain})
display_nameUser's display name
wss_serverWebRTC WebSocket server
websocket_portWebSocket port (443)
server_pathWebSocket server path
sip_contactSIP contact (extension number)
profile_nameJsSIP profile name
registration_modeSIP registration mode (for example Direct)
countryISO country code driving tone cadences
Licensing

The Web Phone uses the MIT-licensed JsSIP library, keeping OPBX fully MIT-compatible.

  • 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