星号AGI与C问题



EHLO 大家

我用C语言进入AGI,过了一会儿我遇到了一个问题。当我使用 GET DATA(和其他 AGI 命令)将文件播放到频道时,我需要应用睡眠功能,以便可以播放并且用户有时间听到它。

我的部分代码是这样的:

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

Asterisk向我展示了一个关于我使用sleep()的警告,如下所示:

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

为什么会这样?

首先 - 不需要重新发明轮子。对于 c/c++ 来说,AGI 接口嵌入不止一个

你在 agi 脚本中没有用的睡眠、线程、等待等。

AGI架构是STD输入阻塞的示例。只需等待输入(从STD读取),它将在准备就绪时返回您的信息。

如果您使用它,则此类消息是正常且预期的。您可以使用非阻塞版本的睡眠。

此外,如果您不需要数据,则无需使用GET DATA。你可以使用流

相关内容

  • 没有找到相关文章

最新更新