我需要为每个分机设置入站呼叫的并发调用限制,但不太顺利。
实际上,最低要求是防止多个呼叫给同一个分机打响。这应该在" RingInUse“设置中完成,但是星号中有一个错误,如果多个调用加入队列,它可能会违反RingInUse规则,并按下通话/铃声扩展。
我能够设置调用限制=1在星号1.6,但在星号13.7,它似乎没有效果(或贬值)。所以我需要想出另一个解决办法。
论坛上的一些帖子说,GROUP和GROUP_COUNT是更新星号版本的完美解决方案。然后,我发现了许多使用GROUP和GROUP_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。
我对这个结果非常失望,因为这不会阻止来自队列的进一步呼叫来调用同一个代理。
刚才我提到了,如果两个来电的时间太近的话,星号中有一个错误可能会打破“在使用中的环”,并给同一个代理打电话。所以我需要这个来覆盖“使用中的环”(虽然为了更好的容错,我已经关闭了它)。
更新1 2017年-0216 02:49格林尼治标准时间
[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,但失败了。
发布于 2017-02-15 12:38:59
星号13.14中肯定没有这样的错误。没有任何意义上的测试,即过时(超过2年)版本。
也许你应该把拨号计划替换成那样(空格也很重要)。
exten => _.,n,Noop(current count is ${GROUP_COUNT(Exceed_${EXTEN})})
exten => _.,n,Gotoif($[ "${GROUP_COUNT(Exceed_${EXTEN})}" = "1" ]?only-dialextension,${EXTEN},1)
exten => _.,n,Hanguphttps://stackoverflow.com/questions/42239859
复制相似问题