Try the page command. Only issue I found is that if a phone is offhook when you try to page, the results are weird. I tried several ways to determine if a phone was offhook in order to exclude it, but didn’t have much luck. I tired ChanIsAvail, but the results stored in ${AVAILSTATUS} were garbage. I also tried asterisk manager with and didn’t have any luck there as well.
I found an AGI script on voip-info.org which I modified to work the way I wanted it to, and it utilizes MeetMe in order to perform this type of functionality. So, yes, it is possible.
I’ve got it so that my users can dial 1 and page all phones, or they can dial 1XXXX and page the single phone whose extension matches XXXX. The former is done via AGI, the latter is done via the dialplan (no meetme required for a two-phone intercom).
I am pretty sure you can do this by joining all the channels into a conference without any scripts or complicated interfaces.
(some time later)
Because I liked the question I did some research. Below is some code that should work.To be honest, I haven’t test this. But in theory this should work like a champ. You should add some tuning so the internal phones have join before the inbound legs does. Please let us know if it works.
;;;;;;;;;
; fork the call in an inbound part and an intern part using local channels
; ( the real Asterisk Magic)
;;;;;;;;;
[inbound_context]
exten => 9000,2,Dial(local/inbound@meetme&local/intern1@meetme,30,r)
[meetme]
;;;;;;;;;
; the inbound part joins conference room 9000
;;;;;;;;;
exten => inbound,1,Meetme(9000)
exten => inbound,1,Hangup()
;;;;;;;;;
; the internal phones (5000, 5001 and 5002 are routed to context
[meetme_intern], extension s, priority 1)
;;;;;;;;;
[meetme_intern]
;;;;;;;;;
; the internal phones joins the conference
; just check meetme() documentation for the proper parameters
; and things should be up and running with just 4 lines of code.
; and don’t forget to add conference 9000 to meetme.conf
; you can duplicate it with an intern2 and other range of internal phnes
;;;;;;;
exten => s,1, Meetme(9000)
exten => s,n,Hangup()