Интеграция Asterisk со Speech Analytics
В наше время становится возможным и популярным анализировать негативный эмоциональный оттенок сотрудников колл-центра, наличие извинений, слов-паразитов и прочих нежелательных факторов речи. Но поскольку функционал АТС на базе asterisk позволяет только произвести запись и сохранить её, для реализации желаемого функционала необходимо (производить запись требуется) объединение со сторонним сервисом. Пример работы с одним из таких мы и […]
В наше время становится возможным и популярным анализировать негативный эмоциональный оттенок сотрудников колл-центра, наличие извинений, слов-паразитов и прочих нежелательных факторов речи. Но поскольку функционал АТС на базе asterisk позволяет только произвести запись и сохранить её, для реализации желаемого функционала необходимо (производить запись требуется) объединение со сторонним сервисом. Пример работы с одним из таких мы и рассмотрим ниже.
- Asterisk 13.21.0
- PHP 5.6.36
- Apache 2.2.15
Принцип работы сервиса подробно описан в статье «Asterisk, Cisco, Avaya, Oktell, MightyCall, Naumen и др.»
Мы же рассмотрим лишь основные моменты. Инициатором обмена информацией выступает сам сервис. Получая метаданные, а из них ссылки на записи SA работает с неким API предоставляемым со стороны АТС. Для выдачи корректных данных мы и будем проводить настройки сервера телефонии. Нам потребуется выполнить несколько шагов, попутно проводя сравнение с предыдущей версией и давая обоснования изменениям.
- Настройка доступа
- Настройка диалплана
- Настройка веб-сервера
- Размещение и настройка API-скриптов
Настройка доступа
Первый и один из самых необходимых пунктов настройки. Без его выполнения никакого прогресса не будет. Как уже говорилось ранее SA будет присылать запросы на наш web-сервер, на 443-порт. Поэтому необходимо разрешить доступ как на сетевом уровне, так в iptables при его наличии. Как с последним работать и посмотреть примеры можно на нашем сайте в статье «Защита Asterisk с помощью iptables».
Для проверки можно сразу создать в корневой директории web-сервера страницу-заглушку:
# nano /var/www/html/sapi/test.php
со следующим содержимым:
<?php
phpinfo();
?>
Если доступ настроен корректно, то перейдя по ссылке: https://ip_asterisk/sapi/test.php вы увидите страницу информации.
Настройка диалплана
Поскольку во внутренней базе данных asterisk хранится недостаточное количество данных, нам придётся немного его модифицировать. Начнём с простого: источник завершения звонка. Параметр второстепенный, однако при возможности его необходимо хранить и передавать. Поэтому открываем на редактирование контекст в котором заканчиваются все звонки (для примера у нас это macro-hangupcall) и добавляем в него следующую строку:
Set(CDR(userfield)=${CHANNEL(hangupsource)})
Должно получится следующее:
Ещё одной специфической настройкой является разделение каналов клиента и оператора — это необходимо для избежания наложения речи обоих сторон. Формально, файл разговора остаётся по-прежнему один, но в нём присутствуют два канала не наложенные друг на друга. Реализовать этот функционал нам так же поможет диалплан.
Находим в файле /etc/asterisk/extensions_additional.conf ВСЕ(!) контексты и экстены в которых есть применение приложения MixMonitor и переносим, аналогично предыдущему шагу, в файл перезаписи. Далее нам нужно заменить это приложение на Monitor с особыми параметрами. Вот такая строка была бы ДО:
; exten => recordcheck,n,MixMonitor(${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MON_FMT},abi(LOCAL_MIXMON_ID)${MIXMON_BEEP},${MIXMON_POST})
Вот такая должна быть на её месте ПОСЛЕ:
exten => recordcheck,n,Set(MONITOR_EXEC_ARGS=&& /bin/rm -f ${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}-*)
exten => recordcheck,n,Set(MONITOR_EXEC=/usr/bin/sox -M)
exten => recordcheck,n,Monitor(${MIXMON_FORMAT},${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME},m)
exten => recordcheck,n,Dumpchan()
# whereis rm
Использовать стоит всегда актуальный для вашего сервера вариант, иначе удаление не будет работать и не исключено быстрое захламление дискового пространства.
Закрываем файлы с сохранением изменений и перечитываем настройки командой:
# asterisk -rx "dialplan reload"
Теперь если сделать звонок и всё было настроено правильно запись будет писаться в два файла и канала соответственно, после чего утилитой SOX они будут слиты в один файл, а дорожки-источники удалены.
Визуально при этом ничего не изменится: все файлы будут носить те же названия и останутся доступны другим системам для прослушивания и воспроизведения.
Например, внутри модуля FreePBX — CDR Reports.
Однако если взглянуть на записи через редактор, допустим AudaCity мы сразу заметим отличие
Внутри одного файла стереозапись строго разграниченная по каналам. Если её воспроизводить в наушниках из одного будет говорить оператор, из второго клиент.
Настройка веб-сервера
Сразу заметим, что для отдачи файла согласно общим требованиям REST API будет использоваться не непосредственно php или apache, а дополнительный модуль xsend_file. Установить его можно командой:
# yum install mod_xsendfile* -y
Далее перейдём к настройке рабочей директории. Открываем на редактирование файл:
# nano /etc/httpd/conf.d/<distr_name>.conf
И добавляем в его конец следующие строки:
<Directory /var/www/html/sapi>
AllowOverride All
Require all granted
XSendFilePath /var/spool/asterisk/monitor
</Directory>
Здесь мы разрешили доступ всем авторизованным пользователям, переопределение настроек apache локальными файлами .htaccess+.htpasswd, а также задали корневую директорию для модуля передачи файлов.
Сохраняем изменения в файле и перечитываем настройки командой:
# httpd reload
Размещение и настройка API-скриптов
Последним, но не менее важным является размещение скриптов сбора и передачи информации. Их можно написать, как самостоятельно, так и использовать готовые. Главное при наличии разместить их в заранее подготовленной директории.
Первым делом закончим с настройками apache и директории. Для этого ознакомимся с содержимым управляющих файлов .htaccess+.htpasswd. В первом будет примерно следующее:
Здесь мы задали авторизацию при доступе в директорию, запретили вывод файла с данными через браузер и разрешили работу модуля передачи файлов.
Внутри самого файла должны содержаться список логинов и паролей, под которыми разрешено использовать сервис. Сгенерировать их можно на сайте «Web-технологии», или через консоль командой htpasswd. Достаточно заполнить форму и сгенерированные данные перенести в файлы.
Если всё настроено правильно при обращении по ссылке: https://ip_asterisk/sapi/test.php мы должны получить приглашение пройти авторизацию.
Теперь всё что нам осталось выставить настройки в файле конфигурации API. Пойдём максимально простым путём и не будем ничего создавать — всё возьмем имеющееся.
Версию asterisk подсмотрим в консоли
Это один из важных моментов: некоторые события звонка в таблице CEL в версиях до 11 и после отличались, что приводило к проблемам миграции приложений работающий с базой.
Если речь зашла о базе данных — самое время предоставить API к ней доступы. Их можно взять из файла настроек FreePBX.
# nano /etc/freepbx.conf
И последнее: путь к уже не раз упомянутой корневой директории хранения записей.
И для собственной уверенности проведем ряд тестов непосредственно из браузера (предварительно пройдя авторизацию).
1. Получим список номеров и имен операторов, выполнив запрос: https://192.168.170.107/sapi/calls.php?operators
2. Проведём тест настроек и директорий:
https://192.168.170.107/sapi/calls.php?test
Заключение: таким образом мы подготовили Asterisk к работе с сервисом речевой аналитики Speech Analytics. Нам остаётся передать ссылку на API-скрипт специалистам поддержки SA, после чего будет создан личный кабинет и запущена обработка разговоров.
Если возникнут вопросы, комментарии или непосредственная задача проведения интеграции — обращайтесь к нашим специалистам.
Остались вопросы?
Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.
Добрый день. А где взять готовый скрипты для интеграции? В частоности меня интересует freepbx