Мне нужно установить ограничение одновременного вызова входящих вызовов для каждого расширения, но не очень хорошо.Asterisk 13.7 GROUP_COUNT всегда возвращает 1
На самом деле минимальное требование состоит в том, чтобы предотвратить множественные вызовы с одинаковым расширением. Это должно быть сделано в настройках «RingInUse», но в Asterisk есть ошибка, если к очереди присоединяется несколько вызовов, это может нарушить правило RingInUse и вызвать расширение для разговора/вызова.
Мне удалось установить call-limit = 1 в Asterisk 1.6, но в Asterisk 13.7 он кажется недействительным (или обесценившимся). Поэтому мне нужно придумать другое решение.
Некоторые сообщения на форумах говорят, что GROUP
и GROUP_COUNT
- идеальное решение для новых версий Asterisk. Затем я нашел много примеров, которые используют GROUP
и GROUP_COUNT
, но большинство из них - внешние или исходящие вызовы. Но упомянутые сообщения Inbound calls также работают, поэтому я реализовал его в разделе очереди моего 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» (хотя я уже отключил его для лучшей отказоустойчивости).
Update 1 в 2017-0216 2: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, но потерпели неудачу.
У меня была эта проблема, но не удалось найти причину. https://issues.asterisk.org/jira/browse/ASTERISK-26496 –