【问题标题】:Asterisk 13.7 GROUP_COUNT always returns 1Asterisk 13.7 GROUP_COUNT 总是返回 1
【发布时间】:2017-02-15 02:52:49
【问题描述】:

我需要为每个分机设置呼入呼叫的并发呼叫限制,但不是很好。

实际上,最低要求是防止多个呼叫响铃同一分机。这应该在“RingInUse”设置中完成,但如果多个呼叫加入队列,Asterisk 中存在一个错误,它可能会破坏 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 更新 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 但失败了。

【问题讨论】:

标签: asterisk pbx


【解决方案1】:

在星号 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

【讨论】:

    猜你喜欢
    • 2016-11-21
    • 2019-10-10
    • 2014-04-13
    • 2017-03-20
    • 2013-11-04
    • 2011-12-09
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多