2009-07-09 4 views
0

Ich versuche, eine MP3-Datei von einem in Perl geschriebenen Skript AGI herunterzuladen, die Datei wird jedoch nicht heruntergeladen. Das Seltsame ist, dass wenn ich versuche, dieselbe Datei von einem einfachen Perl-Skript herunterzuladen, wird es heruntergeladen.Gewusst wie: MP3-Datei von AGI-Skript in Perl geschrieben herunterladen?

Hier ist mein AGI Code:

use Asterisk::AGI; 

$AGI = new Asterisk::AGI; 

my %input = $AGI->ReadParse(); 

$AGI->answer(); 

sub getAudioFile 
{ 
    $filename = shift; 

    open(FH, ">./audio.mp3") || die "error"; 

    binmode(FH); 

    $AGI->verbose("Downloading audio file"); 

    $http_query = "curl http://www.something.com/cgi-bin/downloadfile.cgi? -d \"type=mp3&filename=$filename\" -s |"; 

    open (PIPER, $http_query) or die "sorry"; 

    $rets = ""; 

    while (<PIPER>) 
    { 
     $rets .= $_; 
    } 

    close(PIPER); 
    chomp $rets; 

    print FH $rets; 
    close(FH); 

    $AGI->verbose("Download complete"); 


} 

getAudioFile('somefile.mp3'); 

$AGI->hangup(); 

Was könnte falsch hier gehen?

+0

Was passiert? Stirbt es mit "Entschuldigung"? Stellt es eine Verbindung zum HTTP-Server her? Sind Sie sicher, dass $ filename auf das eingestellt ist, was Sie wollen? –

Antwort

0

Diese Linie versagt:

$AGI->answer(); 

Überprüfen Sie den Rückgabewert im Code.

Von Asterisk::AGI - Simple Asterisk Gateway Interface Class:

$ AGI-> Antwort()

Führt AGI Command "ANSWER"

Kanal Antworten, wenn nicht bereits in Antwort Zustand

Beispiel: $ AGI-> antwort();

Returns: -1 auf Kanalfehler oder 0 wenn sie erfolgreich

0

Versuchen Sie, die "getAudioFile" Teil des Perl-Skript als 'Asterisk' Benutzer ausgeführt wird (was auch immer Sternchen läuft). Dies wird näher emulieren, was passiert, wenn Asterisk die API erzeugt.

Vielleicht ist es ein Benutzerberechtigungsfehler.

Verwandte Themen