Addon für Perl-AGI benötigt?

blubah

Neuer User
Mitglied seit
15 Jan 2010
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

ich bin dabei ein Skript in Perl zu schreiben (vorher in PHP). Es funktioniert auch alles bis auf das Einlesen der Variablen vom Asterisk. Hatte das Problem schon bei PHP, wo mir erfolgreich geholfen werden konnte.

Kann es sein, dass bei einem Perl-Skript ein Addon benötigt wird?
Im Internet schwirren Namen über Module wie 'Asterisk::AGI' rum und auch das meckert das Skript beim Aufrufen an.

Ich hoffe Ihr könnt mir auch dieses Mal helfen.


EDIT: Ich benutze AsteriskNOW 1.5.0
 
Zuletzt bearbeitet:
Machst Du denn ein
use Asterisk::AGI;
im Code? Dann brauchst Du es, ja. Einfach über CPAN installieren
 
Ich habe jetzt zum Test folgendes Script ausgeführt:

Code:
#!/usr/bin/perl -w
use strict;

$|=1;

# Setup some variables
my %AGI; my $tests = 0; my $fail = 0; my $pass = 0;

while(<STDIN>) {
	chomp;
	last unless length($_);
	if (/^agi_(\w+)\:\s+(.*)$/) {
		$AGI{$1} = $2;
	}
}

print STDERR "AGI Environment Dump:\n";
foreach my $i (sort keys %AGI) {
	print STDERR " -- $i = $AGI{$i}\n";
}

sub checkresult {
	my ($res) = @_;
	my $retval;
	$tests++;
	chomp $res;
	if ($res =~ /^200/) {
		$res =~ /result=(-?\d+)/;
		if (!length($1)) {
			print STDERR "FAIL ($res)\n";
			$fail++;
		} else {
			print STDERR "PASS ($1)\n";
			$pass++;
		}
	} else {
		print STDERR "FAIL (unexpected result '$res')\n";
		$fail++;
	}
}

[B]        if ($DEBUG == 1 ) {[/B]
                print DEBUGOUT "Getting choice \n";
        }

[...]

Dort wird ja kein 'use Asterisk::AGI' angegeben. Beim Aufruf des Scripts mit perl perl.pl kommt dann folgende Meldung:

Code:
Global symbol "$DEBUG" requires explicit package name at perl.pl line 42.
Execution of perl.pl aborted due to compilation errors.

Und beim Aufruf direkt mit Asterisk kommt im CLI nur:
Code:
[...]
    -- Executing [789@default:5] AGI("SIP/30-08ccbf88", "perl.pl") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/perl.pl
    -- AGI Script perl.pl completed, returning 0
  == Auto fallthrough, channel 'SIP/30-08ccbf88' status is 'UNKNOWN'



### EDIT ###
Die Fehlermeldung kommt, wenn ich 'use Asterisk::AGI' mit im Script angebe (in Zeile 3 :-) ):
Code:
Can't locate Asterisk/AGI.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi 
/usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi 
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 
/usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl 
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi 
/usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi 
/usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 
/usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi 
/usr/lib/perl5/5.8.8 .) at perl.pl line 3.
BEGIN failed--compilation aborted at perl.pl line 3.
 
Zuletzt bearbeitet:
Quick and Dirty : lösche die Zeile
Code:
use strict;
dann läuft es erst mal.
Du hast die Variable $DEBUG nicht definiert
Code:
my $DEBUG;
dann sollte es auch mit
Code:
use strict;
laufen.
In CPAN gibt es eine AGI-Api, die würdest DU mit use Asterisk::AGI einbinden. Brauchst Du aber in Deinem bisherigen Script nicht. Ich würd vorschlagen, dass Du Dir erstmal die Perl Grundlagen aneignest - ist nicht böse gemeint. Viele Grüße
 
Kostenlos!

Statistik des Forums

Themen
248,872
Beiträge
2,303,466
Mitglieder
378,532
Neuestes Mitglied
Nik320