Как скачать файл MP3 из скрипта AGI, написанного на Perl?

Я пытаюсь загрузить файл MP3 из сценария AGI, написанного на Perl, однако файл не скачиваться. Странно то, что если я попытаюсь загрузить тот же файл из простого Perl-скрипта, он будет загружен.

Вот мой код AGI:

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();

Что здесь может пойти не так?


person Community    schedule 09.07.2009    source источник
comment
Что случается? Он умирает с сожалением? Он подключается к http серверу? Вы уверены, что в $filename задано то, что вы хотите?   -  person Balázs Pozsár    schedule 09.07.2009


Ответы (2)



Попробуйте запустить часть Perl-скрипта «getAudioFile» от имени пользователя «Asterisk» (независимо от того, что работает под управлением Asterisk). Это будет более точно эмулировать то, что происходит, когда Asterisk запускает API.

Возможно, это ошибка прав пользователя.

person Dan Carlson    schedule 22.10.2009