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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 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
 
 
 
 

_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

Asterisk-Users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to