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
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.