2017-02-15 27 views
0

Мне нужно установить ограничение одновременного вызова входящих вызовов для каждого расширения, но не очень хорошо.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, но потерпели неудачу.

+0

У меня была эта проблема, но не удалось найти причину. https://issues.asterisk.org/jira/browse/ASTERISK-26496 –

ответ

0

Нет такой ошибки в звездочке 13.14. Нет никакого тестового теста, который на устаревшей (более 2 лет) версии.

Возможно, вам следует заменить dialplan на нечто подобное (пробелы также важны).

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 

 Смежные вопросы

  • Нет связанных вопросов^_^