6

I have written a hello world Asterisk AGI script using Java. The script runs as expected and plays the hello world sound file, but the asterisk console is giving an error though:

ERROR[31058]: utils.c:1164 ast_carefulwrite: write() returned error: Broken pipe

Any idea what I'm doing wrong?

I'm using asterisk-java-0.3.1.jar and Asterisk 1.8.10.1~dfsg-1ubuntu1

Java class as below:

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 写入一些行时会发生此错误。

通常,星号发送标头,然后等待命令。在每个命令星号发送响应之后。但这里有一个例外,它写在更多行

HANGUP

我认为这是星号在您的情况下不能写的行。您可以通过打开 agi 调试来检查它。在控制台中写入:

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 回答