我用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();
}
}
Run Code Online (Sandbox Code Playgroud)
当脚本完成执行后,Asterisk尝试将某些行写入AGI/FastAGI时会发生此错误.
通常星号发送标头,然后等待命令.每个命令后星号发送响应.但是这里有一个例外,它在更多的线上写
HANGUP
Run Code Online (Sandbox Code Playgroud)
我认为这是在你的情况下写的星号行.您可以通过打开agi debug来检查它.在控制台中写:
agi set debug on
Run Code Online (Sandbox Code Playgroud)
然后aster运行你的脚本你应该看到这样的东西:
-- <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
Run Code Online (Sandbox Code Playgroud)
您可以看到星号尝试在脚本完成后发送HANGUP.你不必担心它,但它是库bug.
| 归档时间: |
|
| 查看次数: |
14497 次 |
| 最近记录: |