Connecting your phone system
Connect your phone system so a ringing call opens Call Taking with the caller looked up, agents' phone state shows on the dispatch board, and recordings arrive as soon as a call ends.
Written By Chris Scaminaci
Last updated About 2 hours ago
A phone system can connect to QuantumOps in three ways. Each does a different job, and you can use any combination.
Before you start: you need access to your phone system's administration. To change call recording settings you need the Administrator role; Service Desk Manager, Dispatcher and Customer Success users can open the Settings tab but only read it. To give agents extension numbers you need the Administrator role.
Open Call Taking when a call rings
In QuantumOps, select New call and copy the address of the tab that opens. It ends in your organisation's own identifier, for example
https://your-address/CallTaking/{tenantId}.In your phone system, set the action that opens a web address when a call rings or is answered. Use the address from step 1 with these details added after a question mark, separated by
&:An example:
https://your-address/CallTaking/{tenantId}?callerid=+15550100&did=+15550123&agentid=12&agentname=Jane%20Smith.Test with a call. The screen opens with the number in the Phone box and the search already run. It never picks the person for the agent: the agent still chooses from the results (see Taking a call).
Each agent still signs in to QuantumOps in that browser. If the session has ended the screen shows Session Expired.
If the phone system opens the screen inside a HaloPSA tab, your own HaloPSA address is always allowed to frame it. Any other address, such as a partner's HaloPSA, must be added under Allowed Embedding Origins. See Adding QuantumOps tabs to HaloPSA.
Show phone state with PBX call presence
PBX call presence lets QuantumOps see what each agent's phone is doing. It works with a Yeastar P-Series PBX.
Turn it on
- Make sure the Call Recording & Transcription module is on. An Administrator turns modules on in Module Management.
- As an Administrator, open Call Recordings in the sidebar, then the Settings tab. Under Recording Ingestion Source, choose Yeastar PBX API and save the PBX Base URL, Client ID and Client Secret. The PBX must have its OpenAPI enabled. Test Connection checks the details. See Call recording settings.
- Give each agent their extension number: set Extension number in the person's Edit team member dialog (see Inviting people, roles and agent links). The dialog shows the field only for a person who has a HaloPSA agent. At least one active agent needs one.
- On the Settings tab, tick Enable PBX call presence and select Save Configuration.
- On the PBX, open Integrations β API β Extension Status Monitor and, for each extension, turn on Call Status Monitor, Registration Status Monitor and Presence Status Monitor. For trunk state, also turn on Trunk Status Monitor.
QuantumOps starts watching about a minute after it starts, and picks up changes to these settings within a few minutes.
Check that it works
Below the checkboxes, the PBX call presence box reports what QuantumOps sees. Select Refresh to update it.
- The first line says whether QuantumOps is connected to the PBX and since when, or Not connected with the reason. It also shows when the last event arrived and how many of each event type have arrived.
- Warnings appear when something needs attention, for example two agents sharing one extension number or an extension that the PBX does not report call status for.
- Trunks: lists each trunk and whether it is healthy.
- The table has one row per extension: Ext, Agent, Role, Phone (on or off), Presence (for example Available, Away or Do not disturb), Call state (Idle, Ringing, Busy or Unknown), Since, Caller and Monitored on PBX.
If the box says the monitor has not reported yet, check the steps above: it needs the module, Yeastar PBX API ingestion, saved credentials, Enable PBX call presence and at least one agent with an extension number. If every Call state is Unknown, Call Status Monitor is not turned on for those extensions on the PBX.
What you get
- On the dispatch board. Each agent's phone state appears with their other details, and live call tiles show who is on a call. See Pulse, live calls and notice ribbons and Queue, tracked tickets, lists and agents.
- Sessions that follow the phone. QuantumOps keeps each call's session in step with the phone:
- A screen-pop that opened for a call that rang on an extension but was answered elsewhere is closed automatically.
- When the agent hangs up, the session moves to wrap-up. It stays open so the agent can still create a ticket or record an outcome.
- When a dispatcher answers an inbound call and no screen-pop opened, QuantumOps opens a session for them. This applies to agents whose Agent role is Dispatch, which you set in Team Management under Edit details (see Inviting people, roles and agent links). Outbound and internal calls never open one.
- When the agent is on a call with the same person again and the wrap-up session for the earlier call started less than ten minutes before, QuantumOps reopens that session instead of starting a second one. A wrap-up session with no caller number can be reopened in the same way.
- Every automatic change adds a note to the session, so its history says what happened.
- A session for every agent. Where it is enabled for your organisation, QuantumOps opens a session for any agent who answers an inbound call, so the Call tab in the browser extension opens by itself for technicians too. See Call tab.
Calls nobody closes
Every few minutes QuantumOps looks for call sessions that are still open four hours after they started. It marks them abandoned and adds the note Closed automatically: no outcome was recorded within 4 hours of the call starting. so the dispatch board stops showing old calls as live. This runs for every organisation, with or without PBX call presence.
Bring in recordings quickly with call-end webhooks
QuantumOps collects recordings by polling. A webhook lets the phone system tell it the moment a call ends, so the recording is processed within moments. Polling and the webhook can run together; a recording that arrives both ways is stored once.
- Open Call Recordings β Settings. With Yeastar PBX API chosen, the Real-Time CDR Webhook (Optional) box shows a Webhook URL:. Select Copy to clipboard.
- In your Yeastar PBX, send call-end events to that address under Settings β Event Center β API Events or PBX β General β API.
- For a 3CX system, use the same address but end it in
/3cxinstead of/yeastar. Any other system can post JSON call details to the address without an ending, using these field names:callId,callerNumber,calledNumber,extension,agentName,startTime,endTime,durationSeconds,direction,recordingUrl,recordingFileNameandstatus. The call must includerecordingUrlorrecordingFileName.
A call record is only used when it names a recording file or gives a recording address; others are acknowledged and ignored. The webhook accepts events only while the Call Recording & Transcription module is on.
Treat the address as private. It identifies your organisation.
Related pages
- Taking a call: the screen a ringing call opens.
- Call tab: the same job in the browser extension's side panel.
- Call recording settings: ingestion, transcription and the webhook address.
- Pulse, live calls and notice ribbons: live call tiles.
- Queue, tracked tickets, lists and agents: agents and phone state.
- Inviting people, roles and agent links: extension numbers.
Was this helpful?
Still need help? Ask the team