[Asterisk-Users] MeetME Conferencing

Josh McAllister josh at singletouch.net
Fri May 12 09:38:08 MST 2006


Your welcome. It certainly could be done entirely in the dialplan using similar logic, but this required a bit less mental horsepower. If your desire to avoid AGI, is based on performance concerns, note that I have systems (Dell 2850 2xXEON 3.0) that terminate 8 PRIs and have had ALL channels loaded up with perl AGI scripts and never skipped a beat. FWIW, these servers have 4G ram, and run 64bit RHES. Either way, glad I could get you closer to the end. 

Josh McAllister

> -----Original Message-----
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Damon Estep
> Sent: Friday, May 12, 2006 7:06 AM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> 
> Josh,
> 
> Thank you!
> 
> I think the AGI could be bypassed by doing a realtime() to get the PIN
> from mySQL, also returning the variable that defines admin or user and
> jumping in the dialplan accordingly. Otherwise I would just end up having
> the AGI do the query because there is a need to store the users in the
> database to facilitate easy management.
> 
> The admin menu and marked user options seem to be the key to making this
> work, so I will play with those.
> 
> 
> 
> 
> 
> -----Original Message-----
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Josh McAllister
> Sent: Friday, May 12, 2006 2:08 AM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> 
> Ok, the script below (meetme.agi) will prompt for a valid pin up to 3
> times. If the pin matches one of the defined Admin pins, it will set the
> dialplan priority to 10 and exit, if User, sets to 20 and exits. Otherwise
> Hangs up.
> 
> In the case of admin, these MeetMe options are used:
> a - Admin mode
> A - Marked mode
> c - Announce number of participants (optional of course)
> s - Present Admin menu by pressing '*'
> x - close conf when last marked user leaves.
> 
> In the case of user:
> c s x are used as above, but we add:
> w - wait until marked user enters. (Plays MoH until then)
> 
> The dialplan assumes you have a static pinless conference setup as conf
> #10.
> 
> extensions.conf:
> exten => 5552323,1,Wait(1)
> exten => 5552323,2,Answer()
> exten => 5552323,3,AGI(meetme.agi)
> exten => 5552323,4,NoOp(Invalid Pin)
> exten => 5552323,5,Hangup()
> 
> exten => 5552323,10,NoOp(Admin Pin)
> exten => 5552323,11,MeetMe(10,aAcsx)
> exten => 5552323,12,Hangup()
> 
> exten => 5552323,20,NoOp(User Pin)
> exten => 5552323,21,MeetMe(10,cswx)
> exten => 5552323,22,Hangup()
> 
> 
> 
> The script of course requires the Asterisk::AGI module.
> 
> meetme.agi:
> 
> #!/usr/bin/perl
> use Asterisk::AGI;
> my $AGI = new Asterisk::AGI;
> my $input = { %{$AGI->ReadParse()} };
> 
> #our $DEBUG = 1;
> 
> my @UserPins = ('11111','22222');
> my @AdminPins = ('99999','88888');
> 
> my $mode = collectPin($AGI,5);
> 
> $AGI->verbose("collectPin got '$mode'") if $DEBUG;
> 
> if ($mode eq 'Admin') {
>    $AGI->set_priority(10);
> } elsif ($mode eq 'User') {
>    $AGI->set_priority(20);
> } else {
>    $AGI->stream_file("goodbye",'""');
>    $AGI->hangup;
> }
> 
> exit;
> 
> sub collectPin {
>    my $AGI = shift;
>    my $maxdigits = shift;
> 
>    my $tries = 0;
> 
>    #Three tries to select an existing pin.
>    while ($tries < 3) {
>       $AGI->stream_file("please-try-again",'""') if $tries > 0;
>       $tries++;
>       my $pin = $AGI->get_data('enter-conf-pin-number', "10000",
> $maxdigits);
>       $AGI->verbose("Got PIN $pin.") if $DEBUG;
>       next unless $pin > 0;
> 
>       if ( grep(/^$pin$/, @AdminPins) ) {
>          $AGI->stream_file("pin-number-accepted",'""');
>          return 'Admin';
>       } elsif ( grep(/^$pin$/, @UserPins) ) {
>          $AGI->stream_file("pin-number-accepted",'""');
>          return 'User';
>       } else {
>          $AGI->stream_file("conf-invalidpin",'""');
>       }
>    }
> 
>    return undef;
> }
> 
> 
> What can I say, I was bored.
> 
> Enjoy,
> 
> Josh McAllister
> ________________________________________
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Damon Estep
> Sent: Thursday, May 11, 2006 10:37 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> 
> Static configs for the conference rooms are not an issue.
> 
> The main goal is to allow the moderator to determine when the conference
> “starts” by having all participants hearing MOH until the moderator starts
> the interactive call with a  PIN known only to the moderator, and then
> allowing the moderator (and only the moderator) to kick out all users from
> the keypad when the call is over.
> 
> An additional benefit would be gained if authenticate() or realtime() app
> commands could be used against a mysql database for the participant and
> moderator pins so an app could be written easily to allow changing of the
> PINS in the database.
> 
> ________________________________________
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Dan Austin
> Sent: Thursday, May 11, 2006 10:29 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> 
> I believe you can accomplish this with a well crafted dialplan.
> 
> If you did not have the restriction against out of tree modules, I would
> recommend an app that strores the conference details in a database
> and would allow just this kind of control.
> 
> Dan
> 
> ________________________________________
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Damon Estep
> Sent: Thursday, May 11, 2006 4:30 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> Not opposed to paying someone that can do it right ☺
> 
> As far as “coding” goes, you mean create the dialplan entries, not modify
> the meetme source, correct?
> 
> Our application requires that this can be done in 1.2 release, not trunk
> and not with an add-in that is not part of 1.2
> 
> If you have done it and would like to charge for you knowledge PM me, if
> you are willing to post a sample free of charge do it here for the benefit
> of all.
> 
> ________________________________________
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Dean Collins
> Sent: Thursday, May 11, 2006 5:18 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: RE: [Asterisk-Users] MeetME Conferencing
> 
> Nope not asking too much.
> 
> What you are asking for is possible and not unique but you may have to pay
> for someone to code it for you.
> 
> 
> Cheers,
> 
> Dean
> 
> 
> 
> ________________________________________
> From: asterisk-users-bounces at lists.digium.com [mailto:asterisk-users-
> bounces at lists.digium.com] On Behalf Of Damon Estep
> Sent: Thursday, 11 May 2006 6:56 PM
> To: Asterisk Users Mailing List - Non-Commercial Discussion
> Subject: [Asterisk-Users] MeetME Conferencing
> 
> Can anyone point me to a sample or information on using MeetMe like this?
> 
> Conference room is set up with 2 PINs, one for the moderator and one for
> the participants.
> Participants get music until the moderator joins (to avoid wild, un-
> moderated tangents).
> Call is ended and all participants are kicked out when the moderator
> leaves (or the moderator can kick everyone out via phone keypad).
> 
> Asking too much, or simple stuff?
> 
> Damon
> 
> 
> 
> 
> 




More information about the asterisk-users mailing list