Asterisk: Общие сведения о настройке интеграции
Last updated
Was this helpful?
Last updated
Was this helpful?
Asterisk очень доступный инструмент для создания компьютерной телефонии внутри компании. Вместе с этим у Asterisk'a нет одного способа поставки и способа использования, поэтому настройка интеграции конкретной установки Asterisk должна производиться ответственным сотрудником компании.
Получить от Qolio доступ к аккаунту админа в вашем кабинете.
Для начала со стороны телефонии нужно определить следующие вещи:
где будут храниться записи звонков и как к этим записям можно получить доступ по http(s). В системе есть возможность настроить доступ через S3 совместимое облачное хранилище и настроить доступ к хранилищу с basic http авторизацией.
по какому атрибуту будет привязываться звонок к оператору внутри Qolio. Для этой привязки используется поле operator_id в API запросе
Добавить пользователей, по которым будут приходить звонки в Qolio (если этого не сделать, звонки, переданные по API сохраняться не будут). Пользователь добавляет админ телефонии либо другой сотрудник компании.
Настроив пользователей вручную () или загрузив их через CSV файл (подробнее ) в настройках API интеграции
Создавать и настраивать пользователей через API (, кроме этого в этой статье описано, как с помощью python скрипта настраивать пользователей через CSV файл)
Для импорта звонков пользователи должны быть загружены в систему DealApp, а так же быть активными и назначенными на отдел.
Далее следует настроить структуру компании и распределить пользователей по отделам. В дальнейшем звонки будут добавляться к тем отделам, в которых состоят пользователи.
Разработать расширение для телефонии, которая будет передавать через http запросы на DealApp API информацию о совершенных звонках на телефонии. Информацию про API запросы, которые нужно делать для импорта звонков телефонии. Так же можно попробовать делать запросы со страницы настройки интеграции. Далее в этой статье описан пример создания скрипта для синхронизации данных.
Для последующей эксплуатации необходимо продумать, как будут обновляться пользователи, какие роли будут в системе, как они будут взаимодействовать и так далее. На этом моменте технические задачи заканчиваются.
Qolio необходимо принимать следующие данные о звонках:
ID оператора в системе (operator_id) - это идентификатор оператора в системе, с которым связан звонок.
Длительность (duration) и направление звонка (direction)
Номер звонящего клиента (client_phone_number)
URL Ссылку на запись разговора (media_url), по которой можно получить доступ к записи разговора. Эта ссылка будет передаваться в плеер сервиса Qolio.
Также есть возможность расширить набор этих данных через поле metacontent (custom_fields). Подробности можете прочитать в статье про Custom HTTP интеграцию.
В данной статье приводится пример работы, которую можно выполнить, чтобы подключить Asterisk к DealApp
Самым популярным способом интеграции Asterisk с Qolio является следующий сценарий:
создается systemd сервис, который запускается периодически каждые пол часа как cron job
этот сервис запускает скрипт, который подключается к базе данных и вытаскивает данные о звонках за последнее время
далее скрипт преобразовывает данные из базы данных в необходимый JSON формат и отправляет их в Qolio
Далее будет приведен примеры сервисов, которые были созданы на основе Red Hat Linux (Linux ats 3.10.0) с Asterisk 13.32.0, Python 2.7.5 и Mysql 5.5 (Ver 15.1 Distrib 5.5.65-MariaDB). Python был выбран как скриптовой язык из-за того, что он с большой вероятностью будет находиться в дистрибутиве с Asterisk.
Чаще всего записи телефонных звонков доступны через сетевое хранилище и телефонный разговор в нем можно найти по названию файла, которое храниться в базе CDR.
Первым делом подготовим папку и необходимые пакеты для работы скрипта:
В папке /etc/dealapp-sync
будет храниться все данные о синхронизации, в том числе и файлик со временем последней синхронизации.
Нам необходимо так же установить pip пакет mysql-connector-python
для работы с mysql базы данных и requests
для того, чтобы делать http запросы в DealApp сервис.
Далее рассмотрим сам скрипт для синхронизации. Данный скрипт является примером и в конкретном случае его скорее всего придется изменять.
В этом скрипте есть следующие константы:
Константы
INTEGRATION_URL
Значение AUTHORIZATION_TOKEN берется из модального диалога интеграции (Токен интеграции)
AUTHORIZATION_TOKEN
Значение INTEGRATION_URL берется из модального диалога интеграции (URL интегрируемого приложения)
RECORDS_STORAGE_BASE_URL
Адрес сетевого хранилища записей. В этом виде может выступать адрес S3 bucket или ссылка nginx сервер, который раздает звонки
DEFAULT_CONFIG_PATH
Адрес на файл со временем последней синхронизации
INTERNAL_NUMBER_MATCHER
С помощью этого регулярного выражения проверяется являться данный телефонный разговор внутренним или нет
CDR_DATABASE_NAME
Название базы данных CDR, которое необходимо для подключения к этой базе. В общем случае это значение можно найти в файле /etc/asterisk/cdr_adaptive_odbc.conf
PhoneCall класс используется для того, чтобы принимать данные из базы данных и сериализовать их в значения, которые ожидает получить Qolio.
is_valid
Позволяет определить стоит ли экспортировать этот телефонный звонок (например, если звонок не состоялся или состоялся между внутренними номерами)
is_incoming
Определяет, является ли телефонный звонок входящим
direction
Возвращает значения "incoming" или "outcoming" в зависимости от направления разговора
duration
Длительность разговора в секундах. Обратите внимание, что здесь мы берем значение из поля billsec в базе данных, так как оно отображает реальную длительность разговора между оператором и клиентом без времени ожидания.
operator_id
Идентификатор оператора в системе. В нашем случае это значение его внутреннего номера, это значение должно быть настроено в системе DealApp.
client_phone_number
Телефонный номер клиента, с которым происходил разговор
started_at
Время разговора в ISO8601 формате
media_url
Ссылка на запись разговора, которая будет использоваться в плеере внутри DealApp. В нашем случае ссылка формируется из адреса хранилища данных, данных о дате звонка и названия записи
Описаний функций скрипта
get_last_export_timestamp
Получает время последней синхронизации с DealApp. Далее это время используется, чтобы доставать информацию о звонках из базы CDR
save_last_export_timestamp
Записывает время последней успешной синхронизации с DealApp в файл
read_phone_calls_from_database
Делает запрос в базу данных на получение записей после определенного времени и оборачивает результат в объекты типа PhoneCall
send_phone_calls_to_dealapp
Принимает список телефонных звонков, преобразует их в JSON и отправляет на сервис DealApp
Сервис для вызова скрипта будет выглядеть следующим образом:
Сервис для периодического вызова скрипта для синхронизации будет выглядеть так:
Затем создадим скрипты для systemd сервиса и таймера
Для успешной работы Qolio должен принимать данные о телефонных звонках через API по http(s). Для упрощения работы используется "Custom HTTP интеграция", подробности о которой можно почитать тут: