FreePBX: простейший набор ответственного за клиента

    Снова здравствуйте!

    Сегодня я хочу рассказать о такой полезной функции, как автоматический набор ответственного менеджера. Эта фишка значительно экономит время и, главное — нервы Вашего клиента. Ну и еще немного денег, если Вы любите очереди с длинными приветствиями.

    Представьте — как это приятно клиенту. Он звонит на тот же номер, на который звонил в первый раз, но сразу попадает на своего менеджера — конечно, если он свободен. Без приветствий, секретарей, ожиданий в очереди и прочего. Секретарю, кстати, тоже будет проще.

    Обычно для этого нужна связь с Вашей системой учета (CRM) — если, конечно, она у Вас есть. Это непросто и недешево (опять же — обычно, я делаю для своих клиентов это недорого :). Но что делать, если системы учета, где хранятся связи между номерами клиентов и их ответственными — нет, либо существуют трудности с интеграцией телефонии и системы учета?

    Возможно, Вам подойдет простое решение. Это выбор из CDR (отчеты о звонках) последнего звонка клиента на короткий внутренний номер и маршрутизация на него. Если такого звонка в базе нет — то клиент попадет в общую очередь. Если секретарь перевел(а) клиента на менеджера — менеджер стал ответственным. Минус системы — ответственным становится последний, который принял звонок или на которого перевели звонок.

    Короче, система маршрутизирует клиента на последнего, с кем говорил клиент. Без пап, мам и кредитов :)

    Если такой путь — Ваш, то велком. По традиции, все только в вебморде.


    Все происходит на FreePBX 2.11 / Asterisk 11.x. Но уверен, что для других версий и/или систем на базе Asterisk сделать так же — не проблема.

    Нам понадобится модуль Smart Routes. Модуль с исправленным мною html можно взять тут: yadi.sk/d/UE1dr4kctkNCH
    Модуль выглядит устрашающе, но для нашей задачи он подойдет с минимальными изменениями от дефолта. Находим модуль в новом пункте меню Other и создаем новый маршрут.

    image

    Самое интересное тут — это 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 перечислить все возможные варианты и настроить их:

    image

    Указываем маршруты по совпадению и в случае неответа. Обычно это общая очередь или группа, или другая точка входа.
    Её же указываем как Default Destination.

    Ниже, в секции Database Settings, настраиваем доступ к MYSQL и базе. Обычно это ODBC, требуется указать наименование dsn для доступа к таблице. Если Ваш CDR работает, то в системе он уже есть:

    image

    Либо настройте доступ по «устаревшим» хосту, логину, паролю и наименованию базы.

    Останется указать модуль Smart Routes и наш маршрут в Inbound Routes, и все начинает работать. Эта настройка с проверкой заняла у меня в десять раз меньше времени, чем написание этой статьи.

    Всем спасибо за Ваше время! Ну, а я пошел готовиться на море, не зря же я к нему переехал три месяца назад :)
    Поделиться публикацией
    Похожие публикации
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 18
      0
      Вот почему мне то мне кажется что FreePBX это очень сладкая система для взлома и угона телефонного трафика.
        0
        Мы установили FreePBX на машину, которая смотрела наружу и через час обнаружили, что наш свеженький сервер участвует в ботнете, который DDOSит сайты на joomla. Где-то есть дыра, позволяющая залить шелл. Версия была не самая последняя, возможно, исправлено.
          0
          Вы говорите о «готовом дистрибутиве» в виде iso — AsteriskNow. Я же делаю свою работу иначе.
            0
            Нет, они говорят именно о FreePBX. Присоединяюсь к вышеозначенным ораторам.
              0
              FreePBX — набор скриптов, в основном на php. Если Вы не можете закрыть апач паролем через htpasswd и .htaccess, закрыв любую возможность использования недочетов в скриптах — вы не можете выступать, как специалист в области безопасности.

              К слову, более 50 серверов создано и обслуживаются мною на FreePBX.
                0
                Закрывайте на здоровье, мне ваш порт 80 не нужен, я 5060 буду атаковать. FreePBX по умолчанию идет с уязвимостями в настройках asterisk, и если вам для настройки нужна веб-морда, то «вы не можете выступать как специалист» в области ip-телефонии.
                  0
                  Я очень рад, что вы запомнили порт транспортного протокола. Можете попробовать атаковать мой сервер: sip.vmclouds.ru, если «взломаете» 5060 — признаю, что вы гуру.
                  Пока что вы — трепло.

                  В голый астериск я умел раньше чем во FreePBX, я об этом писал. Жаль, что вы писатель, не читатель.
                    0
                    > если «взломаете»
                    Да без проблем. О файле iax.conf слышали? Трогали его когда-нибудь? Чего это вы звонки без авторизации по iax2 принимаете?
                    И это всего за каких-то 10-15 минут из найденного. Результат nmap вашего сервера вообще выглядит как какой-то CTF for dummies, аж руки чешутся.
                    В личку вам описал уязвимость, метод её эксплуатации и устранения.
                      0
                      Звонки по iax принимаются от всех для работы моего sip-id: whoim@asterisk.ru
                      Это нормально, можете попытаться это использовать для чего то нехорошего. Как получится — так и пишите.
                      Личку почитаю, конечно, отпишусь
                        0
                        Отписал в личку. Вкратце — рабочий алгоритм (принимать звонки от всех по iax и направлять в очередь) вы приняли за баг.
                        Про nmap — ничего не написали, жду с нетерпением, когда у вас получится что нибудь :)
                          0
                          В общем, персонаж неспособен ни на что, кроме как называть всех «школьниками» в ЛС. Обычный, простите, писдобол, запомнивший пару словечек и научившийся ковырять extensions.conf в mcedit.
                          Я дал ему все, чтобы он показал свою крутость делом. Дела не было, ну да подождем.
                            0
                            Ссылку на ваши оскорбления передал в службу поддержки.
                            За языком советую следать — это раз.
                            Все ваши «супир-сервиры» где каждая дыра, это не дыра а «рабочий алгоритм» пометил, спасибо. Еще подкинете?
                              0
                              Как это волшебно — оскорблять первым, а получая обратку — бежать жаловаться. Вы еще меня называете школьником?
                              Досвидания. Жду результата делом.
                                0
                                Вбивать чужие номера в форму «заказ звонка с сайта» — все, на что вы способны?)
                                Привет Липецку :)
              0
              Один простейший прием позволяет закрыть все и сразу — apache basic auth.
              +1
              Как по мне не хватает еще ограничения по времени, когда последний раз звонил клиент. У меня реализовано на голом Asterisk подобная схема, но у меня ограничениее в 24 часа, т.е. если клиент звонил последний раз более чем сутки назад, то он сразу идет в общую очередь, если нет, то на последнего ответевшего оператора. Сделано это с тем замыслом что если клиент давно уже звонил то и проблема вероятнее всего у него уже другая. В вашем же случае получается что внезависимости от проблемы, клиент попадает на одного и того же оператора, что не совсем верно, опять же по моему мнению.
                0
                Изменить запрос под Ваше требование несложно, в принципе :)
                Вполне кстати здравое требование!

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое