Asterisk as annoucement service

I would like to see if any of you experts have some insights on how to achieve a setup using an Asterisk server purely as an annoucement service.

I am attaching a very high level overview of what I am trying to achieve.
In reality there are multiple redundant devices in the design.

We have an SBC connected to an external Carrier, which will have a trunk to the Asterisk (in a Hairpin setup)
The SBC will have multiple lines directly registered to it from a “Custom Proxy”, which in turn services our custom phone devices.

The base service we need is to be able to play an annoucement message to BOTH the far end and local phone device users before the voice path is connected.
This needs to happen for both outgoing and incoming calls through the SBC.
This is for complaince reasons and the annoucement must not be interruptable or bypassed in any way.
Lastly, the voice path MUST be Direct Media between endpoints after the annoucment is played.
We do not want all calls media to flow through the Asterisk server (long story short it adds more complexity in our already complex internal design with redundancy)

Now I have achieved this if I use the Dial() application with the built in annoucment options.
I can choose one or both ends to get the annoucment and it plays before the voice path between both parties are connected, so the annoucement can’t be bypassed by the end users.
The above method works great when the sytem is NOT secured with TLS, the Asterisk sends Re-Invites after the annoucement to setup Direct Media which then flows direclty between endpoints.

The problem I have is that we MUST have all systems secured with TLS.
I have opened a previous support case here, and was told that there is a limitation in Asterisk when using TLS, which is that Direct Media will not work and all RTP flows through the Asterisk when TLS secured.

So I wanted to check and see if any of you experts have any alterantive ideas on how to achieve this in a TLS secured setup.
We essentially only need the Asterisk server for the annoucement service. Once that is done, it can completely exit the call path and move directly through the SBC
Is there perhaps a way through some Dial Plan magic to send all calls to hairpin through the Asterisk Server to play the annoucement and then have it send the call back
to the SBC which will have its own dial plan to take care of routing, and ultimately the Asterisk no longer partakes in any calls after the annoucement is done.
The solution needs to work for both incoming and outgoing call scenarios.

Appreciate any assistance


That is a very clear diagram, thanks for sharing. You might consider the Playback application in Asterisk with the “noanswer” option. Then in your SBC, always try dialing Asterisk first, before the actual internal/external location.

On second thought, that will only solve half the problem (for the caller and not the callee). Hmm…

You cannot guarantee that the media path will be up and that one of the ends doesn’t mute until the announcement is over. However, your real problem is that the official version of Asterisk doesn’t support initiating attended transfers (REFER/Replaces).

I don’t think there is any way of meeting your requirement without major surgery to the channel driver, either to implement attended transfer initiation, or to relay the key material during a re-INVITE.