Cross server paging

I’m have a 3 server asterisk cluster with Digium phones on each spread across the organization. We have everything working great except paging. I can easily page from phones on one server, to phones on the same server. What I cannot do, it page phones on the other servers.

For server 1, I have:

exten => 5001,1,NoOp(5001 Start of page section)
exten => 5001,n,SIPAddHeader(“Alert-Info: intercom”)
exten => 5001,n,Page(SIP/2167,qA(beep)n,15)
exten => 5001,n,NoOp(5001 End of page section)
exten => 5001,n,Hangup()

So dialing 5001 from a phone on that server works perfectly.

For server 2 I have:

exten => 5002,1,NoOp(5002 Start of page section)
exten => 5002,n,SIPAddHeader(“Alert-Info: intercom”)
exten => 5002,n,Page(SIP/2124,qA(beep)n,15)
exten => 5002,n,NoOp(5002 End of page section)
exten => 5002,n,Hangup()

And then on server 1:

; If server 1, dial 5001 locally, 5002 on dialer 2, 5003 on dialer 3
exten => 5000,n(fromdial1),NoOp(“Fromdial1 steps…”)
exten => 5000,n,Dial(Local/5001&${TRUNKPBXDIAL2}/5002&${TRUNKPBXDIAL3}/5003,55,i)
exten => 5000,n,Hangup()

And this on dialer 2:

; If server 2, dial 5001 dialer 1, 5002 locally, 5003 on dialer 3
exten => 5000,n(fromdial2),NoOp(“Fromdial2 steps…”)
exten => 5000,n,Dial(${TRUNKPBXDIAL1}/5001&Local/5002&${TRUNKPBXDIAL3}/5003,55,i)
exten => 5000,n,Hangup()

It doesn’t work. When I watch the dialplan, and dial “5000” from a phone on server 1, the server 2 console will show:

– Executing [5002@default:1] NoOp(“IAX2/PBXDIAL1-11039”, “5002 Start of page section”) in new stack
– Executing [h@default:1] AGI(“IAX2/PBXDIAL1-11039”, “agi://127.0.0.1:4577/call_log–HVcauses–PRI-----NODEBUG-----26---------------”) in new stack

It only executes 1 step of the dialplan steps…the noop. It doesn’t matter if I change this to something else, it never performs the rest of the steps for exten 5000. What would cause only one step of the dialplan on the other server to execute, and then issue hangup steps? Is it because there is IAX between the servers?

Any help or guidance would be appreciated.

5001 has answered the call by the time the NOOP completes and the calls to 5002 and 5003 have been cancelled.

So how would you go about triggering the page on all 3 servers at once?

I found a rather crappy solution. I can just hit the IP of each phone directly with the page command. Effectivly bypassing the multiple server problem. If I do:

exten => 5000,1,SIPAddHeader(“Alert-Info: intercom”)
exten => 5000,n,Page(SIP/10.1.1.100&SIP/10.1.1.1001,qA(beep)n,15)
exten => 5000,n,Hangup()

It works. I’ll have to work through this solution. I’m not seeing a better way to do it.

Page() and Dial() Behave differently.

In your initial post you are dialing multiple devices at once, Only one device will be able to answer.

In your latest post you are using Page, Multiple devices will answer and be placed into a bridge where they all hear the audio.

Now the problem is preventing paging the local phone if it’s in the list of IP’s to page. The “s” option in the Page() function can’t seem to get the status of the phone, and just fails.