Call Control API: capturing audio from multiple simultaneous calls without a SIP listener extension per call?

MaximeP

SMB User
Joined
Jun 19, 2026
Messages
1
Reaction score
0
Hi everyone,

We are building a real-time transcription assistant on top of 3CX v20 and we are looking for guidance on the supported way to capture live audio at scale.

Our target is to handle many simultaneous inbound calls, potentially up to 500/600 participants.
The transcription pipeline itself is handled outside 3CX using Azure Speech and our own backend.
We have a VM with 3CX Phone System installed with an Enterprise licence 16SC.

Here's what we've tried :

  1. Call Control API REST+ GET /stream

    We got the audio only for the Route point not for the other participant. One leg only. And we got a lot of errors 424 Failed Dependancy
    on GET/POST /stream — Duplex media stream

  2. Call Control API REST

    What we tested:
    POST /callcontrol/{dn}/participants/{id}/listen
    POST /callcontrol/{dn}/participants/{id}/bargein
    POST /callcontrol/{dn}/participants/{id}/whisper
    via OAuth REST
    Result: HTTP 422 — OAuth REST v20 does not support these actions.

    So we moved onto Call Control C# API.

  3. Listen / Barge-in + SIP UA (baresip) using C# Call Control

    With a Ghost Extension, we bargeIn on detection of a new call, we got a mixed mono stream (caller + agent) using BargeInCallbackAsync (local C# API on the PBX VM) toward a ghost SIP extension. We managed to get a live .Wav that we have transcribed in real-time.

    The downside: it seems to assume one active Listen session per listener extension, so scaling to many concurrent calls would mean many ghost extensions (98, 97, 96…), which we want to avoid.
  4. CFD Route point solution

    We came across a lot of threads, that talk about a route point with a C# script to do what we need with only one extension. But the literature is thin... I don't have any idea how to use this.

TLDR: We need to detect calls and identify participants (Call Control API ok), Listen to the both legs and stream RTP audio to get leg1_callId.wav and leg2_callId.wav, Be able to do this simultaneously on N extension behind
use case => Customer call the technician pool => one technician take the call => a Ghost bot listen => our service transcribe and communicate with our solution. This is repeatable to N.

Questions:

Can one SIP extension accept multiple simultaneous Listen/Barge-in sessions on different calls?
Is there a supported pattern for N concurrent mixed-audio taps without N listener DNs?
Is there, by any chance, a way to get both legs separately?

Our goal is not to modify call routing or interfere with the SIP trunk. We are looking for the cleanest supported architecture for live transcription at scale.

Thanks in advance for any guidance or recommended pattern

Maxime

System Selected is the Enterprise one
 

Members Online Now

Forum statistics

Threads
111,831
Messages
589,277
Members
164,660
Latest member
RJenkinsROCK