FreePBX: простейший набор ответственного за клиента
Сегодня я хочу рассказать о такой полезной функции, как автоматический набор ответственного менеджера. Эта фишка значительно экономит время и, главное — нервы Вашего клиента. Ну и еще немного денег, если Вы любите очереди с длинными приветствиями.
Представьте — как это приятно клиенту. Он звонит на тот же номер, на который звонил в первый раз, но сразу попадает на своего менеджера — конечно, если он свободен. Без приветствий, секретарей, ожиданий в очереди и прочего. Секретарю, кстати, тоже будет проще.
Обычно для этого нужна связь с Вашей системой учета (CRM) — если, конечно, она у Вас есть. Это непросто и недешево (опять же — обычно, я делаю для своих клиентов это недорого :). Но что делать, если системы учета, где хранятся связи между номерами клиентов и их ответственными — нет, либо существуют трудности с интеграцией телефонии и системы учета?
Возможно, Вам подойдет простое решение. Это выбор из CDR (отчеты о звонках) последнего звонка клиента на короткий внутренний номер и маршрутизация на него. Если такого звонка в базе нет — то клиент попадет в общую очередь. Если секретарь перевел (а) клиента на менеджера — менеджер стал ответственным. Минус системы — ответственным становится последний, который принял звонок или на которого перевели звонок.
Короче, система маршрутизирует клиента на последнего, с кем говорил клиент. Без пап, мам и кредитов :)
Если такой путь — Ваш, то велком. По традиции, все только в вебморде.
Все происходит на FreePBX 2.11 / Asterisk 11.x. Но уверен, что для других версий и/или систем на базе Asterisk сделать так же — не проблема.
Нам понадобится модуль Smart Routes. Модуль с исправленным мною html можно взять тут: yadi.sk/d/UE1dr4kctkNCH
Модуль выглядит устрашающе, но для нашей задачи он подойдет с минимальными изменениями от дефолта. Находим модуль в новом пункте меню Other и создаем новый маршрут.
Самое интересное тут — это SQL-запрос к таблице `cdr` базы `asteriskcdrdb`, которая скорее всего у Вас доступна через ODBC. Глянуть название элемента ODBC можно в файле res_odbc_additional.conf
Сам запрос:
SELECT `dst` FROM `cdr` WHERE `src` = '${CALLERID(num)}' AND `disposition` = 'ANSWERED' AND `dst` LIKE '1__' AND `lastapp` = 'DIAL' AND `billsec` > 5 ORDER BY `calldate` DESC LIMIT 1
Он отберет одну запись, где источником является номер звонящего, номер назначения начинается на »1» и в длину 3 символа, статус звонка: отвеченный и длительность этого ответа будет более 5 секунд. Сортировка отберет именно последнюю по дате запись.
В модуль этот запрос вернет конкретный внутренний номер, например, 101. Но его еще надо правильно маршрутизировать.
Для этого придется в секции Destinations перечислить все возможные варианты и настроить их:
Указываем маршруты по совпадению и в случае неответа. Обычно это общая очередь или группа, или другая точка входа.
Её же указываем как Default Destination.
Ниже, в секции Database Settings, настраиваем доступ к MYSQL и базе. Обычно это ODBC, требуется указать наименование dsn для доступа к таблице. Если Ваш CDR работает, то в системе он уже есть:
Либо настройте доступ по «устаревшим» хосту, логину, паролю и наименованию базы.
Останется указать модуль Smart Routes и наш маршрут в Inbound Routes, и все начинает работать. Эта настройка с проверкой заняла у меня в десять раз меньше времени, чем написание этой статьи.
Всем спасибо за Ваше время! Ну, а я пошел готовиться на море, не зря же я к нему переехал три месяца назад :)