Интеграция с телефонией Webitel относится к first-party типу. Подробнее о типах интеграции с телефонией, которые поддерживает Creatio, читайте в статье Механизм интеграции с телефонией. Ознакомиться с Webitel можно на официальном сайте Webitel.
Чтобы настроить интеграцию с Webitel, воспользуйтесь инструкцией, которая приведена в статье Настроить интеграцию с телефонией Webitel.
Пакеты механизма интеграции с Webitel
Пакеты, которые реализуют логику работы механизма интеграции с Webitel:
- WebitelCore — модули пакета содержат низкоуровневую реализацию взаимодействия с Webitel с использованием модуля Verto, а также коммуникационной панели страницы приложения Creatio.
-
WebitelCollaborations — реализация базовых интерфейсов для работы с Webitel в Creatio.
Составляющие пакета WebitelCollaborations:
- WebitelCtiProvider — клиентский модуль, который реализует класс WebitelCtiProvider.
- Коннектор к Webitel.
- Страница настройки параметров подключения.
- Cправочник для редактирования пользователей Webitel непосредственно в приложении.
- Привязки данных, которые необходимы для работы интеграции.
Архитектура платформы Webitel описана в официальной документации Webitel.
Реализация взаимодействия коннектора Webitel с Creatio
Взаимодействие между классом Terrasoft.integration.telephony.CtiModel и клиентским модулем WebitelModule выполняется через класс Terrasoft.integration.telephony.webitel.WebitelCtiProvider, который реализует интерфейс класса Terrasoft.integration.telephony.BaseCtiProvider.
Класс CtiModel описан в Библиотеке JS-классов. Класс BaseCtiProvider описан в Библиотеке JS-классов.
Логика работы интеграции с Webitel:
- Клиентский модуль CtiProviderInitializer пакета CTIBase загружает клиентский модуль WebitelCtiProvider пакета WebitelCollaborations.
- Клиентский модуль WebitelCtiProvider вызывает метод init(), который выполняет авторизацию пользователя в сессии телефонии (метод LogInMsgServer() сервиса MsgUtilService.svc).
- Проверяет состояние авторизации пользователя в сессии телефонии. При успешной авторизации вызывает метод connect(), который проверяет наличие подключения (для свойства this.isConnected установлено значение false и this.webitel — пустое).
- Метод connect() запрашивает настройки подключения к Webitel, которые хранятся в системных настройках Строка подключения к Webitel (Webitel connection string, код webitelConnectionString) и Строка подключения к webRTC (webRTC connection string, код webitelWebrtcConnectionString).
- Метод GetUserConnection клиентского сервиса WUserConnectionService получает настройки пользователя из справочника Пользователи Webitel (Webitel users).
- При установленном на странице настройки параметров Webitel признаке Использовать Web-телефон (Use web phone) загружаются модули WebitelModule и WebitelVerto.
- Вызывается метод onConnected(). В этом методе создается глобальный объект Webitel свойства которого заполняются настройками подключения.
- Выполняется подписка на события объекта Webitel.
- Вызывается метод connect(). Этот метод выполняет подключение по WebSocket, авторизацию в Webitel и остальные низкоуровневые операции по подключению.
При возникновении события onConnect подключение считается успешным. После этого у пользователя появляется возможность работать со звонками.
Действия, которые выполняет клиентский модуль WebitelCtiProvider в процессе работы коннектора:
- Обрабатывает события объекта Webitel.
- При необходимости генерирует события коннектора, которые описаны в классе BaseCtiProvider.
Для управления звонками клиентский модуль WebitelCtiProvider реализует абстрактные методы класса BaseCtiProvider, используя методы объекта Webitel.
Ниже приведена диаграмма последовательности исходящего звонка.
Условия исходящего звонка:
- Оператор выполняет звонок абоненту.
- Абонент устанавливает звонок на удержание и снимает его с удержания.
- Оператор завершает звонок.
Порты, которые используются для подключения телефонии Webitel:
- 871 — WebSocket-порт для подключения к Webitel-серверу и получения событий.
- 5060 и 5080 — сигнальные порты для подключения SIP-телефонов и провайдеров телефонии.
- 5066 — порт для подключения Web-телефона, сигнальный порт WebRTC.
- 4004 — порт для получения записей разговоров.
Класс Terrasoft.integration.telephony.webitel.WebitelCtiProvider предназначен для взаимодействия коннектора телефонии Webitel с конфигурацией приложения. Получает события от коннектора к телефонии и обрабатывает их. Реализован в схеме WebitelCtiProvider клиентского модуля пакета WebitelCollaborations.
Методы
Инициализирует соединение.
Запрашивает записи телефонных разговоров.
{String} callId | Идентификатор абонента. |
{Function} callback | Функция обратного вызова. |
Совершает исходящий вызов.
{String} number | Номер телефона. |
Отвечает на звонок.
{Terrasoft.Telephony.Call} call | Звонок. |
Завершает текущий вызов.
{Terrasoft.Telephony.Call} call | Звонок. |
Выполняет консультационный звонок по указанному номеру.
{Terrasoft.Telephony.Call} call | Звонок. |
{String} targetAddress | Номер телефона. |
Отменяет передачу текущего вызова.
{Terrasoft.Telephony.Call} currentCall | Текущий звонок. |
{Terrasoft.Telephony.Call} consultCall | Консультационный звонок. |
Завершает передачу текущего вызова.
{Terrasoft.Telephony.Call} currentCall | Текущий звонок. |
{Terrasoft.Telephony.Call} consultCall | Консультационный звонок. |
Поставляет текущий вызов на удержание или снимает его с удержания.
{Terrasoft.Telephony.Call} call | Звонок. |
Безусловно переводит звонок.
{Terrasoft.Telephony.Call} call | Звонок для перевода. |
{String} targetAddress | Номер телефона. |
Обновляет флаги состояний линии.
Запрашивает коллекцию активных вызовов.
Устанавливает состояние оператора.
{String} code | Код состояния. |
{String} reason | Причина изменения состояния оператора. Опциональный параметр. |
{Object} callback | Функция обратного вызова. Опциональный параметр. |
{Boolean} disableReconnect | Не выполняет попытку повторной авторизации. Опциональный параметр. |
Запрашивает состояние агента.
Изменяет состояние пользователя в Call-центре.
Получает перечень доступных операций провайдера.
Отправляет текущий сигнал Dtmf.
{Terrasoft.Telephony.Call} call | Звонок. |
{String} digit | Сигнал Dtmf. |
Устанавливает состояние использование видео в процессе звонка.
{Terrasoft.Telephony.Call} call | Звонок. |
{Boolean} isVideoActive | Указывает на использование видео в процессе звонка. |
{Function} callback | Функция обратного вызова. |
Закрывает соединение.
События
Срабатывает при начале нового звонка.
Срабатывает при поднятии трубки.
Срабатывает при удержании звонка.
Срабатывает при снятии звонка с удержания.
Срабатывает при возникновении события тонового набора.
Срабатывает при соединении с каналом.
Срабатывает при изменении UUID звонка.
Срабатывает при завершении звонка.
Срабатывает при возникновении события новой webRtc-сессии.