Play Background Sound Constantly for Caller

Hi all,

I’m working on an ARI application where I need to play a background sound (like office noise) constantly to the caller only, for the entire duration of the call.
This sound is purely decorative, and should not interfere with recordings, speech detection, or other audio interactions.

Here’s what I want:

  • The caller hears a looping background sound the entire time.
  • The bot (my ARI app) plays audio instructions and records responses via channel.play() and channel.record().
  • The background sound should never stop, even when the bot isn’t playing anything or is recording.
  • The background sound should not be recorded, and should not require bridges.

I’ve tried:

  • Using a snoopChannel with whisper="out" to play the background sound — this works, but it stops being heard as soon as the main channel stops playing audio (like during silence before recording).
  • Adding a second snoopChannel with spy="out" playing silence to keep RTP flowing — works partially but feels very hacky and unstable.
  • Using a Local channel with a looping Playback to inject RTP — same issue, unstable and feels like a workaround.
  • Tried MixMonitor, BackgroundDetect, and Bridge methods, but none satisfy the constraint of continuous background sound without audio interruption or capture.

I feel like I’m hacking around a very basic need.
Isn’t there a simple, reliable way in ARI to inject a continuous, non-blocking sound into the caller’s audio stream that survives silence, recordings, and bot playback?

Any suggestions or best practices would be greatly appreciated.
Thanks!

are you using inbound voip number ?

Yes, the call is coming from an inbound SIP number, via a trunk.

To obtain a result like this I had a sip-proxy created with opensips… which records the number and when the call arrives mixes an rtp flow towards the caller.

Thanks for the idea!

That said, it’s a bit too heavy for my current setup. I’m already running Kamailio as SIP proxy in front of multiple Asterisk servers, and I really can’t afford to add extra components like OpenSIPS, RTPengine or external mixers—it’d just make the whole thing harder to maintain.

What I’m hoping for is a more “native” solution within Asterisk/ARI itself. Something clean and simple that works across many concurrent calls: just a background sound playing constantly to the caller, without touching bridges or messing with recordings…

Such functionality is not implemented.

Alright, thanks for the clear answer.

Just to be sure — there’s really no clever workaround at all to achieve this manually? I don’t mind doing something unusual if it means getting the result — even something hacky with Local channels, snoop, or dialplan tricks — as long as it’s stable.

Appreciate your time!

Nothing further springs to mind, though others may be able to think of more creative things.