Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Как сделать альтернативную очередь?

0

Есть call-центр. Хочется реализовать очередь для входящих звонков со своей логикой обработки, например, чтобы:

  • при звонке клиента не поднималась трубка пока он ждет ответа, чтобы он денег не тратил;
  • клиент при повторном звонке попадал на того телефониста с кем он уже разговаривал;
  • телефонист из прикладной программы мог изменять статус "в работе"/"отошел";
  • распределение входящих звонков между телефонистами было по моему алгоритму;
  • чтобы vip-клиенты (список в базе данных) были впереди очереди согласно некоторому рейтингу;
  • ну и другое, что начальство напридумывает...

В принципе все это можно реализовать средствами dialplan'а и функциями связанными с моей базой данных. Вопросы: как получить список свободных в данный момент телефонистов? Если свободных нет, как ожидать момента когда телефонист освободиться?

спросил Sep 9 '11

ponch Gravatar ponch
231 26 3 12

обновил Sep 9 '11

Comments

Я бы сменил такое начальство. Оно выснашает весь мозг пока это не отладится нормально, а на это уйдут годы. amonra (Sep 9 '11)edit
при нормальное реализации это можно за неделю написать,какие годы meral (Sep 10 '11)edit

3 Ответа

1

если вы напишите "распределение входящих звонков между телефонистами было по моему алгоритму" более подробно, я вам скажу скольку будет стоить.

так как вы пишите это работать не будет. ну развечто у вас до 50 телефонов. вообще все кроме "алгоритма" и "чего анпридумывает" делается более-мене стаандартными но не публичными приемами. типо знаяю-как-не-скажу-ибо-мой-хлеб.

хотите, подпишите НДА, я вам скажу как ;) в паблик я жто не буду вылаживать.

навскидку, 1-2 делалось для одного колцентра за 400 доларов, вип клиенты вообще тривально делаются с ипользование функционала очередей. ну а занятые агенты выключаются с использованием dynamic agents либо Local канал и базы. ввообще тривиально

ссылка удалить спам редактировать

ответил Sep 10 '11

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

обновил Sep 10 '11

Comments

Значит мне подойдет, у меня телефонистов в пределах 20. Я сейчас сам себе отвечу, а то в комментариях форматирование сбивается. ponch (Sep 10 '11)edit
Может намекнете, как делали чтобы при звонке клиента не поднималась трубка. Исходники правили? ponch (Sep 10 '11)edit
нет, не правил. а вы подумайте чтодля этого надо;) . я вообще правлю исходники раз в год и как правило убираю баги в вастерсике. астериск повзоялет сделать почти что угодно. там же полный язык переходов. ну квлификация разная надо для разныъх действий. meral (Sep 11 '11)edit
есть множество вариантов. от макросов privacy до ручного управления через musiconhold и паарлельный звонок в очередь. а еще есть высший пилотаж с использванием audiohooks,asynagi и очередей. meral (Sep 11 '11)edit
за идеи спасибо! :) ponch (Sep 12 '11)edit
0

Это вам нужно немерянного программера нанять со знанием *. Причём на постоянную работу ))) Или купить OpenScape Office от сименса, там все эти рюшечки уже есть...

ссылка удалить спам редактировать

ответил Sep 9 '11

amonra Gravatar amonra flag of Ukraine
2301 26 13 65
http://lantec.ua/

обновил Sep 9 '11

Comments

Да ладно! Что там сложного-то? Всю логику в моей базе можно сделать. Для каждого звонка по CallerID определяем кто с ним разговаривал, если занят/не отвечает, берем из базы следующего. Если все заняты, то крутим цикл ожидания с секундной задержкой и ждем когда кто-то освободиться. Занятость телефонистов можно контролировать с помощью GROUP() и GROUP_COUNT(). VIP очередь тоже через GROUP() можно сделать. Лучше скажите, как задержку сделать? ponch (Sep 9 '11)edit
это вы не пробвали написать. вы попробуйте. не будет это работать;) вообще ваша задача равносильна задачи написания колцентра с нуля. вон вицидиал уже пишут лет 15. а он как работал через **** так и работает. тоесть решение задачи зависит от уровня программиста. meral (Sep 10 '11)edit
м. а задержка это что?) meral (Sep 10 '11)edit
Нашел уже. Это Wait. ponch (Sep 10 '11)edit
0

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

ссылка удалить спам редактировать

ответил Sep 10 '11

ponch Gravatar ponch
231 26 3 12

Comments

в вашем случае проще всего вбазу значение писать. через DB() meral (Sep 11 '11)edit
реализован. называется queue. вы его готовить не умеете meral (Sep 11 '11)edit
возможно, что не умею, так как не знаю, как заставить queue не поднимать трубу. И мне кажется это обычными средствами не сделать. ponch (Sep 11 '11)edit
ну не занете, ставте в холд, запускаете еше один звонок в очередь, и по ответу этого звонка соединяете с етм что на холде. блин. ну как вам еше сказать что на вашем уровне это не делается? meral (Sep 11 '11)edit
вот именно так, как сказали. :) А уровень всегда полезно повышать... Буду стараться :) ponch (Sep 12 '11)edit

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: Sep 9 '11

Просмотрен: 679 раз

Обновлен: Sep 10 '11

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.