Hi Folgendes AGI Script bricht zu schnell ab ich komme bei der Passwort ansage nur zu den ersten drei zahlen.
Hat da jemand eine IDEE?
Hat da jemand eine IDEE?
PHP:
#!/usr/bin/perl
#
# Callauth Script
# (C) Rolf Varga
use DBI;
use Asterisk::AGI;
use POSIX qw(ceil floor);
$SIG{HUP} = 'ignore_hup';
sub ignore_hup {
print STDERR "\nHUP received!\n\n";
}
sub load_config() {
open(CFG, "</var/lib/asterisk/agi-bin/callauth-config.conf");
while(<CFG>) {
chomp;
my ($var, $val) = split(/\s*\=\s*/);
$config{$var} = $val;
}
close(CFG);
}
sub connect_db() {
my $dsn = "DBI:mysql:database=$config{'dbname'};host=$config{'dbhost'}";
$dbh->disconnect if $dbh;
$dbh = DBI->connect($dsn, $config{'dbuser'}, $config{'dbpass'});
}
sub msleep() {
my ($time) = @_;
select(undef, undef, undef, $time/1000);
}
sub getlang() {
my ($calleridnum) = @_;
my $res;
$sth = $dbh->prepare("SELECT * FROM users WHERE telefonnr='004921158003106'");
$sth->execute;
$res = $sth->fetchrow_hashref;
$sth->finish;
return $res;
}
sub mystreamfile() {
my ($filename) = @_;
my $res;
$res = $AGI->stream_file($filename, "0123456789");
$res = "" if $res eq "0";
$res = sprintf("%c", $res) if length($res);
return $res;
}
sub mysaypassword() {
my ($number) = @_;
# my ($lang);
my $res;
# $res = $AGI->SetLanguage(de);
$res = $AGI->say_digits($number, "0123456789");
# $res = "" if $res eq "0";
# $res = sprintf("%c", $res) if length($res);
return $res;
}
# Setup some variables
$AGI = new Asterisk::AGI;
my %input = $AGI->ReadParse();
print STDERR "Detected dry run!\n";
exit unless $input{'request'};
print STDERR "AGI Environment Dump:\n";
foreach $i (sort keys %input) {
print STDERR " -- $i = $input{$i}\n";
}
#
# Answer the line right away
#
($calleridnum, $quiet) = @ARGV;
$AGI->answer();
#
# Play a nice tone
#
&load_config();
&connect_db();
if (!$dbh) {
if ($quiet <= 4 ) {
$AGI->stream_file("astcc-down");
}
exit(0);
}
my $res;
&msleep(500);
if ($quiet <= 4 ) {
$res = &mystreamfile("astcc-tone");
} else {
$res = "silent";
}
print STDERR "Res is $res\n";
print STDERR "Silent Level is $quiet\n";
exit(0) if $res < 0;
my $callerid = $input{callerid};
$userdata = &getlang($calleridnum);
$password = $userdata->{password_auth};
$lang = $userdata->{language};
if($userdata->{language} eq "de") {
$res = &mystreamfile("de/callauth-welcome");
$AGI->say_digits($password);
$AGI->stream_file("de/vm-goodbye");
}
if($userdata->{language} eq "uk") {
$res = &mystreamfile("callauth-welcome");
$res = $AGI->say_digits($password, "0123456789");
$AGI->stream_file("vm-goodbye");
}
if($userdata->{language} eq "hu") {
$res = &mystreamfile("hu/callauth-welcome");
$res = $AGI->say_digits($password, "0123456789");
$AGI->stream_file("hu/vm-goodbye");
}
exit(0);