Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
indentСодержание

...

Введение

IQChannels — это прикладной программный продукт, реализующий функции чата сотрудников банка с клиентами, содержащий готовые SDK для мобильных приложений, виджет для сайта, и интеграцию с различными внутренними системами банка (iSimpleBank 2.0 и другими системами дистанционного банковского обслуживания, АБС, CRM, Websphere MQ и др.).

...

Основные возможности

  • Обслуживание клиентов (физические и юридические лица) в привычном им формате чата:
    • через мобильное приложение компании (встроенный чат) на базе iOS/Android,
    • через виджет в браузере.
    • через популярные мессенджеры Telegram/Facebook Messenger/Вконтакте.
  • Ведение переписки с анонимными клиентами и идентифицированными клиентами банка.
  • Управление очередью входящих сообщений.
  • Обмен различным контентом (ссылки, фото, документы и др.).
  • Управление пользователями и их полномочиями (ролевая модель). По- умолчанию, три роли (администратор, супервизор, оператор), с возможностью создания новых ролей.
  • Аналитика и отчетность.
  • Локальная установка продукта.
  • Возможность интеграции с ДБО, АБС, CRM, системами идентификации/авторизации клиентов/сотрудников  и иными сторонними решениями.
  • SDK для встраивания чата в мобильное приложение на iOS/Android.
  • Готовая интеграция с интернет-банком и мобильными приложениями iSimpleBank 2.0.

...

Требования для установки

Также см. требования к серверам.

  • Операционная система: Linux x64, Windows x64, macOS x64.
  • База данных: PostgreSQL 9.0+, Oracle 11g+.
  • iOS SDK: iOS 8.0+.
  • Android SDK: Android 4.4+.
  • Панель управления, рабочее место оператора: Chrome 49+, Firefox 47+, Safari 10+.
  • Виджет для сайта: IE 11+, Edge, Chrome 49+, Firefox 47+, Safari 10+.

...

Описание поставки

IQChannels поставляется в виде коробочного решения, готового для установки на серверы организации.

...

  • Серверное приложение в виде скомпилированных бинарных файлов для всех поддерживаемых операционных систем.
  • Скрипты миграций для баз данных. - какие данные будем мигрировать?
  • Панель управления и рабочее место оператора (web single-page-application) в виде сжатых JavaScript, CSS и HTML файлов.
  • iOS SDK: Objective-C фреймворк для интеграции в мобильное приложение с поддержкой основных менеджеров зависимостей для iOS (Cocoapods/Carthage).
  • Android SDK: Java maven artifact, готовый для использования с Gradle/Maven.
  • Web widget: сжатые JavaScript и CSS файлы для интеграции с сайтом/интернет-банком.
  • Документация.

...

Общая архитектура решения

  • Application Daemon IQChannels — центральное монолитное приложение-демон, которое непосредственно взаимодействует с базой данных, интегрируется с внешними системами для авторизации клиентов/получения данных о клиентах (iSimple, CRM, сервисы на шине данных) и предоставляет два API для клиентских-приложений.
  • Public API — единое публичное API, доступное из Интернета, которое используют все клиентские приложения для взаимодействия с сервером. Данное API сильно ограничено по функциональности и не дает возможности совершать административные или любые другие не клиентские функции. API едино для всех внешних клиентов, включая мобильные приложения и виджет на сайте.
  • InternalPrivte API — внутреннее API, на базе которого построена панель управления и рабочее место оператора. Это API предоставляет полный доступ к системе, включая возможность создавать своих ботов. Внутреннее API является над множеством публичного API, т.е. оно также позволяет строить клиенты, которые работают по протоколу мессенджера в реальном времени.
  • Reverse proxy Nginxnginx Nginx или любой другой web-сервер, который проксирует запросы и постоянные соединения к приложению.
  • iSimple/Websphere MQ/ДБО, CRM — возможные точки интеграции с внешними системами, которые IQChannels может использовать для авторизации клиентов и получения информации о клиентах.
  • Push-notificationsAPNS, Firebase — исходящие подключения к APNS-серверам (iOS) и GCM/Firebase-серверам (Android) для отправки пуш-уведомлений на мобильные телефоны.
  • Dashboard Панель управления, рабочее место оператора — панель управления и рабочее место оператора, написанное написанные поверх внутреннего API, как web single-page application.
  • Bots — возможные боты, построенные поверх внутреннего API, которые могут автоматически отвечать на сообщения пользователей.

3.0 Протокол мессенджера

Протокол для обмена сообщениями между клиентами и сервером построен на основе анализа протоколов существующих мессенджеров, включая Whatsapp, Telegram, VK, Facebook.

3.1 Технические характеристики

  • HTTP 1.1 или HTTP 2.0 для отправки сообщений и для установки постоянных соединений.
  • TLS 1.2 для обеспечения безопасности соединения.
  • HTML5 Server-Sent Events поверх постоянного HTTP-соединения для получения новых сообщений в реальном времени.
  • Если HTML5 SSE недоступны, тогда используется Websocket-соединение для получения новых сообщений в реальном времени.
  • По умолчанию, API доступно на порте 3001.

3.2 Структура

Протокол делится на две части:

  • REST-интерфейс для отправки сообщений, запроса данных.
  • HTML5 SSE/Websocket-соединения для получения сообщений и событий в реальном времени.

3.3 Обзор алгоритма работы

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

3.4 Авторизация клиентов

Для авторизации клиента используется существующие системы в мобильных приложениях/интернет-банках. Мобильное приложение может передать в SDK IQChannels любые данные для авторизации клиента (например, текущий токен авторизации в мобильном приложении или идентификатор сессии). Далее SDK передает эти данные по защищенному каналу на сервер iqchanneld, а последний использует внешнюю систему для авторизации клиента (например, iSimple или сервис на шине).

3.5 Синхронизация истории и получение обновлений

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

Подобный подход использует Telegram и другие мессенджеры. Он позволяет с минимальными накладными расходами на трафик синхронизировать и получать консистентное состояние на клиенте.

...

Серверное приложение

Application Daemon — это монолитное серверное приложение, которое является центральной частью системы и реализует бизнес-логику приложения, но не пользовательский интерфейс. Для пользовательских интерфейсов серверное приложение предоставляет API:

...

2) внутреннее расширенное API, которое предоставляет доступ ко всей функциональности системы.

...

Технические характеристики

  • Скомпилированные бинарные файлы для всех поддерживаемых операционных систем.
  • Язык программирования: Go 1.79.
  • Поддерживаемые базы данных: PostgreSQL, Oracle.
  • Поддерживаемые операционные системы: Windows x86/x64, Linux x64, macOS x64.

...

Интеграция с внешними системами

Для авторизации клиентов и запроса данных клиентов для отображения в интерфейсе оператора IQChannels должен быть интегрирован с внешними системами банка.

...

Интеграция с другими системами, в т.ч. с Websphere MQ или CRM возможна, но требует дополнительной заказной разработки.

...

SDK для iOS и Android

...

См. SDK.

SDK для обеих мобильных платформ разделены на две части:

  • Публичный класс-синглтон, который реализует бизнес-логику и сетевое взаимодействие.
  • Пользовательский интерфейс, построенный поверх бизнес-логики. 

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

5.1 iOS SDK

SDK для iOS представляет фреймворк, написанный на Objective-C.

  • Язык программирования: Objective-C
  • Поддерживаемые операционные системы: 8.0+.
  • Поддерживаемые системы зависимостей: Xcode framework, Cocoapods, Carthage.

5.2 Android SDK

SDK для Android представляет собой Maven/Gradle артефакт, написанный на Java.

  • Язык программирования: Java
  • Поддерживаемые операционные системы: Android 4.4+.

5.3 Push-уведомления

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

Для iOS используются APNS-серверы Apple. Для Android используются GCM/Firebase серверы Google. В панели управления IQChannels задаются сертификаты и ключи, которые серверное приложение будет использовать для отправки пуш-уведомлений.

...

Статистика и аналитика

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

...

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

...

Установка в LAN или в DMZ

Серверное приложение может быть установлено как в во внутреннюю сеть банка, так и в DMZ.

...

  • IQChannels устанавливается в DMZ.
  • Reverse proxy (nginx) подключается к серверу IQChannels по порту 3001 (по умолчанию).
  • Для IQChannels открывается доступ к базе данных.
  • Для IQChannels открывается доступ к системt авторизации клиентов, например, к сервису на шине или к iSimpleBank 2.0.

...

Поддержка внешних мессенджеров

На текущий момент IQChannels поддерживает следующие мессенджеры:

...