6

Java を使用して、Hello World Asterisk AGI スクリプトを作成しました。スクリプトは期待どおりに実行され、hello world サウンド ファイルが再生されますが、アスタリスク コンソールでエラーが発生します。

エラー[31058]: utils.c:1164 ast_carefulwrite: write() がエラーを返しました: 壊れたパイプ

私が間違っていることは何か分かりますか?

asterisk-java-0.3.1.jar と Asterisk 1.8.10.1~dfsg-1ubuntu1 を使用しています

以下のJavaクラス:

import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;

public class AgiHelloWorld extends BaseAgiScript 
{
    @Override
    public void service(AgiRequest arg0, AgiChannel arg1) throws AgiException 
    {
        answer();
        streamFile("hello-world");
        hangup();
    }
}
4

2 に答える 2

7

このエラーは、スクリプトの実行が終了した後、Asterisk が AGI/FastAGI に行を書き込もうとしたときに発生します。

通常、アスタリスクはヘッダーを送信し、コマンドを待ちます。各コマンドの後、アスタリスクが応答を送信します。しかし、ここに 1 つの例外があります。

HANGUP

あなたの場合、アスタリスクが書き込めない行だと思います。agi debugをオンにすることで確認できます。コンソールに次のように書き込みます。

agi set debug on

スクリプトを実行すると、次のように表示されます。

    -- <SIP/XXXX-0000007c>AGI Script YOUR_AGI_NAME completed, returning 4
<SIP/XXXX-0000007c>AGI Tx >> HANGUP
ERROR[1502]: utils.c:1232 ast_carefulwrite: write() returned error: Broken pipe

スクリプトが完了した後、アスタリスクが HANGUP を送信しようとしていることがわかります。心配する必要はありませんが、これはライブラリのバグです。

于 2013-11-15T13:20:04.853 に答える
-3

これは通常、アクセス権がない場合に発生するエラーです。root ユーザーでログインして試してみると成功します。

于 2013-10-15T12:58:54.333 に答える