I manage and use several Asterisk PBX. I’ve used a couple of distros (mainly TrixBox and PIAF) and they both come with the FreePBX front end. I love FreePBX, but I’ve always found the Paging and Intercom function lacking.
The main problem I’ve encountered is that when you dial the extension to page, the routine will call each extension that you want to page and throw them into a dynamic conference with you. Sounds great, but on my systems the extensions that are being called do not receive the messages at the same time. Especially when some of the extensions are not located on the LAN. This means that as you start speaking, some of the extensions have not joined the conference and will miss the start of your page.
So I decided to code up my own. This version will record you page into a temporary file, then call all the extensions and playback the file. The pro here is that there are no synchronization issues, since the playback is not live.
My version uses the allpage.agi which can be found here.
Put the following in /etc/asterisk/extensions_custom.conf
[custom-paging]
exten => 7243,1,NoCDR()
exten => 7243,2,Record(/tmp/recordpage:ulaw|0|60)
exten => 7243,3,Hangup()
exten => h,1,NoOp(Finished recording page)
exten => h,2,Goto(custom-do-paging,s,1)
[custom-do-paging]
exten => s,1,NoCDR()
exten => s,n,DeadAGI,allpage.agi
exten => s,n,Hangup
[all-page]
exten => s,1,AbsoluteTimeout(60)
exten => s,n,NoCDR()
exten => s,n,Playback(/tmp/recordpage)
exten => s,n,Hangup
Then setup a Misc. Application in FreePBX. I assigned 7243 (PAGE) to execute custom-paging.
I hope you find this useful!