2014-12-04 5 views
0

EHLO всеAsterisk AGI с проблемами C

Я вхожу в AGI с языком C, и через некоторое время у меня возникла проблема. Когда я воспроизвожу файл на канал с помощью GET DATA (и других команд AGI), мне нужно применить функцию сна, чтобы это можно было воспроизвести, и у пользователя есть время, чтобы услышать его.

Мой частичный код выглядит так:

char line[80]; 
int digit; 
setlinebuf(stdout); 
setlinebuf(stderr); 
printf("ANSWER\n"); 
printf("GET DATA en/pbx-transfer 5000 4 \n"); 
sleep(3); 
printf("CHANNEL STATUS\n"); 
printf("HANGUP"); 

Звездочка показывает мне предупреждение о моем использовании sleep() как это:

The FD we were waiting for has something waiting. Waitfordigit returning numeric 1 

Почему это происходит?

ответ

-1

Прежде всего - не нужно изобретать колесо. Существует более одного интерфейса для интерфейса интерфейса AGI для c/C++

В сценарии agi вы не можете использовать сон, потоки, ожидания и т. Д.

Архитектура AGI является примером блокировки входным сигналом STD. Просто подождите ввода (READ от STD), и он вернет вам информацию, когда она будет готова.

Если вы используете его, такое сообщение является нормальным и ожидаемым. Вы можете использовать неблокирующие версии сна.

ТАКЖЕ вы не используете GET DATA, если вам не нужны данные. Вы можете использовать STREAM

+0

1) Это учебный процесс, поэтому я вхожу в это, на самом деле я использую для окружения продуктов asterisk-perl. 2) Я использовал fgets, но вместо этого получаю ответ «200» от Asterisk. Я помню, что звездочка-перл имеет ту же проблему, мне пришлось добавить 3 секунды молчания перед получением данных. –

+0

Вы получаете 200 при входе в систему. Вы прочитали весь ответ. Asterisk agi работает нормально. – arheops

+0

да 200 это нормально, но если я попрошу звездочку сыграть файл, по крайней мере, должен сыграть его, не поспив ?. –

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