Hi Matthew, Look at the bootom for my recommendation (take note, I did not test it):
On Thu, 2004-07-01 at 14:08, Matthew Simpson wrote: > I want to have a way to authenticate callers to the extension by Caller > ID... if their caller ID is in my database and set to active, they can call > out. [like a calling card but auth'd by CID instead of PIN]. > > Here is my dialplan: > > 1234, 1, agi(ldusers.agi) > 1234, 2, Hangup > > Here is my code: > > #!/usr/bin/perl > # > > use Asterisk::AGI; > use DBI; > > $db = "dbname"; > $host = "hostname"; > $port = "3306"; > $userid = "dbuser"; > $password = "dpasswd"; > $connectionInfo = "DBI:mysql:database=$db;$host:$port"; > $dbh = DBI->connect($connectionInfo,$userid,$password); > > > $AGI = new Asterisk::AGI; > > my %input = $AGI->ReadParse(); > > $AGI->answer(); > > if (my $callerid = $input{'callerid'}) { > > $AGI->say_digits($callerid); > $query = "SELECT active FROM cids WHERE cid=$callerid"; # > active should be 1 if the caller ID is found and set active > $sth = $dbh->prepare($query); > $sth->execute(); > $sth->bind_columns(undef, \$active); > $sth->fetch(); > > if($active) > $AGI->exec('DISA','no-password|disa'); ^^^^^ Instead of executing the application, try creating a new context in your dialplan that executes DISA. You can send the call to that context like this: $AGI->set_context("disa"); $AGI->set_extension("s"); $AGI->set_priority(1); > } > > $AGI->hangup(); > > exit; In extension.conf add the disa context like this: [disa] exten => s,1,disa,no-password|disa This way, if an error happens with DISA, it will be displayed at the asterisk console (it will not be hidden inside AGI). Good luck, -- Nicolas Gudino <[EMAIL PROTECTED]> House Internet S.R.L. _______________________________________________ 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