|
|
(не показано 30 промежуточных версии 2 участников) |
Строка 1: |
Строка 1: |
− | ИСХОДНЫЕ ДАННЫЕ:
| + | #REDIRECT [[Oktell Web-Socket Protocol]] |
− | | + | |
− | 1. Есть web-система, которыая на рабочем месте сотрудника используется через браузер.
| + | |
− | 2. Есть телефонная система, к которой подключен телефон, находящийся на рабочем месте сотрудника.
| + | |
− | | + | |
− | ЗАДАЧА
| + | |
− | | + | |
− | Объединить две системы функционально.
| + | |
− | | + | |
− | | + | |
− | КРАТКОЕ ОПИСАНИЕ ВОЗМОЖНОСТЕЙ ТЕЛЕФОНИИ ОКТЕЛ
| + | |
− | | + | |
− | Стандартный функционал октелла предоставляет пользователям
| + | |
− | доступ к управлению телефонами (позвонить, переключить, отклонить звонок, организовать конференцию, пригласить других участников в конференцию, подключиться к разговору в режиме прослушивания, помощи и т.д.).
| + | |
− | доступ к управлению состояниями пользователей (перерыв - чтобы поток входящих звонков не поступал, занят - чтобы отметить факт обработки звонка, переадресация - чтобы все звонки на пользователя перенаправлялись в соответствии с настроенными правилами, готов - чтобы вернуться к обычному режиму).
| + | |
− | информацию о текущем состоянии телефонов, внутренних номеров, пользователей с т.з. занятости в операциях телефонии.
| + | |
− | информацию о поступающем звонке, абоненте
| + | |
− | доступ к статистике разговоров (по правам).
| + | |
− | доступ к записям разговоров (по правам).
| + | |
− | доступ к информации об ожидающей очереди абонентов в реальном времени.
| + | |
− | доступ к управлению режимом переадресации.
| + | |
− | и т.д.
| + | |
− | | + | |
− | Помимо этого в рамках настройки сценариев октелла появляется возможность
| + | |
− | отправлять синхронные и асинхронные запросы в веб-систему (фактически исполнять методы по событиям в октелле)и получать ответы и применять их в рамках проведения маршрутизации или любых других действий, реализуемых в сценариях.
| + | |
− | | + | |
− | Например, выяснить, какому клиенту/контакту принадлежит определившийся номер телефона или введенный им вручную с помощью DTMF-набора номер договора, отфильтровать по черному списку, переключить вызов на ответственного за работу с этим контактом пользователя, если пользователя нет в системе - переключить на секретаря, а если контакт новый - соединить с отделом продаж. Если ответственный пользователь занят, предложить оставить голосовое сообщение для VIP клиентов.
| + | |
− | В момент поступления звонка открыть карточку у пользователя, которому звонок поступает. Закрыть ее автоматически, если пользователь так и не снял трубку (а снял кто-то другой, или звонок потерялся). Или выполнить какое-то важное с т.з. веб-системы действие в случае, если пользователь оставил заказ на встречный звонок, например.
| + | |
− | | + | |
− | Именно сценарии придают жизнь и востребованность октеллу и его сервисов
| + | |
− | | + | |
− | Среди событий октелла, отрабатываемых в сценариях
| + | |
− | поступление внешнего звонка.
| + | |
− | завершение звонка.
| + | |
− | переключение абонента на пользователя, группу пользователей, задачу коллцентра.
| + | |
− | любое из интересующих явлений в ходе обработки звонка (от преобразования номера абонента в нужный формат и сверки времени поступления звонка до обработки контента звонка после завершения и выявления там факта состоявшейся конференции).
| + | |
− | наступление определенного времени.
| + | |
− | периодический запуск по таймеру.
| + | |
− | поступление/отправка e-mail.
| + | |
− | поступление/отправка sms/icq/jabber.
| + | |
− | контрольные события коллцентра (оператор первым положил трубку, оператор слишком долго находится в перерыве или поствызывной обработке, число операторов в задаче меньше минимально допустимого, число абонентов в очереди задачи больше допустимого и т.д.)
| + | |
− | ручной запуск сценария по инициативе пользователя или веб-системы.
| + | |
− | исходящий звонок от пользователя
| + | |
− | поступление голосовой почты
| + | |
− | появление где-то в базе данных интересующего события (например появление новой записи в таблице абонентов)
| + | |
− | появление где-то на веб-ресурсе интересующего события (например температура на улице опустилась ниже нуля)
| + | |
− | и т.д.
| + | |
− | | + | |
− | | + | |
− | '''ПРЕДЛАГАЕМАЯ СХЕМА ИНТЕГРАЦИИ'''
| + | |
− | | + | |
− | | + | |
− | | + | |
− | рис.1
| + | |
− | | + | |
− | | + | |
− | Сервер октелл взаимодействует с телефонами и с веб-сервером CRM.
| + | |
− | Веб-сервер CRM взаимодействует ответно с сервером Октелл и с браузерами.
| + | |
− | | + | |
− | Первая проблема, предшествующая проведению обмену функционалом - сопоставление конкретных пользователей с конкретными телефонными устройствами. Почему это проблема: элементы управления устройством находятся в браузере, а влияют они на поведение конкретного телефона. Например, простейшая задача перевода звонка из браузера на врача Михайлова. Звонок должен поступить на телефон, находящийся в кабинете 103, за компьютером в котором сейчас сидит Михайлов (в браузере открыта веб-система и авторизован Михайлов)
| + | |
− | | + | |
− | Пользователи могут работать
| + | |
− | - стационарно каждый за своим компьютером.
| + | |
− | - перемещаться с одного рабочего место за другое.
| + | |
− | - работать посменно за одним рабочим местом.
| + | |
− | (Рабочее место = компьютер + телефон)
| + | |
− | | + | |
− | Необходимо в каждый момент времени знать, около какого телефона какой пользователь сидит.
| + | |
− | | + | |
− | '''Существуют два подхода к решению.'''
| + | |
− | | + | |
− | 1. Жесткая привязка пользователя к телефонной учетной записи.
| + | |
− | | + | |
− | +: При взаимодействии октелла и веб-системы используются одни и те же идентификаторы (например логины пользователей), соответственно отсутствует проблема привязки как таковая.
| + | |
− | | + | |
− | -: Пользователь вынужден перемещаться с одного компьютера на другой вместе со своим телефоном, или переназначая учетную запись в телефонном аппарате.
| + | |
− | | + | |
− | | + | |
− | 2. Телефон привязывается к компьютеру, а в момент логина пользователя сопоставление производится через этот компьютер.
| + | |
− | | + | |
− | +: Кто бы ни залогинился с этого компьютера, приобретает управление телефоном, все звонки пользователю попадают на этот телефон.
| + | |
− | | + | |
− | -: Требует указания одного из постоянных идентификаторов компьютера в октелле, а также передачи его из веб-системы в момент логина для привязки. Это может быть айпи адрес, хостнейм или любой другой постоянный идентификатор.
| + | |
− | | + | |
− | Логин в октелл нужен для приведения состояния пользователя в готовность. Без этого звонки на пользователя не поступают, а обрабатываются как и в случае, когда он недоступен. Логофф - обратная операция. В ходе взаимодействия пользователю доступны команды управления своим состоянием. Он может отлучиться, выставить перерыв, переадресацию, занятость и т.д. Все это нужно для того, чтобы изменить направление маршрутизации звонков и режим работы коллцентра.
| + | |
− | | + | |
− | ''Ограничение: Октелл не позволяет пользователям логиниться с разных рабочих мест одновременно. Делается это для того, чтобы каждому пользователю соответствовало не более одного телефона.''
| + | |
− | | + | |
− | рис.4
| + | |
− | | + | |
− | Все взаимодействие между октеллом и веб системой идет по общему каналу путем обмена сообщениями.
| + | |
− | В каждом из сообщений должен присутствовать идентификатор, позволяющий различать одинаковые, но направляемые от разных пользователей команды из веб-системы в октелл и наоборот соответственно.
| + | |
− | В качестве идентификатора в зависимости от реализуемой схемы привязки могут выступать пользователь (например его логин) или рабочее место (его постоянный идентификатор).
| + | |
− | | + | |
− | Октелл генерирует события.
| + | |
− | Октелл производит запросы к веб-системе.
| + | |
− | Веб-система отправляет ответы на получаемые запросы.
| + | |
− | | + | |
− | Веб-система производит запросы к октеллу. В том числе и команды.
| + | |
− | Октелл отправляет ответы на запросы.
| + | |
− | | + | |
− | Взаимодействие на транспортном уровне может происходить по websocket, http, udp.
| + | |
− | Формат представления сообщений json или xml.
| + | |
− | Формат самих сообщений определяется непосредственно протоколом интеграции. Например вот так выглядит сообщение из октелла в веб-систему о факте входящего вызова в формате json:
| + | |
− | | + | |
− | рис.5
| + | |
− | | + | |
− | Для исполнения динамических методов в веб-срм по событиям в октелле существует запрос, в ответ на который веб-система перечисляет список действий, инициативу исполнения которых она готова отдать наружу в октелл. При описании метода упоминаются
| + | |
− | человеческое название,
| + | |
− | краткий код метода,
| + | |
− | описание для администратора, настраивающего октелл,
| + | |
− | список входных параметров с упоминанием типов (и возможных значений для перечислений),
| + | |
− | список выходных параметров, если метод возвращает данные и призван влиять на алгоритм сценария в октелле,
| + | |
− | признак того, нужно ли исполнять метод с привязкой к конкретному пользователю, или это обращение к серверу вообще,
| + | |
− | разрешено ли отменять исполнение (например для метода «открыть карточку такую-то» возможна отмена, означающая «закрыть карточку такую-то»),
| + | |
− | куда октеллу гнать запрос - через сокет (стандартный для взаимодействия канал) или по http на альтернативный url веб-сервера.
| + | |
− | | + | |
− | | + | |
− | Соответственно, когда настраивается сценарий в октелле, администратором определяется одно или несколько из доступных действий, определяется момент исполнения, определяются входные параметры или способ их вычисления, а также режим ожидания или асинхронного выполнения.
| + | |
− | В рантайм октеллом отправляется команда на исполнение в соответствии с определенными админом настройками. Если метод призван исполняться синхронно и возвращать некие значения, то сценарий приостанавливается, а после получения ответа сохраняет результаты в переменных сценария и продолжает выполнение.
| + | |
− | | + | |
− | | + | |
− | '''WEB-SOCKET ПРОТОКОЛ'''
| + | |
− | | + | |
− | Между октеллом и веб-сервером CRM-системы существует один канал для обмена сообщениями. Все сообщения имеют идентификаторы для организации серий типа “запрос-ответ”.
| + | |
− | Сообщения могут адресоваться конкретному пользователю или относиться к общим. В первом случае указывается идентификатор/логин пользователя. Касается обоих направлений пересылки.
| + | |
− | | + | |
− | Установка соединения может производиться как октеллом, так и веб-сервером CRM-системы. В случае разрыва соединения сторона-инициатор вновь организует подключение.
| + | |
− | Рукопожатие на установление web-socket соединения предлагается также стороной-инициатором. Подробнее http://ru.wikipedia.org/wiki/WebSocket.
| + | |
− | | + | |
− | Каждое сообщение представляет из себя строку XML или JSON в кодировке UTF8. Сообщения в общем потоке данных в канале отделяются друг от друга байтами 0 и 255. 0 - в начале сообщений, 255 в конце. Форматы XML и JSON представления данных в текстовом виде гарантируют отсутствие байтов 0 и 255 в теле сообщений.
| + | |
− | | + | |
− | Сообщения длиной более 64К упаковываются в Base64 и разбиваются на несколько сообщений длиной до 64К. Формат multipart сообщения определен отдельно.
| + | |
− | | + | |
− | После установки соединения системы обмениваются данными друг о друге, об авторизованных пользователях, о динамических методах.
| + | |
− | | + | |
− | Структура каждого сообщения - это список из двух объектов, первый из которых - тип сообщения, второй - словарь параметров. В словаре обязательно присутствует идентификатор запроса (любое текстовое уникальное значение). В случае, когда сообщение производится от имени пользователя, присутствуют его идентификаторы (userid, userlogin).
| + | |
− | | + | |
− | | + | |
− | Среди параметров находятся и индивидуальные параметры сообщения. Поддерживается произвольная вложенность объектов: строк, чисел, дат, словарей, списков.
| + | |
− | | + | |
− | | + | |
− | '''СПИСОК МЕТОДОВ ИНТЕРФЕЙСА'''
| + | |