2011-10-05 46 views
3

我創建了一個Asterisk call file,其中Maxretries = 3和RetryTime = 300.偶爾我需要在2次重試後刪除呼叫文件。我將如何阻止Asterisk進行第三次呼叫嘗試?在達到Maxretries之前刪除星號通話文件

+0

什麼原因或條件偶爾只需要2次重試? –

+0

我收到一個警報。我創建了一個包含3個超級用戶的呼叫文件,它跨越了一個小時。偶爾該警報將在30分鐘後清除,我不再需要通知用戶。 –

回答

4

如果不從線程目錄中刪除調用文件(通常是/ var/spool/asterisk/outgoing),目前沒有辦法做到這一點。

你需要做的(如果你需要殺死重試),是:

rm /var/spool/asterisk/outgoing/<callfilename> 

另一種方式來處理,這是務實的態度,通過撥號方案回調。例如:

比方說,你callfile如下所示:

Channel: SIP/flowroute/18002223333 
Context: my_code 
Extension: s 
Priority: 1 
MaxRetries: 3 

你想使你的callfile重試調用兩次(最多)。你可以寫你的撥號方案的代碼(實現0​​)如下:

[my_code] 

exten => s,1,ExecIf($[ !${DB_EXISTS(call/tries)} ]?Set(DB(call/tries)=0)) 
exten => s,n,Set(DB(call/tries)=${MATH(${DB(call/tries)}+1,i)}) 
exten => s,n,NoOp(your code here...) 
exten => s,n,GotoIf($[ ${DB(call/tries)} > 1 ]?end,1) 

exten => end,1,DBDel(call/tries) 
exten => end,n,System(rm /var/spool/asterisk/outgoing/<name>) 
exten => end,n,Hangup() 

這將存儲在Asterisk的數據庫中callfile的狀態,並做一些手工計數,以驗證該呼叫已嘗試< 3倍(如果沒有,那麼它會掛斷)。

這種方法顯然不是最優的(因爲從你編寫的應用程序中實際假脫機調用文件來控制這種行爲要容易得多),但它會起作用。

希望幫助!

相關問題