Delayed paging in Asterisk?

I am having a horrible feedback problem with paging. I setup a Grandstream BT-200 to act as a connection to a regular paging amplifier that has several horns connected to it. This is for a large shop environment. Whenever I page from within the same large room (it could be a hundred feet away from the speaker) I get uncontrollable feedback. After trying to find a solution for this for some time, I was going to explore using delayed paging.

Is there a way in asterisk to dial an extension, play a prompt, then record a message, and at the end of the call, dial another extension and play that message? I have a feeling this would be possible but I haven’t quite got it to work. Are there any experts out there who could help?



Well, not knowing much about your environment, this may not work entirely. But it might give you some help.

I’d have context that would just record the page, and then create a .call file. The .call file would refer to a context that would simply play the page message.

This is really just a starter point. You should consider such things as what would happen if two people were to try to page someone at the same time, (in this case, the page recording would be overwritten, and the page would play twice because two .call files would be built) and the ability to review and re-record your page if you make a mistake, sneeze, etc… while recording it… things like that. If all you want is something quick and dirty, this should work ok.

If you decide to do things like make unique names for page message recordings (so you can queue 2 or more at once) you’ll need to think about deleting the files after they’re played.

Give this a look anyway, and review .call files here. … -file.html

exten => 1234,1,Answer()
exten => 1234,n,Playback(please-record-page)
exten => 1234,n,Record(/tmp/page.gsm,3,10)
exten => 1234,n,System(echo -e “Channel: SIP/XXXX\nMaxRetries: 3\nRetryTime: 7\nContext: play-page\nExtension: 1235” > /tmp/${UNIQUEID}.call)
exten => 1234,n,System(mv /tmp/${UNIQUEID}.call /var/spool/asterisk/outgoing/)
exten => 1234,n,Playback(your-page-is-queued)
exten => 1234,n,Hangup()

exten => 1235,1,Answer()
exten => 1235,n,Wait(3)
exten => 1235,n,Playback(/tmp/page.gsm)
exten => 1235,n,Wait(1)
exten => 1235,n,Hangup()

In this example, you’d dial extension 1234 to record a page. THe page is limited to 10 seconds with no more than 3 seconds of silence. It would get played back by extension 1235. In the line that says:

exten => 1234,n,System(echo -e “Channel: SIP/XXXX\nMaxRetries: 3\nRetryTime: 7\nContext: play-page\nExtension: 1235” > /tmp/${UNIQUEID}.call)

you’d change Channel: SIP/XXXX to the sip station that you have hooked up to your amp and speakers.

You’ll also need two prompts. One that says “Please record your page” and one that says “Your page has been queued.” And of course, you’ll want to change the extensions to something that fits your dial plan.

You don’t have to make the play-page context part of your dial plan, but if you did, you’d be able to dial 1235, and you’d be able to hear the last page sent. (Which is good in noisy environments when you might miss a page sent.)