On Thu, 9 Dec 2004 10:59:56 +0100, Stojan Sljivic - Pamet <[EMAIL PROTECTED]> wrote: > - When someone joins the conference a message "<name> is now joining the > conference." is played.
I decided to work on this today to see what happened. I used Peter's logic to get me started. This is by no means complete. Infact, its pretty dirty, but it works and just wanted to post this to prove it can be done. Now that I have the general idea of what is going on, I should be able to just put this entire thing right into the Perl script and not need any dialplan logic. But thats why Asterisk is great, theres a 1000 ways to accomplish your goal. In order to use this, you must create a directory for the user recordings. My example is for conference 5050 and the user pin is 1234. mkdir -p /var/lib/asterisk/sounds/conf/5050 Then from the Asterisk CLI, create an entry in the AstDB. *CLI> database put conference/room/5050 1234 "" This will create the family/key entry with a value of nothing. The first time the user logs in it will prompt them to say their name. After the user presses pound (#), it will save the file to /var/lib/asterisk/sounds/conf/5050/1234.wav. You will be able to check to see if the user has created a wav file by doing a lookup in the database. *CLI> database show If you need to re-record the prompt, just null out the value again. If the user enters an incorrect conference/pin pair three times, then the user is disconnected. I'll be working on this again over the weekend to clean it up and make it a bit more practical. Comments/suggestions/constructive criticism welcome. ; extensions.conf snippet ;------------------------------------------------------------------------------ ; MeetMe Announced Join ; (c)2004 Leif Madsen ; http://www.leifmadsen.com ;------------------------------------------------------------------------------ [conf-announced-join] exten => s,1,SetVar(pincheck=0) exten => s,2,Answer exten => s,3,Read(confnum|conf-getconfno|4) ; get conf num exten => s,4,Read(confpin|conf-getpin|4) ; get conf pin exten => s,5,DBGet(userannouncement=conference/room/${confnum}/${confpin}) ; if not available n+101 exten => s,6,GotoIf($["${userannouncement}" = ""]?recordprompt,1:joinconf,1) ; if blank, record an entry prompt exten => s,106,SetVar(pincheck=$[${pincheck} + 1]) ; invalid pin exten => s,107,GotoIf($[${pincheck} = 3]?invalidpin,1) ; if three times wrong, goto invalidpin exten => s,108,Playback(conf-invalidpin) exten => s,109,Goto(s,3) exten => recordprompt,1,SetVar(announcement=${confpin}.wav) exten => recordprompt,2,DBPut(conference/room/${confnum}/${confpin}=${announcement}) exten => recordprompt,3,Playback(after-the-tone) exten => recordprompt,4,Record(conf/${confnum}/${announcement}||6) exten => recordprompt,5,Goto(joinconf,1) exten => joinconf,1,AGI(conference-announce.pl) exten => joinconf,2,MeetMe(${confnum}|q) exten => invalidpin,1,Playback(invalid) ; 3 times wrong exten => invalidpin,2,Hangup exten => _505X,1,MeetMe(${EXTEN}|q) ; allow 5050 -> 5059 exten => _505X,2,Hangup ; Perl script #!/usr/bin/perl # Announced conference join script # (c)2004 Leif Madsen # http://www.leifmadsen.com use warnings; use Asterisk::AGI; $AGI = new Asterisk::AGI; my %input = $AGI->ReadParse(); $pin= $AGI->get_variable('confpin'); $conf= $AGI->get_variable('confnum'); # callfile variables my $CALLFILE = "/var/lib/asterisk/agi-bin/conf-announce.call"; # this needs to be a temporary place before we move it to /var/spool/asterisk/ my $CALL_CHANNEL = "Local/[EMAIL PROTECTED]/n"; my $CALL_RETRIES = 1; my $CALL_RETRYTIME = 60; my $CALL_WAITTIME = 30; my $CALL_APP = "Playback"; my $CALL_APP_DATA = ("conf\/$conf\/$pin"); main::Callfile(); sub main::Callfile { open(OUTFILE, ">> $CALLFILE") or die $AGI->verbose("can't open $CALLFILE for writing\n"); print OUTFILE "Channel: $CALL_CHANNEL\n"; print OUTFILE "MaxRetries: $CALL_RETRIES\n"; print OUTFILE "RetryTime: $CALL_RETRYTIME\n"; print OUTFILE "WaitTime: $CALL_WAITTIME\n"; print OUTFILE "Application: $CALL_APP\n"; print OUTFILE "Data: $CALL_APP_DATA\n"; `mv $CALLFILE /var/spool/asterisk/outgoing`; close OUTFILE; }; Leif Madsen. http://www.leifmadsen.com http://www.asteriskdocs.org http://www.hacklocalhost.com _______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users
