Назначение интеграции с телефонией — управление звонками из интерфейса приложения. 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-классов.