Публикация и обновление SmartApp
В этом разделе описано, как с помощью JavaScript на базе фреймворка React (можно использовать любой JavaScript фреймворк) в среде "eXpress" опубликовать SmartApp, а также как его обновить.
Термин | Определение |
---|---|
ивент | событие, которое передается от платформы чат-боту |
сериализатор | cпрограмма, выполняющая процесс перевода структуры данных в последовательность байтов |
asgi | клиент-серверный протокол взаимодействия веб-сервера и приложения |
форматер | программа, выполняющая форматирование |
линтер | программа для приведения кода к однообразию |
front-end | клиентская сторона пользовательского интерфейса к программно-аппаратной части сервиса |
uvicorn | сервер asgi |
В работе будет использоваться следующее программное обеспечение:
- библиотека react;
- библиотека redux;
- библиотека redux-saga;
- библиотека reselect;
- язык программирования TypeScript;
- библиотека smartapp-bridge.
Библиотека smartapp-bridge (документация — https://smartapp.ccsteam.xyz/smartapp-bridge/) предоставляет универсальный интерфейс для обмена событиями с приложением "eXpress" и является обязательной (скачать библиотеку можно по ссылке https://github.com/ExpressApp/smartapp-bridge). Другое программное обеспечение из перечня можно заменить на аналогичное. Так же вам понадобиться любая среда разработки, в которой будет компилироваться приложение. По умолчанию предполагается, что среда "eXpress" уже развернута и успешно функционирует.
Публикация
Публикация влючает в себя следующие этапы:
Подготовка к работе
Подключение чат-бота к корпоративному серверу
- В консоли администратора корпоративного сервера перейдите в пункт меню Боты.
- В верхнем правом углу нажмите кнопку Создать бота.
-
Заполните поля настроек:
Название поля Информация Имя Название чат-бота APP_ID Уникальный текстовый идентификатор чат-бота URL Ссылка на API чат-бота, при необходимости его можно заменить после окончания процесса разработки чат-бота Описание Информация, дающая представление о предназначении чат-бота Статус сообщения Сообщение, которое будет выводиться от имени администратора при обращении пользователя к чат-боту. Чат-бот должен быть отключен Версия протокола Версия кода платформы BotX, используемая для отправки команды чат-боту Включено Активирует/отключает чат-бота -
Нажмите кнопку Сохранить.
У каждого чат-бота есть настраиваемые функции:
Название функции | Описание |
---|---|
allowed_data | Отвечает за типы сообщений, который принимает чат-бот. Возможные значения:
|
communication_availability | Определяет типы пользователей, которым разрешен доступ к чат-боту. Возможные значения:
|
show_in_catalog | Отображение в списке чат-ботов |
allow_chat_creating | Создание чатов чат-ботом |
use_botx_ca_cert | Использование чат-ботом сертификата SSL |
use_pds_token | Электронная подпись документов с помощью сервиса ПДС |
pds_key | Ключ ПДС |
Чтобы настроить доступы чат-бота к сообщениям, в столбце "Имя" выберите чат-бота. Затем выполните следующие шаги:
- Для активации функций allow_chat_creating и use_botx_ca_cert проставьте отметки в соответствующие поля.
- Для подключения Smartapp установите флаг в соответствующем поле, введите имя чат-бота и выберите аватар из файловой системы.
- Нажмите кнопку Сохранить.
Подготовка чат-бота
-
Скачайте репозиторий соответствующего бота.
Скачанный проект состоит из следующих компонентов:
app ‒ api реализация конечных точек команд, на которые "eXpress" шлет события чат-боту для приложения, включая необходимые для чат-бота ‒ bot определение обработчиков команд, вспомогательного кода и т.п. для чат-бота ‒ core конфигурационные файлы, ивенты, общие для приложения сущности ‒ db модели, функции для работы с БД и миграции ‒ resources текстовые или файловые ресурсы бота ‒ schemas сериализаторы ‒ services сервисы с логикой работы чат-бота ‒ main.py файл, в котором объявляется asgi приложение и регистрируются его компоненты scripts скрипты для запуска тестов, форматеров, линтеров tests тесты, структура которых соответствует структуре проекта pyproject.toml конфигурация проекта с зависимостями, версией проекта и его авторами smartapp_files сборка части front-end В проекте используются следующие переменные:
- ref — уникальный идентификатор обращения;
-
data — перечень переменных, которые непосредственно используются при выполнении операций:
- type — исполняющая команда;
- query — переменная, над которой выполняется действие.
-
Установите зависимости проекта c помощью менеджера poetry:
poetry install
-
Определите переменные окружения в файле с расширением .env. Пример рассмотрен в файле example.env.
-
При необходимости подготовьте новые команды с помощью библиотеки pybotx. Все команды чат-бота находятся в файле app.bot.commands и группируются в отдельные модули в зависимости от их логики. Весь текст выносится в файл resources.strings.
Если необходимости в подготовке новых команд нет, перейдите к п.6.
-
Импортируйте их в файл app.bot.bot.
-
Запустите БД в фоне с использованием docker-compose:
$ docker-compose up -d db
-
Накатите все миграции для инициализации БД с помощью программного обеспечения Alembic:
$ alembic upgrade head
-
Запустите чат-бота как приложение FastAPI через сервер uvicorn.
$ uvicorn app.main:app –reload
Если в консоли появится сообщение, что приложение успешно запущено, то чат-бот работает. Пример успешного старта:
-
Загрузите чат-бот на сервер и повторите п. 1, 6-8.
Активация режима разработки в "eXpress"
Для активации режима разработки:
- Откройте веб-приложение "eXpress".
- Перейдите в пункт меню Настройки → О программе.
-
Выполните 10 щелчков левой кнопкой мыши по аватару сервера.
Откроется окно:
-
Перейдите на вкладку "SmartApps".
-
Включите режим отладки, передвинув переключатель, и введите в оба поля ID чат-бота. ID чат-бота находится в его настройках в веб-интерфейсе администратора:
-
Нажмите кнопку Установить параметры отладки.
Создание SmartApp
Для создания SmartApp:
- Скачайте репозиторий соответствующего бота.
- Распакуйте скачанный архив.
- В используемой среде разработки откройте распакованный архив.
-
Запустите установку пакетов:
- npm i
-
Запустите процедуру разработки приложения:
- npm start
Запустите веб-приложение "eXpress" и начните чат с ботом, для которого разрабатывается SmartApp. В рабочей области появится окно с отлаживаемой SmartApp. Пользователи, не задействованные в разработке данной SmartApp, не будут иметь к ней доступа.
Сборка приложения
Для завершения процедуры разработки выполните следующие операции:
-
В используемой среде разработки выполните сборку приложения командой:
npm run build
-
Перейдите в папку build и скопируйте ее в папку с файлами чат-бота. В рассматриваемом проекте папка build уже создана и называется smartapp_files. Замените содержимое папки smartapp_files на файлы, скомпилированные в папке build.
-
Загрузите чат-бот на сервер, повторите п. 1, 6-8 раздела "Подготовка чат-бота" и получите URL бота. URL бота укажите в настройках чат-бота на корпоративном сервере.
-
Откройте веб-приложение "eXpress".
- Перейдите в пункт меню Настройки → О программе.
- Выполните 10 щелчков левой кнопкой мыши по аватару сервера.
-
В открывшемся окне выберите вкладку "Experimental":
-
Передвиньте переключатель и закройте окно.
В меню появится кнопка для работы со SmartApp
-
Появится окно, в котором перечислены все доступные к работе SmartApp:
-
Нажмите на иконку собранного приложения. Откроется окно, в котором производится дальнейшее взаимодействие со SmartApp.
Подключение общего доступа
Если в режиме отладки приложение функционировало корректно, то к нему можно открыть общий доуступ:
- Откройте пункт меню SmartApps.
- Проставьте отметку в поле SmartApps включены.
- Нажмите кнопку Сохранить
Обновление SmartApp
SmartApp является веб-приложением, поэтому для его обновления достаточно обновить контейнер, который будет содержать новую сборку. Клиент при загрузке SmartApp получит новые статические файлы.