2014-12-04 78 views
0

EHLO everyone帶有C問題的Asterisk AGI

我正在用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 

這究竟是爲什麼?

回答

-1

首先 - 無需推倒重來。有對C/C++

你沒有使用休眠,線程,等待等AGI腳本里面不止一個AGI接口implemntation。

AGI架構是例如通過STD輸入阻斷。只需等待輸入(從STD讀取),它會在您準備好時返回您的信息。

如果你使用它,這樣的消息是正常的和預期。您可以使用非阻塞版本的睡眠。

你也沒有使用GET DATA,如果你不需要的數據。您可以使用STREAM

+0

1)這是一個學習的過程,所以這就是爲什麼我到這一點,其實我使用的生產環境中星號的Perl。 2)我確實使用過fgets,但是我收到了來自Asterisk的「200」答案。我記得asterisk-perl有同樣的問題,我不得不在獲取數據之前增加3秒的沉默。 – 2014-12-05 21:51:24

+0

登錄時會得到200。您已閱讀所有回覆。星號agi工作正常。 – arheops 2014-12-06 04:52:37

+0

是啊200是好的,但如果我問星號玩一個文件,至少應該玩它沒有我睡覺? – 2014-12-06 17:27:40