Ich habe mir im Sommer einen Asterisk hergerichtet, u.a. mit einem AGI-Script, das CIDLookup auf verschiedene lokale Datenquellen macht.
Das hat gut funktioniert, auf einmal jedoch nicht mehr. Habe glaub ich seit Sommer nix mehr umgestellt. Jetzt (da ich Zeit habe) geh ich der Sache nach und versteh gar nix mehr: Das AGI-Teil scheint komplett zu spinnen!!
Hier ein kleiner Ausschnitt aus /usr/share/asterisk/agi-bin/cidlookup.agi:
Führe ich das auf der Kommandozeile aus, geht alles wie gehabt:
Macht das aber Asterisk (debug=10, verbose=10, agi debug), so wird witzigerweise gar nichts ausgegeben und das ganze funktioniert auch nicht! Zurückgegeben wird auch "0" für "Erfolg"
Hat jemand eine Ahnung wos da haken könnte?
Ich versteh das irgendwie nicht :-(
Für jeden Tipp dankbar!,
divB
Das hat gut funktioniert, auf einmal jedoch nicht mehr. Habe glaub ich seit Sommer nix mehr umgestellt. Jetzt (da ich Zeit habe) geh ich der Sache nach und versteh gar nix mehr: Das AGI-Teil scheint komplett zu spinnen!!
Hier ein kleiner Ausschnitt aus /usr/share/asterisk/agi-bin/cidlookup.agi:
Code:
#!/usr/bin/perl
# print STDERR "Starting CIDLookup, first line\n";
use strict;
use Asterisk::AGI;
use DBI;
my $AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
print STDERR "Starting CIDLookup...\n";
my $callerid = $input{'callerid'};
my @lookups = (\&personal_sql, \&flat_file);
#Exit quickly if there is already a name in callerid or if the callerid field is empty
if (!$callerid || $callerid =~ /[A-Za-z]+/) {
exit(0);
}
#remove everything non numeric from callerid string
$callerid =~ s/[^\d]//g;
print STDERR "So, our CID now is: $callerid\n";
foreach my $callback (@lookups)
{
if(my $name = &$callback($callerid))
{
my $newcallerid = "\"$name <$callerid>\"";
$AGI->set_callerid($newcallerid);
last;
}
}
sub personal_sql()
{
my ($callerid) = @_;
my $name = '';
print STDERR "Starting SQL backend\n";
my $dbh = DBI->connect('DBI:mysql:asterisk:localhost', 'asterisk', '');
if(!$dbh)
{
print STDERR "personal_sql: Could not connect to mySQL Server!\n";
return '';
};
my $row = $dbh->selectrow_hashref("SELECT fullname, only_to FROM numbers WHERE number='$callerid'");
if($row)
{
$dbh->disconnect;
if($row->{'only_to'})
{
my $only_to = uc($row->{'only_to'});
my $call_to = $AGI->get_variable($only_to);
if($call_to)
{
print STDERR "Route to one destination: $call_to\n";
$AGI->exec('Set', 'RECIPIENT=' . $call_to);
}
}
print STDERR "Yeah, found lookop. Name is: " . $row->{'fullname'} . "\n";
return $row->{'fullname'};
}
print STDERR "personal_sql: Could not find name for '$callerid'\n";
$dbh->disconnect;
return '';
}
[...]
Führe ich das auf der Kommandozeile aus, geht alles wie gehabt:
Code:
# su asterisk -s /bin/bash -c '/usr/share/asterisk/agi-bin/cidlookup.agi'
agi_request: cidlookup.agi
agi_callerid: 012345678
Starting CIDLookup...
So, our CID now is: 012345678
Starting SQL backend
Yeah, found lookop. Name is: Test Person
SET CALLERID "Test Person <012345678>"
Macht das aber Asterisk (debug=10, verbose=10, agi debug), so wird witzigerweise gar nichts ausgegeben und das ganze funktioniert auch nicht! Zurückgegeben wird auch "0" für "Erfolg"
Code:
[...]
-- Executing NVFaxDetect("CAPI/ISDN1/444444-3", "4|dt") in new stack
Feb 14 02:06:01 WARNING[26371]: channel.c:1602 ast_waitfor_nandfds: Thread -1223504976 Blocking 'CAPI/ISDN1/444444-3', already blocked by thread 0 in proced
nobaq*CLI> -- Executing AGI("CAPI/ISDN1/444444-3", "cidlookup.agi") in new stack
-- Launched AGI Script /usr/share/asterisk/agi-bin/cidlookup.agi
AGI Tx >> agi_request: cidlookup.agi
AGI Tx >> agi_channel: CAPI/ISDN1/444444-3
AGI Tx >> agi_language: de
AGI Tx >> agi_type: CAPI
AGI Tx >> agi_uniqueid: asterisk-18476-1171415161.8
AGI Tx >> agi_callerid: 012345678
AGI Tx >> agi_calleridname: unknown
AGI Tx >> agi_callingpres: 3
AGI Tx >> agi_callingani2: 0
AGI Tx >> agi_callington: 33
AGI Tx >> agi_callingtns: 0
AGI Tx >> agi_dnid: 444444
AGI Tx >> agi_rdnis: unknown
AGI Tx >> agi_context: capi-in
AGI Tx >> agi_extension: 444444
AGI Tx >> agi_priority: 5
AGI Tx >> agi_enhanced: 0.0
AGI Tx >> agi_accountcode:
AGI Tx >>
nobaq*CLI> -- AGI Script cidlookup.agi completed, returning 0
-- Executing Macro("CAPI/ISDN1/444444-3", "MyDial|SIP/sip1&Zap/g1/22|17|rtw") in new stack
[...]
Hat jemand eine Ahnung wos da haken könnte?
Ich versteh das irgendwie nicht :-(
Für jeden Tipp dankbar!,
divB