Очередь, стратегия ringall и порядок вызова агентов
Используется * версии 1.8.14.1, очередь из 20 агентов (организованная через Local), стратегия ringall и Realtime (агенты прописаны в таблице).
Local используется из-за того, чтобы все звонки одновременно шли на всех операторов, вне зависимости от того, занят аппарат оператора чем-то или нет. Realtime, соответственно, для оперативности управления.
И вот возникает такая неприятная ситуация: приходит вызов, но он неравномерно доходит до операторов. Например, один аппарат звонит на 1 секунду позже других, получается неравномерность работы операторов. К сожалению, заставить клиента согласиться со сменой стратегии распределения вызовов равномерно по операторам не могу, требуется только одновременный вызов ко всем, как на обычных мини-АТС.
И вот в связи с этим у меня вопрос. Каким образом * вызывает агентов из очереди? Точнее, в каком порядке? Где это прописывается? И какими средствами можно реализовать именно одновременность вызова операторов? Чтобы не было задержек по 1 секунде. Спасибо.
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0
Астериск не все делает многопотоково;
Телефоны дают небольшой лаг, иногда сетка;
Local очередь приносит баги, кстати будут проблемы, когда будет повисать все, например сип не будет работать до перезагрузки астериска. При нагрузке и не сразу, 20 агентов как раз нормально для подобных багов.
Разница в пределах примерно секунды, не считаю критичной.
Более подробно о реализации на конкретной версии астериска в исходниках и doxygen, но основная беда - Local channnel
Проблемы с сеткой, конечно, могут быть. Но исключение разных коммутаторов (аппараты и сервер включены все в один коммутатор) никакого эффекта не дает.
Мне бы получить случайный порядок вызова операторов, а не как сейчас - практически строго определенный. Чтобы от вызова к вызову задержка была у разных операторов.
Или понять, какой модуль определяет порядок вызова. Как я понимаю, читал здесь же на форуме, в конечном итоге каждого оператора в очереди вызывает dial, а вот какой модуль вызывает dial - так и не понял.
Added after 9 minutes:
Разница в пределах 1 секунды как раз очень критична, так как операторы работают по принципу "кто быстрее". Конечно, когда на 20 операторов приходит сразу 20 вызовов, то никакой разницы, но когда операторов больше, чем одновременно поступающих вызовов, то проявляется конфликт. На том аппарате, что для * был первым, на вызов УЖЕ ответили, в то время как на последнем только приходит вызов. А бывает, что этот вызов и вовсе не поступает на последние аппараты (вот я и хочу узнать, в каком модуле определяется очередность).
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0
при поступлении двух вызовов в очередь одновременно только первый из них попадает на телефонные аппараты, второй висит до того момента, пока не будет отвечен первый (хотя, конечно, это вполне логично). Но вот в этот момент как раз и возникают грабли с временной задержкой распространения сигнала вызова. Оператор, который мог бы принять второй вызов, отмечается занятым, так как к нему вызов пришёл фактически после ответа на него другим оператором. Да и астер ругается сообщением "SIP response 500 Call Already Terminated".
Вот думаю, может, как-то изящно это обойти. Или есть ли что-то похожее в других системах, но реализованное лучше...
Или как при SIP в очереди игнорировать состояние агента (не просто ringinuse=yes, а чтобы еще и ringinringing=yes).
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0
| Код: |
| queues.conf [queue] member => Local/ring@all_agents extensions.conf [all_agents] exten => ring,1,Dia(SIP/1&SIP/2&SIP/3&SIP/4&SIP/5&SIP/6&......) exten => ring,n,Busy(4) exten => ring,n,Hangup |
команда дайл с амперсанодом звонки не отправит одновременно, будет микроскопическая задержка
перед командой дайл неплохо посмотреть, какие агенты заняты и им не набирать - т.е. надо слекга усложнить дайлплан. Или настроить один звонок на сип телефонах (или в конфиге)
Но мысль интересная. Поэкспериментирую, спасибо!
_________________
Внимание! Свет в конце тоннеля может быть светом фар приближающегося поезда!
Ubuntu 10.04/12.04 - Asterisk 1.8.11.0-rc2/1.8.14.1/1.8.17.0/10.10.0