gpt4 book ai didi

c - Asterisk AGI 与 C 问题

转载 作者:行者123 更新时间:2023-11-30 18:13:06 24 4
gpt4 key购买 nike

大家好

我对 C 语言的 AGI 很感兴趣,过了一段时间我遇到了一个问题。当我使用GET DATA(以及其他 AGI 命令)将文件播放到 channel 时,我需要应用 sleep 函数,以便可以播放该文件并且用户有时间听到它。

我的部分代码是这样的:

 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

为什么会发生这种情况?

最佳答案

首先 - 无需重新发明轮子。 C/C++ 的 AGI 接口(interface)实现不止一种

您在 agi 脚本中没有使用 sleep 、线程、等待等。

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

如果您使用它,出现这样的消息是正常的并且是预料之中的。您可以使用非阻塞版本的 sleep。

此外,如果您不需要数据,则不要使用获取数据。您可以使用流

关于c - Asterisk AGI 与 C 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com