Oktell
Glossary Item Box
Общие положения
Интеграция Oktell с bpm'online реализована на клиентском уровне с помощью библиотеки oktell.js. Исходный код библиотеки oktell.js находится в конфигурационной схеме OktellModule пакета CTIBase.
Сервер Oktell взаимодействует с телефонами и с конечными клиентами (браузерами). При таком способе интеграции у bpm'online не требуется наличие собственного WebSocket-сервера. Каждый клиент подключается по WebSocket-протоколу непосредственно к серверу Oktell. Сервер приложения bpm'online занимается формированием страниц и предоставлением данных из базы данных приложения. Непосредственная взаимосвязь между серверами bpm'online и Oktell отсутствует, доступ не требуется, клиенты самостоятельно обрабатывают и объединяют данные двух систем. По такому принципу реализованы Web-клиент Oktell и плагин oktell.js, доступный для встраивания в другие проекты (рис. 1).
Рис. 1. — Схема интеграции Oktell c bpm'online
Oktell.js
Oktell.js — javascript-библиотека для встраивания функциональности управления звонками в CRM-систему. Oktell.js использует протокол Oktell WebSocket для соединения с сервером Oktell. Преимущество этого протокола заключается в создании постоянного асинхронного соединения с сервером, которое позволяет без задержек получать события с сервера Oktell и выполнять определенные команды. Поскольку протокол Oktell WebSocket достаточно сложен для реализации, библиотека Oktell.js оборачивает внутри себя методы WebSocket-протокола, предоставляя простую функциональность для управления.
Передача голоса между абонентами
Голос при разговоре между операторами oktell bpm'online передается по протоколу Session Initiation Protocol (SIP). Для этого требуется использование либо IP-телефона, либо установленного на компьютер оператора софтфона (рис. 1).
Взаимодействие компонентов
Взаимодействие с библиотекой oktell.js осуществляется с помощью класса OktellCtiProvider, который является связующим звеном между CtiModel и OktellModule, в котором находится код oktell.js. Класс OktellCtiProvider реализует интерфейс класса BaseCtiProvider (рис. 2).
Рис. 2. Схема взаимодействия компонентов при интеграции Oktell с bpm'online
Примеры взаимодействия CtiModel, OktellCtiProvider и OktlellModule показаны на рис. 3 и рис. 4.
Рис. 3. — Исходящий звонок оператора абоненту с установкой звонка на удержание абонентом, снятием с удержания абонентом и завершением звонка оператором
Рис. 4. Входящий звонок абонента 1 оператору с консультационным звонком абоненту 2, с последующим соединением оператором абонента 1 и абонента 2
Список поддерживаемых событий класса библиотеки oktell.js перечислен в таблице 1.
Табл. 1. Список поддерживаемых событий класса библиотеки oktell.js
Событие | Описание |
---|---|
connect | Событие успешного соединения с сервером |
connectError | Событие ошибки соединения с сервером в методе connect. Коды ошибок такие же, как для callback-функции метода connect |
disconnect | Событие закрытия соединения с сервером. В callback-функцию передается объект с описанием причины разрыва соединения |
statusChange | Событие изменения состояния агента. В callback-функцию передается два строковых параметра — новое и прошлое состояние |
ringStart | Событие начала входящего вызова |
ringStop | Событие завершения входящего вызова |
backRingStart | Событие начала обратного вызова |
backRingStop | Событие завершения обратного вызова |
callStart | Событие начала исходящего вызова |
callStop | Событие смены UUID звонка |
talkStart | Событие начала разговора |
talkStop | Событие окончания разговора |
holdAbonentLeave | Событие выхода абонента из удержания. В callback-функцию передается объект abonent с информацией по абоненту |
holdAbonentEnter | Событие входа абонента в удержание. В callback-функцию передается объект abonent с информацией по абоненту |
holdStateChange | Событие изменения состояния удержания. В callback-функцию передается информация по удержанию |
stateChange | Событие изменения состояния линии |
abonentsChange | Событие изменения списка текущих абонентов |
flashstatechanged | Низкоуровневое событие изменения состояния удержания |
userstatechanged | Низкоуровневое событие изменения состояния пользователя |