Назначение интеграции с телефонией — управление звонками из интерфейса приложения. Creatio позволяет настроить интеграцию с автоматическими (АТС) и офисными (Private Branch Exchange, PBX) телефонными станциями. Об АТС читайте в Википедии. О PBX читайте в Википедии.
Инструменты, которые предоставляет Creatio для управления звонками:
- Коммуникационная панель.
- Раздел Звонки (Calls).
Действия, которые позволяет выполнять коммуникационная панель:
- Отображает входящий звонок пользователю приложения. При этом используется поиск контакта/контрагента по номеру звонящего.
- Выполняет звонок из приложения в один клик.
- Управляет звонком (ответить, поставить/снять с удержания, завершить, перевести) в Creatio.
- Отображает историю звонков для удобного управления связями звонков или возможностью перезвонить.
Независимо от выбранной для интеграции телефонии, интерфейс коммуникационной панели не отличается.
Действия, которые позволяет выполнять раздел Звонки (Calls):
- Сохраняет входящие и исходящие звонки.
- Отображает временные характеристики (дата начала, дата завершения, длительность разговора) звонка.
- Отображает связанный контакт/контрагент.
Чтобы использовать функциональность телефонии, выполните настройку интеграции с соответствующим коннектором телефонии. Для этого воспользуйтесь одной из инструкций, которая приведена в блоке статей Коннекторы к телефонии.
Возможности АТС описаны в статье Сравнение возможностей интеграции с различными АТС. По умолчанию в приложении настроена интеграция с сервисом телефонии Webitel.
Типы интеграции с телефонией
Типы интеграции с телефонией, которые поддерживает Creatio:
- first-party — интеграция с телефонией реализована на front-end стороне приложения.
- third-party — интеграция с телефонией реализована на back-end стороне приложения.
first-party интеграция
Тип интеграции first-party используется для коннекторов Webitel и Finesse. Для интеграции с коннектором Webitel используется протокол WebSocket. О протоколе WebSocket читайте в Википедии. Для коннектора Finesse используются long-polling http-запросы. О long-polling http-запросах читайте в официальной документации PubHub.
first-party интеграция подразумевает создание отдельного интеграционного подключения к серверу телефонии для каждого пользователя (т. е. путем использования интеграционной библиотеки коммуникационная панель из браузера напрямую выполняет подключение к API сервера телефонии). В этом подключении выполняется обработка событий АТС. При first-party интеграции Creatio из браузера интегрируется с JavaScript-адаптером.
Виды взаимодействия при first-party интеграции:
- Cтраница Creatio взаимодействует с сервером приложения по протоколу HTTP(S) для авторизации.
- Страница Creatio, которая содержит элементы телефонии, взаимодействует с клиентской JavaScript-библиотекой, которая, как правило, предоставляется производителем АТС, путем отправки событий и принятия JavaScript-команд.
- Клиентская JavaScript-библиотека взаимодействует с АТС через API АТС.
При входящем звонке сервер телефонии передает событие начала нового звонка и его параметры через WebSocket в библиотеку клиентской интеграции. В ответ на отправленное событие библиотека генерирует событие RingStarted, которое передается на страницу приложения.
При исходящем звонке front-end часть приложения генерирует команду начала звонка, которая по WebSocket передается на сервер телефонии.
third-party интеграция
Тип интеграции third-party используется для коннекторов API-телефонии (Asterisk, Avaya, Callway, Ctios, Infinity, Infra, Tapi).
third-party интеграция подразумевает создание одного подключения к серверу телефонии для всех пользователей. В этом подключении выполняется обработка событий АТС. Для распределения информационных потоков разных пользователей используется Creatio Messaging Service (CMS). Creatio Messaging Service (CMS) — Windows proxy-служба, которая является универсальным хостером библиотек интеграции с АТС. Позволяет взаимодействовать с АТС путем использования библиотеки-адаптера производителя АТС. Все события телефонии проходят через CMS. При получении клиентских подключений CMS автоматически подключает используемую Creatio библиотеку и инициирует подключение к АТС. Фактически, CMS является функциональной оберткой для коннекторов телефонии, которые не поддерживают first-party интеграцию. Это позволяет из браузера взаимодействовать с функциональностью телефонии в браузере путем генерации и обработки событий, а также передачи данных.
Виды взаимодействия при third-party интеграции:
- Cтраница Creatio взаимодействует с сервером приложения по протоколу HTTP(S) для авторизации.
- CMS взаимодействует с сервером приложения по протоколу HTTP(S) для отправки запроса сохранения информации о звонке в базе данных.
- CMS взаимодействует с браузером по протоколу WebSocket. CMS передает браузеру события (начало звонка, завершение звонка, изменение статуса оператора и т. д.) телефонии. Браузер передает CMS команды управления (выполнение звонка, постановка звонка на удержание, завершение звонка, изменение статуса оператора и т. д.) звонком.
- Библиотека-адаптер взаимодействует с АТС через API АТС.
При входящем звонке сервер телефонии передает событие начала нового звонка и его параметры через библиотеку-адаптер на хост с CMS. В ответ на отправленное событие CMS генерирует событие RingStarted, которое передается на страницу приложения.
При исходящем звонке front-end часть приложения генерирует команду начала звонка, которая по WebSocket передается в CMS. В ответ на отправленную команду CMS генерирует событие исходящего звонка для АТС.
Реализация взаимодействия коннекторов с Creatio
Все коннекторы взаимодействуют с конфигурацией приложения через класс Terrasoft.integration.telephony.CtiModel, который получает события от коннектора и обрабатывает их.
Класс CtiModel описан в Библиотеке JS-классов.
Класс CtiModel предназначен для взаимодействия коннекторов телефонии с конфигурацией приложения. Класс получает события от коннекторов к телефонии и обрабатывает их. Класс CtiModel описан в Библиотеке JS-классов.
Свойства
Провайдер интеграции с телефонией.
Активные вызовы по телефонной линии.
Количество попыток повторного подключения.
Максимальное количество попыток повторного подключения.
Идентификатор таймера переподключения.
Колонки.
{Number} LineFeatures | Набор доступных операций линий. |
{Terrasoft.Telephony.Call} CurrentCall | Базовый вызов модели. |
{Terrasoft.Telephony.Call} LastCall | Последний базовый вызов модели. |
{String} CurrentCallNumber | Номер абонента основного вызова. |
{String} ConsultCallNumber | Телефон консультанта. |
{String} AgentState | Код состояния оператора. |
{String} AgentStateReason | Код причины состояния оператора. |
{Boolean} IsConnected | Признак, который указывает активное подключение к интеграции с телефонией. |
{Boolean} IsConsulting | Признак, который указывает статус консультационного вызова. |
{Boolean} IsCallCentreActive | Признак, который указывает, что оператор находится в режиме Call-центра. |
Методы
Создает объект линейной модели.
Инициализирует объект модели.
{String} config | Конфигурационный объект. |
Инициализирует соединение.
{Object} config | Массив параметров соединения. |
{Function} callback | Флаг успешного выполнения функции объекта и ошибки в случае сбоя. |
Совершает звонок на указанный номер.
{String} targetAddress | Номер телефона. |
Отвечает на текущий вызов.
Завершает текущий вызов.
Поставляет текущий вызов на удержание или снимает его с удержания.
Выполняет консультационный звонок по указанному номеру.
{String} targetAddress | Номер телефона. |
Завершает передачу текущего вызова.
Отменяет передачу текущего вызова.
Безусловно переводит звонок.
{String} targetAddress | Номер телефона. |
Отправляет текущий сигнал Dtmf.
{String} digit | Сигнал Dtmf. |
Отключает звук текущего вызова.
Обновляет флаги состояний линии.
Запрашивает состояние агента.
Устанавливает состояние агента.
{String} code | Код состояния. |
{String} reason | Причина изменения состояния. |
{Object} callback | Функция обратного вызова. |
Получает возможность выполнить вызов в текущем состоянии линии.
Получает возможность ответить на звонок.
Получает возможность поставить на удержание или убрать с удержания основной звонок.
Получает возможность поставить основной вызов на удержание.
Получает возможность отключить звук вызова.
Получает возможность снять основной вызов с удержания.
Получает возможность завершить вызов.
Получает возможность начать подготовку к переводу вызова.
Получает возможность сделать консультационный звонок.
Получает возможность завершить перевод вызова.
Получает возможность отменить перевод вызова.
Получает возможность безусловного перевода вызова.
Получает возможность сделать консультационный звонок или слепой перевод.
Получает возможность отправить сигнал Dtmf.
Получает возможность получить записи звонков.
Получает номер последнего абонента.
События
Срабатывает при переводе звонка в состояние "Занят" (только телефония TAPI).
Срабатывает после завершения звонка.
Срабатывает после создания или обновления звонка в базе данных.
Срабатывает при начале нового вызова.
Срабатывает после установки соединения звонка.
Срабатывает при установке соединения с производителем телефонии.
Срабатывает после уничтожения экземпляра объекта.
Срабатывает при отключении провайдера.
Срабатывает, если в линию были отправлены сигналы Dtmf.
Срабатывает после постановки звонка на удержание.
Срабатывает после снятия звонка с удержания.
Срабатывает при завершении webRtc-сессии.
Срабатывает при старте webRtc-сессии.
Срабатывает при старте видеопотока webRtc-сессии.
Срабатывает при завершении инициализации провайдера.
Срабатывает при возникновении ошибки.
Срабатывает после изменения набора доступных операций линии или звонка.
Срабатывает после изменения состояния агента.
Срабатывает при актуализации перечня активных звонков.
Обобщенное событие в провайдере. Срабатывает при любом событии провайдера.
Срабатывает при изменении основного звонка. Например, завершается основной звонок при консультации.
Срабатывает при входе или выходе оператора из режима Call-центр.
Срабатывает при изменении данных звонка по идентификатору в базе данных.