Есть call-центр. Хочется реализовать очередь для входящих звонков со своей логикой обработки, например, чтобы:
В принципе все это можно реализовать средствами dialplan'а и функциями связанными с моей базой данных. Вопросы: как получить список свободных в данный момент телефонистов? Если свободных нет, как ожидать момента когда телефонист освободиться?
если вы напишите "распределение входящих звонков между телефонистами было по моему алгоритму" более подробно, я вам скажу скольку будет стоить.
так как вы пишите это работать не будет. ну развечто у вас до 50 телефонов. вообще все кроме "алгоритма" и "чего анпридумывает" делается более-мене стаандартными но не публичными приемами. типо знаяю-как-не-скажу-ибо-мой-хлеб.
хотите, подпишите НДА, я вам скажу как ;) в паблик я жто не буду вылаживать.
навскидку, 1-2 делалось для одного колцентра за 400 доларов, вип клиенты вообще тривально делаются с ипользование функционала очередей. ну а занятые агенты выключаются с использованием dynamic agents либо Local канал и базы. ввообще тривиально
Это вам нужно немерянного программера нанять со знанием *. Причём на постоянную работу ))) Или купить OpenScape Office от сименса, там все эти рюшечки уже есть...
Можно, конечно, подправить исходники asterisk, чтобы при стандартных очередях трубка не поднималась, но мне так не хочется делать. Для своего Trixbox я пока написал dialplan Injection:
Set(MyDialCnt=1) Set(MyDisp=${MY_QUEUE_NEXT()}) NoOp(My MyDisp = {${MyDisp}) Dial(${MyDisp}, 2) (get_next), Set(MyDisp=${MY_QUEUE_NEXT()}) GotoIf($["${MyDisp}" = ""]?loop_end:try_dial) (try_dial), Dial(${MyDisp}, 5) Set(MyDialCnt=$[${MyDialCnt} + 1]) NoOp(My Test Exp ${MyDialCnt}) Goto(get_next) (loop_end), NoOp(My disp loop end)
Пока делается 2 круга среди телефонистов. Если нет свободных, на втором круге подключается 2 группа телефонистов, которые подключаются на прием входящих звонков в крайнем случае.
Мне в нем не нравиться, что при поиске свободного телефониста делается Dial(). Мне кажется это нагружает asterisk, но не знаю как определить занятость ексненшена. Теперь когда буду дописывать в MY-QUEUE-NEXT() буду передавать CallerID и определять кто раньше обрабатывал звонок. Буду использовать GROUP() что бы сделать очередь для VIP - пока в ней кто-то есть для "обычного" звонка делается секундная пауза Wait.
Мне просто не хочется повторять функциональность Queue(), поэтому и спрашиваю реализован ли уже нужный функционал в asterisk, или все-таки придется изобретать велосипед.
Задан: 2011-09-09 18:03:49 +0400
Просмотрен: 675 раз
Обновлен: Sep 10 '11
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.