Asterisk управление через браузер
Прочитав заголовок, вы, наверное, подумаете «Избитая тема, да сколько можно об это писать», но всё равно не смог не поделиться своими велосипедами с костылями наработками.
Введение
В нашей компании запись клиентов осуществлялась по телефону через мини-атс (я в этом деле не силен и могу ошибаться). Все заказы сохранялись в базу данных, интерфейсом служит веб-приложение. Плотность звонков в определенные моменты бывает очень высока и диспетчеры, в силу человеческого фактора, не всегда правильно или не с первого раза записывают телефон клиента (когда он отображается на экране телефона).
Но прогресс не стоял на месте. Место старой атс занял Asterisk 13. Мне же необходимо было:
- пробросить информацию о входящем в веб-приложение
- добавить возможность исходящего вызова из веб-приложения
- Сократить время обработки звонков
- Сократить количество ошибок при записи клиентов
- Сократить время на обзвон клиентов
Инструменты
Прочитав несколько статей, например, вот эту решил «а чем я хуже?» и нашёл свое видение решения задачи.
Решил остановиться на связке asterisk — pami — ratchet
Концепция
Демон с pami прослушивает asterisk на предмет входящих звонков. Параллельно крутиться websocket сервер. При поступлении входящего звонка информация разбирается и отправляется websocket клиенту (если таковой имеется).
Реализация
Служит для периодического опроса asterisk`a на предмет нужных нам событий. Я если честно, не буду утверждать правильные ли я события взял, но с этими всё работало. Просто похожую информацию можно достать из многих событий в зависимости от того, что именно вам нужно.
Ну тут тоже всё понятно. События мы получили. Теперь их нужно обработать. Кто такой server станет понятнее ниже.
Собственно наш websocket сервер. Не стал заморачиваться с форматом обмена, выбрал JSON. Здесь стоит обратить внимание, что у клиентов перезаписывается соединение с сервером. Это позволяет не плодить ответы при открытии многих вкладок в браузере.
Ну тут не знаю что и добавить. id — идентификатор телефона диспетчера. Необходим, чтобы определять к какому именно из диспетчеров поступил вызов.
Тут стоить отметить что websocket сервер и наш asterisk демон используют общий поток (loop). Иначе кто-то бы из них не заработал.
А как там дела в веб-приложении?
Ну тут всё просто. Не буду грузить информацией о том, как вытащить информацию о клиенте по номеру телефона и прочей ерундой.
phone — идентификатор телефона диспетчера.
Заключение
Поставленных целей я добился. Работает местами даже лучше чем я предполагал.
Что не вошло в статью, но что было сделано
- Настройка asterisk`a для подключения через ami
- Исходящий вызов через originate
- Bash скрипт для мониторинга работы демона и его подъема при падении
Не суди строго за качество кода. Пример показывает исключительно концепцию, хотя успешно работает в продакшене. Для меня это был прекрасный опыт работы с asterisk и websocket.
Asterisk GUI является web-интерфейсом к серверу Asterisk. Чем интересна данная утилита и что выделяет ее на фоне других известных панелей управления, таких как freepbx, trixbox, elastix? Во-первых, разработчиком данной панели является Digium, та же компания, что разрабатывает и поддерживает сам Asterisk. Asterisk GUI так же как и Asterisk, распространяется под лицензией GNU и является приложением […]
Asterisk GUI не поддерживается разработчиками с 2011 года. Не смотря на стабильную работу, использование данной веб-панели может быть небезопасным. Компания Voxlink рекомендует для аналогичных целей использовать веб-панель FreePBX. Но если Вы желаете попробовать оригинальную панель от разработчиков Asterisk, то эта статья расскажет Вам о том, как ее установить.
Asterisk GUI является web-интерфейсом к серверу Asterisk. Чем интересна данная утилита и что выделяет ее на фоне других известных панелей управления, таких как freepbx, trixbox, elastix?
Во-первых, разработчиком данной панели является Digium, та же компания, что разрабатывает и поддерживает сам Asterisk. Asterisk GUI так же как и Asterisk, распространяется под лицензией GNU и является приложением с открытым исходным кодом.
Во-вторых, данная панель является очень легковесной, не требует для своей работы наличия сервисов Apache, MySQL, PHP. Все что необходимо — работающий сервер Asterisk. Говоря другим языком, Asterisk GUI запустится везде, где сможет работать Asterisk.
В-третьих, Asterisk GUI не требует наличия каких-либо сторонних библиотек и может быть установлена на любом дистрибутиве Linux/UNIX.
Установка Asterisk GUI:
Для начала работы нам необходим установленный и работающий сервер Asterisk. Информацию по его установке можно найти здесь.
Создаем директорию для исходных кодов и клонируем в нее SVN:
Выполним компиляцию и установку исходников:
Перед запуском Asterisk GUI необходимо отредактировать два конфигурационных файла Asterisk и привести их к следующему виду:
Затем выполняем проверку конфигурации:
Everything looks good!
Good luck!
Заглавная страница веб-панели Asterisk-GUI
Обзор панели управления AsterGUI
Рассмотрим типовые операции, доступ к которым предоставляет панель Asterisk GUI:
- Добавление транков.
Добавление транков происходит через раздел меню “Trunks”, затем панель предлагает выбрать тип транка (предварительно проверив доступные устройства в системе), после чего всплывающее меню позволяет ввести конфигурацию транка по стандартным шаблонам.
Добавление транка на примере SIP
2. Настройка исходящей маршрутизации.
Создание правил исходящей маршрутизации происходит через всплывающее меню, разделенное на подпункты для настройки используемого экстеншена, транка и создания самого правила.
Настройка правил маршрутизации
3. Создание и редактирование диалплана.
Меню создания диалплана позволят определить необходимый контекст, экстеншн, создать правило обработки звонка.
Конфигурирование диалплана
Добавление экстеншенов
Настройка исходящей маршрутизации
Выводы:
AsteriskGUI является довольно удобной панелью управления сервером Asterisk. К ее плюсам можно отнести простую установку, стабильность, легковесность и отсутствие зависимостей от каких-либо сторонних библиотек или программных компонентов. Минусами этого продукта является отсутствие документации и довольно скудный функционал.
Прежде чем вы будете слишком взволнованы, эта глава не будет говорить о GUI конфигурации абонентской группы, таком как FreePBX. Мы признаем, что большая часть успеха Asterisk связана с успехом FreePBX-проектов, таких как AsteriskNOW и PBX in a Flash, но в этой книге мы сосредоточимся на Asterisk. Таким образом, мы не будем обсуждать каких-либо парней, которые по существу удаляют ваши отношения с диалпланом. Дело не в том что мы против этих вещей, а просто в том, что у нас есть так много места в этой книге, и наша цель — смотреть на Asterisk снизу вверх. Большинство проектов графических интерфейсов Asterisk скрывают внутреннюю работу Asterisk за интерфейсом и по этой причине они несовместимы с целями этой книги. Поэтому наше обсуждение веб-интерфейсов Asterisk будет сосредоточено на интерфейсах и компонентах, отличных от диалплана.
FreePBX GUI диалплан
Теперь, когда мы пообещали не говорить об интерфейсах диалплана, мы считаем что было бы неправильно вообще ничего не сказать о FreePBX, гиганте сообщества Asterisk. Этот интерфейс (который лежит в основе многих самых популярных дистрибутивов Asterisk, таких как AsteriskNOW, Elastix, дистрибутивов FreePBX и PBX in a Flash), несомненно, является очень большой частью того, почему Asterisk был столь успешным, какой он есть. С помощью интерфейса FreePBX вы можете настраивать и управлять многими аспектами системы Asterisk, не касаясь ни одного файла конфигурации. В то время как мы, пуристы, любим, чтобы все работали только с конфигурационными файлами, мы понимаем, что для многих изучение Linux и редактирование этих файлов вручную просто не произойдет. Для этих людей существует FreePBX, и мы уважаем важный вклад, который он внес в успех Asterisk.
В этой главе мы представим несколько проектов, обеспечивающих веб-интерфейсы в других частях системы, а также выборку веб-приложений, которые являются важными, полезными или рекомендуемыми. В целом, мы сосредоточились на бесплатных приложениях с открытым исходным кодом, но упомянем некоторые коммерческие продукты, где, по нашему мнению, это оправдано.
Многие сторонние приложения были разработаны для Asterisk. Описанные здесь, являются одними из лучших, на момент написания этой статьи.
Flash Operator Panel
Флеш-панель оператора (или FOP, как оно более широко известно) является интерфейсом в первую очередь для использования операторов коммутатора. FOP использует Adobe Flash для представления интерфейса через веб-браузер и подключается к Asterisk через AMI (см. Главу 20 для обсуждения AMI).
Существует две версии Флеш-панели оператора: оригинальная версия (версия 0.30, теперь только версия для обслуживания и, вероятно, несовместимая с Asterisk 11) и версия FOP2 (показана на Рис. 25-1), которая является значительно улучшенной по сравнению с оригинальной версией, но требует покупки лицензии для любой системы с более чем 15 внутренними номерами.
Рисунок 25-1. FOP2
Состояние очереди и отчеты
В большинстве call-центров недостаточно просто правильно маршрутизировать вызовы. Равное значение для большинства колл-центров имеет способность руководящего и управленческого персонала определять как работают очередь и агенты. Для этого будут полезны две вещи: информация о состоянии живой очереди и некоторый пакет отчетов.
Отображение состояния очереди
Состояние очереди часто отображается на большой настенной панели или доске для чтения. Вот некоторые из видов информации, которые могут быть включены:
- Количество агентов, вошедших в систему
- Количество удерживаемых абонентов
- Количество вызовов
- Текущее время удержания
- Среднее время
- Процент отказов
- Уровень обслуживания
Может потребоваться и другая информация; целью отображения состояния очереди является представление как руководящему персоналу, так и агентам очереди быстрой визуальной индикации состояния очереди в определенный момент времени.
Кроме того, в качестве информационного средства могут отображаться показатели производительности группы или агента.
Программное обеспечение Asternic Call Center Stats обеспечивает базовое отображение состояния и доступно в версии lite с открытым исходным кодом. Есть также несколько коммерческих продуктов, которые предлагают эту функцию.
Отчеты очереди
Отчеты об очередях состоят из отчетов и графиков, которые могут использоваться наблюдающим персоналом для анализа производительности очередей и агентов с исторической перспективой. Многие показатели будут аналогичны индикации состояния; однако, цель отчетности — обеспечивать мониторинг укомплектованности, выявления проблем и анализа тенденций.
Мы обсудили несколько интерфейсов отчетов очереди в Главе 13.
Детальная запись вызовов (CDR)
В то время, как Asterisk выполняет достаточно хорошую работу по созданию и хранению CDR, записи находятся в очень сыром формате, что затрудняет их анализ.
Вступление в пакет отчетов CDR. В 1990-х годах, когда тарифы на междугородную связь были сложными и дорогостоящими, целая субиндустрия была порождена компаниями, стремящимися помочь другим компаниям понять смысл сложных тарифов на междугородние вызовы. В настоящее время, когда междугородняя связь является гораздо менее дорогостоящей, а также, как правило, более простой с точки зрения моделей ценообразования, существует меньше необходимости в детальном анализе записей вызовов. Тем не менее, многие из этих опытных компаний добавили поддержку анализа CDR Asterisk; таким образом, если вы хотите отличные возможности отчетности, вы найдете огромную отрасль с большим количеством опытных участников.
Для простого интерфейса записей вызовов популярной программой является CDR-Stats, которая является преемницей чрезвычайно популярного пакета Asterisk-Stat. Этот интерфейс отчетов с открытым исходным кодом предоставляет простой способ изучения записей сведений о вызовах, а также некоторых базовых метрик для шаблонов вызовов.
A2Billing
Проект A2Billing — это не просто биллинговый интерфейс для Asterisk: это, по сути, полноценный VoIP-оператор из коробки. Этот сложный и всеобъемлющий продукт предоставляет большую часть технологий, которые вам понадобятся для предоставления услуг реселлера VoIP. 1
Платформа A2Billing была щедро выпущена под GNU Affero General Public License (APGL) как open source. Спонсор проекта A2Billing — Star2Billing, предлагает консультационные услуги чтобы помочь вам быстрее освоиться.
Вывод
В этой короткой главе мы предоставили некоторые указатели на популярные графические приложения, которые могут быть использованы в сочетании с Asterisk. Хотя мы не рассматривали их подробно, мы признаем важность FreePBX, который предоставляет интерфейс конфигурации УАТС поверх Asterisk. Если вас интересует полное графическое решение для простой конфигурации УАТС, мы рекомендуем вам взглянуть на него. Чтобы попробовать мы рекомендуем использовать дистрибутив AsteriskNOW, который предоставляет FreePBX в качестве графического интерфейса.
1Он не может предоставить вам бизнес-смекалку, опыт работы в телефонной компании или автоматическую безопасность, поэтому, пожалуйста, не думайте, что все, что вам нужно сделать, это загрузить A2Billing, прежде чем вы сможете взять на себя AT&T!
Остались вопросы?
Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
Почти всякий раз, когда речь заходит о выборе web-интерфейса к asterisk, в ход идут рекомендации «тяжелой артиллерии»: trixbox, elastix, freepbx. Asterisk GUI остается эдакой «темной лошадкой»: вроде и слышали о нем, вроде и скриншоты симпатишные, а реально работающих систем — с гулькин нос. Частично это объясняется новизной, необкатанностью продукта. Частично — отсутствием документации. Частично — иннертностью сообщества. Попытаемся сдвинуть дело с мертвой точки…
В статье — пошаговые инструкции, как установить и настроить Asterisk с Asterisk GUI.
Преимущества:
- Разрабатывается digium, той же компанией, что разрабатывает и сам asterisk
- Не требует наличия Apache, MySQL, PHP. Использует встроенный веб-сервер asterisk. Написан на html и javascript
- Не зависит от наличия сторонних программ/библиотек. Не требует установки на каком-либо конкретном дистрибутиве. Все что нужно для установки — работающий asterisk
Установка Asterisk и Asterisk GUI
Приступим… Качаем исходный код из svn и собираем. Можно скопировать нижеприведеные комманды в консоль и откинуться на спинку кресла в ожидании.
На этом процесс установки завершен.
Настройка Asterisk при помощи Asterisk GUI
На рабочей машине запускаем браузер и вбиваем в адресной строке x.x.x.x:8088, где x.x.x.x — IP машины, на которой установлены Asterisk и Asterisk GUI. Вводим имя пользователя и пароль, и жмем кнопку login.
Прежде всего сконфигурируем SIP-транк к провайдеру. Заходим в «Trunks», «VoIP Trunks» и жмем «New SIP/IAX Trunk». Заполняем поля в окошке по аналогии с тем, что на картинке.
Сконфигурируем правило для исходящих звонков: все исходящие звонки — отправлять в только что созданный транк. Идем в «Outgoing Calling Rules». Жмем «New Calling Rule» и заполняем поля в окошке.
Сконфигурируем план звонков (Dialplan). Dialplan — не что иное как группа правил для исходящих звонков. В нашем случае у нас всего одно правило. Итак, идем в «Dial Plans», жмем «New DialPlan». В окошке отмечаем галочкой созданное на предыдущем шаге правило.
Создаем пользователя. Идем в «Users». Жмем «Create New User». Определяем нашему пользователю имя (CallerID Name), номер для исходящих звонков (CallerID Number) и план звонков.
Ну вот и все. Жмем кнопку «Apply Changes» в верхнем правом углу.
Надеюсь, кому-нибудь эта статья будет полезна.
С момента нашей последней публикации об интерфейсе статистики для IP-АТС Asterisk прошел уже почти год. Проект растет, развивается, фидбек от клиентов и хаброюзеров позволил многое переосмыслить и существенно доработать его функционал.
Также мы запустили сайт, партнерку, wiki, паблики в соц. сетях, написали биллинг, переписали демон синхронизации на golang… и сделали еще кучу классных штук — всего не перечислишь.
Сегодня я хочу поделиться с сообществом нашими достижениями в развитии продукта.
Вот так сейчас выглядит меню и стартовый отчет:
Под катом я детально раскрою все пункты и подробно расскажу о работе с интерфейсом.
И конечно, в честь «годовщины», всем подарки!
Что мы умеем сегодня
- Прослушивать и скачивать записи совершенных вызовов
(причем скачать можно все записи, найденные по фильтру поиска, одним архивом). - Отслеживать качество отработки звонков, оценивать их эффективность
(кто сколько принял/пропустил/совершил звонков; их продолжительность). - Создавать группы внутренних номеров и просматривать отчеты в разрезе этих групп
(для исходящих вызовов, в отчетах по входящим абоненты группируются посредством очередей Asterisk). - Предоставлять каждому супервизору доступ к группам и очередям, отчеты которых он может просматривать.
- Смотреть статистику входящих звонков в разрезе каждого «внешнего» номера
(сколько входящих за период было по каждому номеру, сколько принято/пропущено). - Просматривать подробные журналы внешних, внутренних и пропущенных звонков, а также журнал позвонивших вам впервые (табличные отчеты с гибким фильтром поиска).
- Экспортировать все отчеты в Excel.
- Добавлять комментарии к звонкам (в табличных отчетах).
- Осуществлять мониторинг АТС
(мы интегрировали наш сервис с zabbix и отправим вам email/sms в случае обнаружения проблем). - Оценить время работы и перерывов каждого оператора очереди за выбранный период.
- Добавить логотип вашей компании
(на страничку авторизации и в хедер для локальной версии и только в хедер для облачной). - Задать любой вопрос support'у прямо из интерфейса.
- Смотреть разбивку по количеству входящих и исходящих звонков по областям/краям и прочим субъектам РФ на Яндекс.Карте.
Главная
Меню делится на два отчета:
-
«Общая», где представлена информация о всех поступивших на АТС звонках в разрезе внешних («городских») номеров.
Скриншот верхней части страницы был до ката, ниже идут диаграммы и график:
Здесь можно выбрать одновременно все очереди (повторюсь — очереди Asterisk), или одну/несколько необходимых.
Скриншоты отчета по исходящим звонкам под спойлером ниже, дабы не нагружать пост
- оценить «выхлоп» рекламной компании, где вы указали определенный номер телефона
- понять какой номер наиболее «популярен» у клиентов
- узнать соотношение принятых/пропущенных к поступившим на АТС звонкам в целом
- получить картину по входящим звонкам как по очереди(ям) так и по каждому оператору в отдельности
- отследить количественные и качественные характеристики исходящих вызовов сотрудников
Звонки
Здесь собранны 4 табличных отчета:
-
«Внешние звонки»
Покажет все звонки, поступившие извне на АТС или совершенные ее абонентами вовне. Делится на входящие и исходящие и позволяет искать звонки по очередям и/или группам.
Помимо очереди(ей), в фильтре для входящих можно выбрать группу (например, если в диалплане после Queue() идет Dial(), то звонки тоже найдутся).
В дополнение к основным фильтрам: дата, очередь(и) и/или группа, под спойлером есть еще ряд дополнительных. Вот как это выглядит:
Переключим плашку Звонки: вверху страницы на «Исходящие»
Фильтр несколько отличается, но в целом все тоже самое.
Отчет найдет вам все звонки между внутренними номерами, т.е. абонентами АТС.
первый из них сохранит отчет в формате xls, по клику на второй вы скачаете архив со всеми файлами записей разговоров, найденными по фильтру поиска, а третий уведет в нашу вики на FAQ открытого отчета или настройки.
Группа отчетов «Звонки» служит подспорьем в поиске подробной информации по любому вызову, предоставляет возможность прослушать и скачать записи разговоров и выгрузить таблицу в Excel.
Здесь у меня все, идем далее.
Работа операторов
Отчет покажет сколько отработал каждый из операторов очереди за период времени. Оператор может добавляться и удаляться из очереди, может ставить себя на паузу (на обеденный перерыв, например) и убирать с паузы.
Все эти события вы увидите в данном отчете и сможете оценить сколько времени каждый оператор очереди провел в ней (время пауз и время добавления/удаления вычитается из общего).
Замечу, для построения этой страницы, Asterisk нужно сконфигурировать должным образом, т.е. операторам или руководителю надлежит предоставить в распоряжение механизм добавления/удаления и снятия/постановки на паузу участников очереди.
Геолокация входящих и исходящих звонков.
Мы взяли БД соответствия номеров их территориальной принадлежности, для ускорения работы затолкали ее в reddis, прикрутили Яндекс.Карты и получили вот такую картинку:
Работает пока только по РФ, в разрезе входящих и исходящих вызовов.
Для входящих есть дополнительный фильтр — внешний номер, т.е. получить результат можно как по всем «городским» номерам так и по каждому в отдельности.
Уверен, на скринах все наглядно, не буду тратить ваше время и буквы — продолжим.
АТС. Статус
Сервис статистики интегрирован с популярной системой мониторинга Zabbix.
В личном кабинете пользователя, в этом меню, мы рапортуем о наличии каких-либо проблем и выводим несколько графиков ресурсов АТС:
Меню «подсвечивается» цифрой-количеством сработавших триггеров.
Если хотите, то при срабатывании триггера отправим вам email или sms о проблеме.
Плюс к этому, за небольшую доплату, возьмем вашу Asterisk под свое «крыло» и сразу же устраним возникшую неполадку.
АТС. Параметры
Здесь разместились настройки различных оповещений от системы мониторинга, баланс на sms-счету, а также кнопка включения/отключения услуги «Поддержка АТС».
Дополнительные отчеты
Совсем забыл упомянуть — ведь у нас есть еще и дополнительные отчеты.
Идея в том, что вам может не хватить функционала «из коробки» и требуется узкоспециализированный отчет под конкретные бизнес-процессы (или логику обработки звонков, если хотите). Мы напишем такой по вашему ТЗ.
Для примера, приведу отчет «Кто ответил», написанный для call-центра клиента:
С отчетами управились, теперь я расскажу о настройках.
Настройки
Разнообразные параметры конфигурации интерфейса разместились в отдельной подгруппе:
Началом работы с настройкой служит кнопка «Загрузить номера из БД».
Она подтянет соответствие внутренний_номер callerid из базы данных (в запросе используются все звонки за последний год).
Добавлять/удалять сотрудников можно по одному, используя мультиселект (ctrl/cmd + ЛКМ):
Меню настройки супервизора похоже на настройку групп, есть все те же возможности.
Вот как оно выглядит:
Help desk и Wiki
«Help desk» позволит задать вопрос, попросить помочь или разъяснить что-то в работе статистики. Мы интегрировали его с тикет-системой и сразу же получаем уведомления о новых запросах, а вы можете отслеживать всю переписку прямо из интерфейса.
«Wiki» — это просто ссылка на нашу базу знаний, где мы храним инструкции по работе с интерфейсом и собираем разные лайфхаки по части Asterisk.
Вместо заключения
Именно вместо, потому как работа над новыми фичами кипит и сейчас — проект не стоит на месте и постоянно продолжает совершенствоваться. Например, в одном из следующих релизов, мы планируем добавить меню «Real-time».
Соберем там такие показатели как:
- Количество и статус транков
- Количество и статус внутренних номеров
- Состояние очередей
- Активные звонки
- И еще что-нибудь классное
Нет аккаунта на Хабре? Не беда — все мои координаты в профиле FessAectan, пишите напрямую.
Нет, не забыл
Спасибо всем, кто осилил и дошел до финала публикации. Авторам пяти самых крутых комментов по улучшению продукта — месяц бесплатного пользования облачной версией! Победителей объявим в пятницу 27.10.2017.
Читайте также:
- Как управлять телефоном друга через свой телефон без установки программы
- Как установить программу повер поинт на компьютер бесплатно
- Какие из указанных стандартных программ windows позволяют создавать графические изображения
- 1с табличная часть кнопка добавить
- Назначение программы компьютерная энциклопедия