大家好
我正在学习C语言的AGI,一段时间后我遇到了问题。当我使用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
为什么会这样呢?
最佳答案
首先-无需重新发明轮子。 C / C ++有不止一种AGI接口象征
您没有在agi脚本中使用sleep,threads,waits等。
AGI体系结构是通过STD输入进行阻止的示例。只需等待输入(从STD读取),就绪后它将返回您的信息。
如果您使用它,则此消息是正常的,并且是预期的。您可以使用非阻塞版本的睡眠。
此外,如果您不需要DATA,则还没有使用GET DATA。您可以使用STREAM