#!/usr/bin/perl 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/$conf\@conf-announced-join\/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; }; ;------------------------------------------------------------------------------ ; MeetMe Announced Join ;------------------------------------------------------------------------------ [conf-announced-join] exten => s,1,SetVar(pincheck=0) exten => s,2,Answer exten => s,3,Read(confnum|conf-getconfno|4) exten => s,4,Read(confpin|conf-getpin|4) exten => s,5,DBGet(userannouncement=conference/room/${confnum}/${confpin}) ; if not available n+101 exten => s,6,NoOp("User Announcement: ${userannouncement}") exten => s,7,GotoIf($["${userannouncement}" = ""]?recordprompt,1:joinconf,1) exten => s,106,SetVar(pincheck=$[${pincheck} + 1]) exten => s,107,GotoIf($[${pincheck} = 3]?invalidpin,1) exten => s,108,Playback(conf-invalidpin) exten => s,109,Goto(s,3) exten => recordprompt,1,SetVar(announcement=${confpin}.wav) exten => recordprompt,2,NoOp(Announcment: ${announcement}) exten => recordprompt,3,DBPut(conference/room/${confnum}/${confpin}=${announcement}) exten => recordprompt,4,Playback(after-the-tone) exten => recordprompt,5,Record(conf/${confnum}/${announcement}||6) exten => recordprompt,6,Goto(joinconf,1) exten => joinconf,1,AGI(conference-announce.pl) exten => joinconf,2,MeetMe(${confnum}|q) exten => invalidpin,1,Playback(invalid) exten => invalidpin,2,Hangup exten => _505X,1,MeetMe(${EXTEN}|q) exten => _505X,2,Hangup