2013-09-14 3 views
3

Я написал сценарий Hello World Asterisk AGI с использованием Java. Сценарий работает, как ожидалось, и играет мировой звуковой файл приветствия, но консоль звездочка, хотя дает ошибку:Asterisk Java AGI: utils.c write() возвращенная ошибка: Broken pipe

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

Любая идея, что я делаю не так?

Я использую Звездочка-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

Эта ошибка возникает, когда 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 после сценария завершения. Вам не о чем беспокоиться, но это ошибка библиотеки.

+0

Да! Это дело. Asterisk генерирует сообщение результата для каждой команды send и ожидает, что это будет обработано скриптом agi. Если скрипт не прочитал возвращенный результат, звездочка выдает ОШИБКУ выше. – Sprinterfreak

-2

Это ошибка обычно происходит, когда вы не имеют доступа, пожалуйста, войдите в систему как пользователь root и попробуйте, что вы добьетесь успеха.

Смежные вопросы