Интеграция с Desktop приложениями

Материал из Oktell
Перейти к: навигация, поиск

Использование COM библиотеки Oktell из других приложений

Настоящий раздел руководства описывает COM интерфейс клиентского уровня платформы для включения в другие проекты. Подобная архитектура предоставляет возможность разработчикам использовать в своих продуктах коммуникационные сервисы, предоставляемые сервером Oktell.

Для разработчиков программных продуктов на платформе .NET существует возможность исключить COM-взаимодействие и напрямую работать с объектом .NET платформы Oktell по аналогичному интерфейсу.

Итоговый продукт предполагает наличие коммуникационного сервера(ов) с установленным программным (и при необходимости аппаратным) обеспечением серверной части коплекса Oktell. Клиентские рабочие станции с установленным на них обеспечением, использующим зарегистрированный в ОС COM-объект клиентского уровня платформы, могут быть снабжены USB-телефонами и гарнитурами (USB и jack), а также аналоговыми и IP-телефонами, управляемыми коммуникационным сервером.

Взаимодействие комплексов осуществляется по описанному интерфейсу с передачей сложных параметров в виде XML-структур. COM объект OktellComClient предоставляет методы, генерирует события, управляет подключенным к рабочей станции устройством, а также обеспечивает сетевое взаимодействие с коммуникационным сервером.

Пользователю итогового продукта доступны два режима работы:

  • через интегрирующее приложение;
  • через стандартное клиентское приложение Oktell.

Массовая работа пользователей, подключенных к серверу, осуществляется через интегрирующее приложение. В этом случае все визуальные интерфейсы принадлежат именно ему. Работающая в этом случае прослойка Oktell предоставляет лишь невизуальные сервисы самому приложению. Необходимость работы в клиентском приложении Oktell диктуется задачами, решаемыми администратором и менеджерами проектов для детальной настройки режимов работы сервера, и носит индивидуальный характер.

Встраиваемые plugin-модули

Раздел руководства описывает технологию и интерфейс для подключения сторонних Plugin-модулей. Подобная архитектура предоставляет возможность разработчикам внедрять в стандартное клиентское приложение Oktell свои наработки, модули, визуальные формы и пользоваться полным спектром сервисов, предоставляемых коммуникационным сервером собственному клиентскому приложению.

В версии 2.5-90101 доступен режим подключения plugin-модулей в виде .NET сборок. В дальнейшем будет реализована возможность подключения плагинов через COM.

Plugin-модуль представляет собой совокупность сборок, одна из которых является главной (стартовой), и других файлов, расположенных рядом со сборками, возможно в произвольной структуре каталогов. В частном случае плагин - это единственный файл - главная сборка. Вся совокупность файлов модуля в дальнейшем будет называться plugin-программой.

Основная проблема, решаемая подключением внешних модулей, - доступ пользователей к информации с отображением в специфичном виде, не имеющем возможности быть настроенным средствами стандартного приложения Oktell.

Например, возможны случаи, когда средствами встроенного редактора форм не удается «красиво» решить поставленную задачу обработки звонков операторами, а применение веб-технологий затруднено по тем или иным причинам. В частности с этой потребностью можно столкнуться, когда необходимо в зависимости от выбираемых оператором значений отображать сильно отличающиеся по структуре данные в форме и при этом оставлять возможность перевыбора. Или когда в операторскую форму необходимо загружать большой объем данных (это замедляет отображение формы), тем более это нехорошо, если часть данных может вовсе не потребоваться в соответствии с выбором оператора. Может понадобиться отображение специфичных элементов управления, или возможность редактирования данных в таблице. Все эти задачи позволяет решить технология подключения plugin-программ.


COM-001.png

В то же время другой вариант применения описываемой plugin-технологии основывается на необходимости доступа операторов к данным в БД по своей инициативе. Данные, редактируемые при поступлении или осуществлении вызовов по голосовым задачам средствами операторских диалоговых форм (любого типа), недоступны пользователю стандартного приложения Oktell для редактирования в любое время по его инициативе. Для этого необходимы услуги администратора, имеющего доступ к БД, или разработка специальных отчетов, что в общем случае неудобно. Plugin-технология дает возможность разработки специальных подпрограмм, запускаемых из меню клиентского приложения Oktell и работающими по аналогии со стандартными модулями приложения. В визуальных формах plugin-программы известным ее разработчику способом программируется некоторая модель взаимодействия пользователя с данными в БД. Часть пользователей получают доступ к форме, которая в общем случае может быть очень сложной и содержать в себе несколько различных вариантов наполнения. В зависимости или вне зависимости от того какой пользователь ее открывает, она может принимать или не принимать тот или иной вид. В общем случае таким образом организованная plugin-программа позволяет реализовывать и другие задачи, не связанные явно с редактированием данных в БД.


COM-002.png


Яркий оранжевый цвет форм в приведенных скриншотах дает понять, где место дислокации внешнего по отношению к приложению Oktell модуля.

Plugin-программы с визуальным содержимым используются только клиентскими приложениями.

Также возможно использование подключаемых компонентов при выполнении сценариев сервера (компонент «Плагин»). Подробно индивидуально о них в разделе Описание базовых элементов интерфейса

В целом внутри plugin-программы может быть произвольная объектная модель: различные классы, визуальные формы, компоненты, контролы. Взаимодействие же с клиентским приложением осуществляется через класс, находящийся в главной сборке и реализующий описанный в данном разделе руководства интерфейс. Клиентским приложением создается один экземпляр объекта этого класса для осуществления взаимодействия. В дальнейшем он будет называться объектом управления.

Plugin-программа может содержать произвольное число форм и компонентов (в дальнейшем plugin-форма) для отображения

  • среди стандартных модулей Oktell-клиента в отдельном разделе, по умолчанию именуемом «Внешние модули»;
  • в диалоговом режиме (в сценариях диалога в качестве компонента plugin-форма).

Plugin-форма может быть реализована как объект класса

  • System.Windows.Forms.Form;
  • System.Windows.Forms.Control;

или иметь невизуальное представление (как реализация компонентов сценариев, выполняемых на сервер).

В зависимости от способа реализации клиентским приложением Oktell задействуются различные механизмы использования и отображения plugin-форм.

Plugin-формы, заявленные объектом управления, являют собой различные точки входа. Однако каждая из них может быть представлена алгоритмами отображения любой сложности (например стартовая форма может иметь несколько нижестоящих по структуре визуальных объектов, которые отображаются в теле формы в ходе проведения каких-либо действий (в общем случае изменяют свои свойства).

В любой момент времени у управляющего объекта есть возможность обратиться к клиентскому приложению Oktell с запросом. Результат его выполнения будет возвращен в управляющий объект. Часть запросов для корректного выполнения требует указания plugin-формы и кода ее экземпляра (например смена заголовка модуля), другие же могут выполняться в произвольном формате (например запрос в БД средствами Oktell или запрос на осуществление телефонного вызова).

Регистрация plugin-программы в системе осуществляется в модуле администрирования (подробно в руководстве пользователя комплекса Oktell, разделы «Клиентское приложение. Администрирование. Внешние модули», «Клиентское приложение. Call-центр. Сценарии. Сценарии диалога»). При регистрации производится тестовая загрузка и подключение на компьютере администратора. В случае обнаружения класса с требуемым интерфейсом производится сохранение всех файлов plugin-программы на сервере для дальнейшего обновления клиентских рабочих станций, а также регистрационная информация в БД.

Клиентские станции обновляют плагины при запуске приложения или принудительно по соответствующей команде администратора. Допускается обновление плагинов на работающей системе. Однако необходимо иметь в виду, что в момент обновления плагин выгружается, и все его активные формы закрываются, теряя несохраненные данные.

Сборки, загруженные в домен приложения не имеют возможности быть выгруженными и требуют перезапуска клиентских приложений, о необходимости чего производится уведомление пользователей.

Сервер не требует перезапуска для вступления в силу новых обновлений plugin-программ. В случае, если сервер использует подпрограмму в реализации сценариев, каждый компонент при передаче ему управления будет взят из последнего активного обновления. Это производится путем загрузки подпрограмм из временной папки с предварительным копированием.


Аудио и видео звонки из информационных терминалов и банкоматов

Настоящий раздел руководства описывает COM интерфейс библиотеки, встраиваемой в другие приложения и проекты и обеспечивающей связь их пользователей с единым сервером, работающим в центральном офисе. Подобная архитектура предоставляет разработчикам возможность обеспечивать пользователей своих продуктов прямой связью со службами техподдержки, консультантов и т.д., а также передавать на сервер всю необходимую информацию для осуществления верной маршрутизации, для сохранения информации в БД, для формирования отчетов, для заполнения диалоговых форм операторов, для подготовки и вывода персонифицированной информации пользователю. Также подобная архитектура может быть использована для осуществления вызовов с различных терминалов в центральный call-центр.

В центральном офисе (или сети офисов, связанных в единую телефонную инфраструктуру сервером Oktell), с сотрудниками которого требуется соединение абонентов - пользователей стороннего продукта, сервер Oktell занимается маршрутизацией вызовов. Там могут быть настроены и доступны любые сервисы, обеспечиваемые сервером. Вызовы могут обрабатываться IVR, операторами, также могут производиться видео-вызовы.

При возникновении вопросов пользователи некоторого внешнего продукта в привычном режиме снимают трубки своих телефонов и набирают записанный в лицензионном соглашении или на сайте номер офиса разработчика. Возможно звонок проходит по межгороду с соответствующей тарификацией. Попав на секретаря или в какой-либо отдел, абоненту зачастую приходится неоднократно объяснять кто он, какая версия продукта установлена, по какому вопросу и в какой именно отдел он звонит. Возможно он просит соединить его с кем-то конкретным, с кем он накануне уже обсуждал свою проблему.

После реализации описываемого механизма интеграции на сервере в офисе разработчика появляются каналы для обработки подключений таких абонентов. Пользователи продукта в визуальном интерфейсе получают доступ к некоторой кнопке "звонок в офис". Приложение, в которое интегрирована библиотека, собирает всю нужную информацию, которая может понадобиться серверу или сотрудникам офиса для ускорения и удобства обработки вызова. Вызовом соответствующего метода COM-библиотеки с передачей собранных параметров, указанием IP-адреса или доменного имени коммуникационного сервера в офисе производится прямое соединение через интернет с сервером. Вызов приходит на сервер по отведенным для этого каналам. Настроенная в главном сценарии ветка для обработки таких вызовов может содержать разбор передаваемых параметров компонентом сценария «Разбор текста». Привычным способом производится настройка и маршрутизация, при необходимости вход в задачу, переключение на какой-либо конкретный отдел или даже сотрудника (информация о предыдущих звонках может уже содержаться в БД), заполнение параметров диалоговых форм, переключение на автоматический информатор, на дополнительные поля ввода. Может быть настроено неголосовое взаимодействие внешнего приложения с центральным офисом с целью передачи данных и запуска некоторых бизнес-процессов. Все это определяется архитектором интеграции и как результатом совместно настроенными сценариями oktell и передаваемыми внешним ПО данными.

Настройка комплекса достаточно глубока. Проработка концепции подобных вызовов и проведение работ по интеграции достаточно сложны. Но в итоге одним щелчком мыши производится соединение. Все остальное осталось незаметно ни для сотрудников call-центра, ни для пользователей программного продукта. Эти звонки, как и прочие, отражаются в статистике коммутаций сервера и доступны для анализа и подведения итогов.


COM-003.png


Для корректной работы необходимо наличие доступа в интернет у пользователя внешнего приложения. Для организации звонков используется SIP-протокол, поэтому необходим доступ к соответствующим портам.

Сервер поддерживает подключение таких абонентов в режиме входящих вызовов, то есть связь устанавливается только по инициативе внешнего приложения. Исходящие звонки для связи с терминалом по инициативе сервера Oktell невозможны.

Преимущество такого способа интеграции состоит в том, что внешние приложения подключаются к основному серверу только на момент осуществления вызова и считаются внешними абонентами. Таким образом не создают большой нагрузки на поддержание подключений, не резервируют TCP порты подобно клиентским приложениям, что обеспечивает возможность иметь неограниченное число потенциальных абонентов, подключенных таким способом. Сервер настраивается на поддержку ограниченного числа одновременных сессий (транков) по данному направлению, что гарантирует отсутствие чрезмерной загрузки и перенасыщения при любых масштабах. Поскольку эти вызовы считаются внешними, то они полноценно поддерживаются менеджером задач и могут быть обработаны во входящих задачах.

В случае, если все транки заняты, любой поступающий вызов будет получать отбой. Это может рассматриваться как повод увеличить количество одновременно обрабатываемых сессий (при необходимости увеличить серверные мощности, расширить call-центр), либо к перестроению процесса взаимодействия внешних абонентов с центральным call-центром (уменьшить время обработки и как следствие время коммутации, либо перестроить бизнес-процесс с целью уменьшить поток обращений).

Рассматриваемый способ интеграции представляет интерес только при взаимодействии абонентов с сервером через глобальную сеть. Таким образом сервер должен иметь соизмеримую с потоком обращений ширину канала доступа к сети интернет. Видеосвязь предъявляет более жесткие требования к ширине канала.

  • Варианты реализации
  • Подключение к COM-объекту
  • Регистрация библиотеки
  • Интерфейс взаимодействия
  • Использования native win32 библиотеки
  • Интерфейс взаимодействия
  • Использование .NET сборки
  • Интерфейс взаимодействия
  • Тестовое приложение
  • Веб-интерфейс

(Скачать документацию по интеграции в формате chm )

ВНИМАНИЕ: Если при открытии chm файла вы видите только его содержание (в левой колонке), а самого содержимого не видите то откройте Проводник - правый клик на файле - свойства - внизу “разблокировать”.