2017-02-15 27 views
0

我需要爲每個分機設置併發呼叫限制,但不是很好。星號13.7 GROUP_COUNT總是返回1

其實最低要求是防止多個呼叫振鈴相同的分機。這應該在「RingInUse」設置中完成,但是如果多個呼叫加入隊列,則星號中存在一個錯誤,它可能會破壞RingInUse規則並響鈴通話/振鈴擴展。

我能夠在Asterisk 1.6中設置call-limit = 1,但在Asterisk 13.7中似乎沒有影響(或折舊)。所以我需要提出另一種解決方案。

論壇上的一些帖子說GROUPGROUP_COUNT是新版Asterisk版本的完美解決方案。然後我發現很多使用GROUPGROUP_COUNT的例子,但其中大部分都是基於中繼或外撥的呼叫。但後面提到的入站呼叫也是工作,所以我在我的extensions.conf的隊列部分實現了它。

[only-dialextension-q6701] 
exten = _.,1,Gotoif(${DB(DND/${EXTEN})}>0?h,1) 
exten = _.,2,Set(ODETIME=30) 
exten = _.,n,Set(GROUP()=Exceed_${EXTEN}) 
exten = _.,n,Gotoif($[${GROUP_COUNT(Exceed_${EXTEN})}>1]?h) 
exten = _.,n,Goto(only-dialextension,${EXTEN},1) 
exten = h,1,Hangup() 

問題

我被監測asterisk -vvvvvvvvvvr和輸出。當第一次調用到來時,它返回0(布爾值表示false)。這是正確的,因爲1不大於1,那就好了。但第二個來電,它仍然返回0,因爲計數仍然是1但不是2.

我對此結果感到非常沮喪,因爲這不會阻止來自隊列的進一步呼叫來呼叫同一個座席。


剛纔我上面提到的,還有在Asterisk的一個可能的錯誤,打破「籃圈使用」和環同一個代理,如果這兩個來電的時間過於接近。所以我需要這個覆蓋「Ring In Use」(儘管我已經關閉它以實現更好的容錯性)。


在2017-0216 02:49 GMT

[only-dialextension-q6701] 
exten = _.,1,Gotoif(${DB(DND/${EXTEN})}>0?h,1) 
exten = _.,2,Set(ODETIME=30) 
exten = _.,n,Gotoif($[${GROUP_COUNT(Exceed_${EXTEN})}>0]?callHangup:callQueueAgent) 
exten = _.,n(callHangup),Hangup() 
exten = _.,n(callHangup),Goto(always-Hangup,h,1) 
exten = _.,n(callQueueAgent),Set(GROUP()=Exceed_${EXTEN}) 
exten = _.,n(callQueueAgent),Goto(only-dialextension,${EXTEN},1) 
exten = h,1,Hangup() 

我已經改變了GROUP_COUNT以使其更容易捕捉> 0,但未能更新1。

+0

我有這個問題,但無法找到原因。 https://issues.asterisk.org/jira/browse/ASTERISK-26496 –

回答

0

當然在星號13.14中沒有這樣的錯誤。沒有任何意義上的測試過時(超過2年)版本。

也許你應該把dialplan替換成這樣的thing(空格也很重要)。

exten => _.,n,Noop(current count is ${GROUP_COUNT(Exceed_${EXTEN})}) 
exten => _.,n,Gotoif($[ "${GROUP_COUNT(Exceed_${EXTEN})}" = "1" ]?only-dialextension,${EXTEN},1) 
exten => _.,n,Hangup