2009-07-09 4 views
0

Perl로 작성된 AGI 스크립트에서 MP3 파일을 다운로드하려고하는데 파일이 다운로드되지 않습니다. 이상한 점은 일반 Perl 스크립트에서 동일한 파일을 다운로드하려고하면 다운로드된다는 것입니다.Perl로 작성된 AGI 스크립트에서 MP3 파일을 다운로드하는 방법은 무엇입니까?

여기 내 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(); 

잘못 무슨 갈 수 있을까?

+0

어떻게됩니까? "미안"하면서 죽을까요? http 서버에 연결 되나요? $ filename이 원하는대로 설정되어 있습니까? –

답변

0

이 줄은 실패 코드의

$AGI->answer(); 

확인 반환 값을. Asterisk::AGI - Simple Asterisk Gateway Interface Class에서

: $ :

$ AGI-> 답은()

는 AGI 명령 "답변"을 실행

는 응답 상태

예에서하지 않을 경우 이미 채널 답변 AGI-> 대답();

반환 값 : 채널 실패하면 -1, 0 성공하면

0

(별표 (*)를 실행하는 무엇이든)가 '별표'사용자로 펄 스크립트의 "getAudioFile"부분을 실행 해보십시오. 이것은 Asterisk가 API를 생성 할 때 일어나는 일을보다 자세히 에뮬레이션합니다.

아마도 사용자 권한 오류 일 수 있습니다.

관련 문제