星号13.7 GROUP_COUNT始终返回1



我需要为每个扩展设置入站调用的并发调用限制,但进展不太顺利。

实际上,最低要求是防止多个呼叫拨打同一分机。这应该在"RingInUse"设置中完成,但Asterisk中有一个错误,如果多个呼叫加入队列,可能会违反RingInUse规则并拨打通话/振铃扩展。

我可以在Asterisk 1.6中设置呼叫限额=1,但在Asteridge 13.7中似乎没有影响(或贬值)。所以我需要想出另一个解决方案。

论坛上的一些帖子说,GROUPGROUP_COUNT是新Asterisk版本的完美解决方案。然后我发现了许多使用GROUPGROUP_COUNT的示例,但它们大多是基于Trunk或Outbound的调用。但是帖子提到的Inbound调用也可以工作,所以我在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"并给同一个代理打电话。所以我需要这个来覆盖"Ring In Use"(尽管为了更好的容错性,我已经关闭了它)。


2017-0216 02:49 GMT更新1

[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,但失败了。

星号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,Hangup

相关内容

  • 没有找到相关文章

最新更新