Recorded-call notice to both parties at once, then a bridge tone

FeatureKlusterServices
Shipped
August 27, 2026 at 3:57 PM UTC
Author
Kamo
Commit
9fd359f

When an agent answers a queued call, the caller hears the client notice and the agent hears the agent notice at the same time, then a shared 1000Hz tone marks the moment they are connected. Queue members now point at Local channels into [kamo-agent-connect] rather than straight at PJSIP/<ext>, so the final leg is a Dial() — Dial's A(x:y) is the only thing in Asterisk that plays DIFFERENT audio to each party SIMULTANEOUSLY and then bridges. Queue's own announceoverride is not a substitute: it plays to the agent only, and before bridging while the caller is still on hold music. The lowercase `a` before A() is the linchpin and is not optional. Without it Dial leaves the calling channel unanswered until the announcement finishes, so app_queue never bridges and the caller-side file plays into a channel nobody is listening to. queue_log made this measurable: CONNECT at 7s (after the audio) without `a`, CONNECT at 0s with it. Proven by recording the caller leg with hold music silenced and cross- correlating the captured audio: vs client file 0.833 vs agent file 0.068 vs hold music 0.044 and the 1000Hz tone detected in the caller's own audio at t=5.75s. Both files are padded to exactly 7.53s (client speech is 0.32s shorter, so it carries the difference as silence) and end with the same tone, so the tones fire together and neither party is released early. Tone level is matched to speech (RMS 3082 vs ~3200) — ffmpeg's sine filter is far below full scale, so it needed calibrating rather than guessing. Known limitation: this covers the QUEUE path. A caller who dials an extension directly over the greeting still reaches from-did-direct and hears no notice; routing that through this context would trade away FreePBX's per-extension ring timer and voicemail fallback.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing