我已经使用Java编写了一个Hello World Asterisk AGI脚本。该脚本按预期运行,并播放hello world声音文件,但 Asterisk 控制台显示错误:
知道我在做什么错吗?
我正在使用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();
}
}
最佳答案
当脚本完成执行后,Asterisk尝试向AGI/FastAGI中写一些行时,会发生此错误。
通常, Asterisk 发送 header ,然后等待命令。每个命令后, Asterisk 都会发送响应。但这是一个异常(exception),在处,它写在更多行上
HANGUP
我认为这是 Asterisk 行无法写成的情况。您可以通过打开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
您可以看到 Asterisk 在脚本完成后尝试发送HANGUP。您不必担心,但这是一个库错误。
关于java - Asterisk Java AGI : utils. c write()返回错误:管道损坏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18798021/