Play persistent page, with ability to cancel

We are wanting to use a page via SIP to deploy a system wide alert for Fire and Tornado alarms as a supplement to our existing system. So basically someone dials an extension number gets an IVR and picks 1 2 or 3 depending on the message to play. It would then force barge everyones phones. It would keep playing on a loop until canceled. Currently the plan is to just leave the originating phone off the hook until cleared. I would like to be able to have the server handle the playback so that if there is actually a fire or whatever then if a branch phone originates the page then is lost thats not ideal either. If anyone has thoughts that would be amazing. We really expect to never use this but our Safety Committee is asking for it so… Yay…

I don’t think there’s anything “out of the box” that will do this, but it should be simple enough to write a short custom context that is the destination of your options in the IVR. Getting the thing to keep going after the initiator hangs up might be tricky, but I’m sure someone has some code laying around that will get you started on this.

Another option would be to initiate a callfile that will make the announcement. I’m pretty sure you can leave those running after you start them (by putting the custom context in a loop). The tricky bit is stopping it, although it should be reasonably easy to do that with a ASTDB entry…

I just did something similar; if your phones support multicast, you can have a pre-recorded message multicast to the phones.

You would just have a dummy extension and something in your extensions_custom.conf like this:

exten => 9999,1,Answer()
exten => 9999,n,Wait(1)
exten => 9999,n,Dial(MulticastRTP/basic/,,A(message-to-play))
exten => 9999,n,Wait(10)
exten => 9999,n,Hangup()