大家好

我正在学习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

10-08 18:17