2013-03-29 105 views
-1

我對Asterisk不是很熟悉。 在我的程序邏輯中,我使用jar文件根據空閒行(可用行 - 繁忙行)生成.call文件。如果有一些可用的線路,我生成臨時目錄中的.call文件,然後傳入星號傳出目錄星號之間很長的延遲

問題是執行.call文件和獲取忙線命令後很長的延遲。

asterisk -rx 'sip show channelstats' | grep active | cut -f 1 -d ' ' 

我從我的罐子執行該命令每2秒,但我得到的結果30秒後,最後一次通話是終點。聽起來像線路在通話結束後30秒仍然很忙。

Asterisk .conf文件中是否有任何變量,表示通話結束後的延遲。我找不到決定Asterisk的文檔中

我的撥號方案是:

exten => 123,1,AGI(monitor.php,outgoing,Outgoing_UNLIMITED,${CALLERID(num)},${EXTEN},Set(CALLERID(num)=xxxxxxxx)) 
exten => 123,1,Dial(SIP/xxxxxxxx/${EXTEN:0},30,T) 
exten => 123,2,Set(CDR(userfield)=${NumberDialed}) 
exten => 123,3,Set(i=1); 
exten => 123,n,While($[${i} <= ${file_max}]) 
exten => 123,n,Playback(${file${i}}) 
exten => 123,n,Set(i=$[ ${i} + 1 ]) 
exten => 123,n,EndWhile 
+0

我在你的問題上說你 - 你沒有足夠的技巧來做撥號程序。使用opensource之一。不,通話結束後沒有任何延遲。檢查你的程序。 – arheops

回答

0

我建議你做的是一個簡單的腳本文件,更新包含正在使用的行數的臨時文件。當你的JAR文件假脫機文件被添加到計數器時,並且在你的撥號計劃「H」上下文中調用文件後減少文件中的行數。

在您的通話文件中,啓用「存檔」選項並使用cron作業監視已完成文件的「outgoing_done」。任何不具有狀態「已完成」的文件都會減少行數。

http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out#Syntaxofcallfiles的細節

如果你想這聽起來像一個巨大的麻煩,你可以監視AMI或HTTP接口,尋找掛起事件。然而,這是一項不平凡的任務。

+0

+1謝謝你的回答 –

0

您正在使用不正確的命令。

使用「core show channels」。但是請注意,每隔幾秒鐘做任何命令都會導致星號掛起。你找到其他方式找到當前的在線電話(CDR,AMI事件或其他)

+0

+1謝謝,我會嘗試 –