PA (Public Announcement) system

Hi,

I am totally new to Asterisk and wonder if I can use it as a PA system.

The setup is the following:

There are many (20+) voice directions which are custom made SIP softphones, and they autoanswering the incoming calls.

I need a functionality that I can designate an extention number in a following way:
for example:

 9000 -> it is means all softphones 
 9001 -> it means 1,2,3 softphones

  etc.

When the person call the 9000 number then Asterisks need to dial out ALL extensions and bridge them to the person.

It will be one way communication, the person will say something the extensions will hear it no voice is came back.

Can it be done with Asterisk?

How?

I read about meetme but I think it is not feasible for that type of usage.

Thanks for the help

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).

Hi,

Thanks guys for the reply.

I think the page command can do the trick, but there is an another feature which need to be supported.

Can i use page from the manager interface and (Originate command) do dial out multiple phones and play them an mp3 file and after hangup them?

like the following:

Originate page($PHONES) application mp3player(file)

Can be done this or it is need some hacking or doing a totally new applcation ?

Thanks

Best Regards

I did this by using call file
But when I use the manager APIS it does not work

My simple php

$socket = fsockopen(“localhost”,“5038”, $errno, $errstr, $timeout);
fputs($socket, “Action: Login\r\n”);
fputs($socket, “UserName: test\r\n”);
fputs($socket, “Secret: test\r\n\r\n”);

fputs($socket, “\r\n”);

fputs($socket, “\r\n\r\n”);

fputs($socket, “Action: Originate\r\n\r\n”);
fputs($socket, “Channel: SIP/17209298564@IP Address\r\n\r\n”);
//fputs($socket, “Channel: SIP/17209298564\r\n\r\n”);
fputs($socket, “Context: autodialer\r\n\r\n”);
fputs($socket, “Exten: s\r\n\r\n”);
fputs($socket, “Priority: 1\r\n\r\n”);
fputs($socket, “Callerid: 5557771212\r\n\r\n”);
fputs($socket, “Timeout: 30000\r\n\r\n”);

But from the CLI I am getting only
== Manager ‘test’ logged on from 127.0.0.1
== Manager ‘test’ logged off from 127.0.0.1

Any idea why

[quote=“Draco”]Hi,

Thanks guys for the reply.

I think the page command can do the trick, but there is an another feature which need to be supported.

Can i use page from the manager interface and (Originate command) do dial out multiple phones and play them an mp3 file and after hangup them?

like the following:

Originate page($PHONES) application mp3player(file)

Can be done this or it is need some hacking or doing a totally new applcation ?

Thanks

Best Regards[/quote]

You can do what you want to via a call file. Dump everyone into a meetme room and play whatever files/sounds you need to.

Any idea?

Abe

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)
;;;;;;;;;

exten => intern1,1, Dial(SIP/5000&SIP/5001&SIP/5002,20,G(meetme_intern^s^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()

I did some testing but added the listing to another post. I think it is just doing what you are looking for.

forums.digium.com/viewtopic.php?t=16320 for explanation.

[meetme]
exten => inbound,1,MeetMe(9000,M))
exten => inbound,n,Hangup()
exten => intern1,1,Dial(IAX2/Voop5xxxx@voop_plaza/0621xxxxxx,20,tM(meetme_test))
exten => intern2,1,Dial(IAX2/Voop5xxxx@voop_plaza/0627xxxxxx,20,tM(meetme_test))

[macro-meetme_test]
exten => s,1,Meetme(9000)
exten => s,n,Hangup()

[inbound]
exten => 0307xxxxxx,1,Dial(local/intern1@meetme&local/intern2@meetme,10,r)
exten => 0307xxxxxx,2,Dial(local/inbound@meetme/n,10,r)