Asterisk AGI有C问题

时间:2014-12-04 20:44:50

标签: c asterisk agi

每个人的EHLO

我使用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");

Asterisk向我显示了关于我使用sleep()的警告:

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

为什么会这样?

1 个答案:

答案 0 :(得分:-1)

首先 - 不需要重新发明轮子。 c / c ++有多个AGI接口实现

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

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

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

如果您不需要DATA,还没有使用GET DATA。你可以使用STREAM