0

Perl で記述されたAGIスクリプトから MP3 ファイルをダウンロードしようとしていますが、ファイルがダウンロードされません。奇妙なことに、単純な 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();

ここで何がうまくいかないのでしょうか?

4

2 に答える 2

0

この行は失敗します:

$AGI->answer(); 

コードの戻り値を確認してください。

Asterisk :: AGIから-シンプルなAsteriskゲートウェイインターフェイスクラス:

$ AGI-> answer()

AGIコマンド「ANSWER」を実行します

まだ回答状態にない場合は、チャンネルに回答します

例:$ AGI-> answer();

戻り値:チャネル障害の場合は-1、成功した場合は0

于 2009-09-28T23:03:05.057 に答える
0

Perl スクリプトの「getAudioFile」部分を「アスタリスク」ユーザー (アスタリスクを実行しているものは何でも) として実行してみてください。これにより、Asterisk が API を生成するときに何が起こっているかをより厳密にエミュレートできます。

多分それはユーザー権限エラーです。

于 2009-10-22T16:20:23.577 に答える