Instruction of dev-whatson right start

From Bloomex Wiki
Jump to navigation Jump to search

Документация по использованию контейнера коннекта с IBM Watson

Место сервиса в структуре

Photo 2022-12-29 11-54-52.jpg

На приложенной картинке указано, как подключается сервис

Структура проекта

WatsonConnector – класс, отвечающий за подключение и передачу данных между Ватсон ассистентом и ботом;

WatsonProcessor – класс, отвечающий за взаимодействие с Ватсон ассистентом, выполнение команд, передаваемых из ассистента, формирование вспомогательных переменных и сохранение их в контексте, передаваемом в ассистент;

bloomexbot – Django сервер, реализующий API для обработки сообщений пользователя;

BloomexApiConnector – класс передачи API запросов на сервера Bloomex;

static_objects – набор глобальных объектов, через которых происходит работа всего проекта.

Принцип работы модуля

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

При появлении сообщения от пользователя, оно передаётся в API функцию get_message (файл bloomexbot/botapi/views.py), по параметру chat_id и dep_id происходит определение того, новый ли это диалог или продолжение существующего. Если это продолжение, то сохраняется существующий контекст. Далее происходит передача контекста и сообщения на обработку в соответствующий модуль Ватсон Ассистента объектом класса WatsonProcessor в соответствии с проектом, из которого получено сообщение (bloomex.ca или bloomex.com.au).

Из полученного от Ватсон Ассистента результата обработки формируется ответ в формате, описанном в контаркте (файл Контракт.odt).

Просмотр диалогов с пользователем можно осуществить зайдя на страницу

http://<host>:<port>/conversation_filter_view/

Например:

http://chatbot.necs.ca:3001/conversation_filter_view/


1. DATABASES_CONFIG - параметры подключения к базе данных;

2. PROJECTS_API - параметры подключения к API функциям взаимодействия с серверами онлайн магазинов;

3. PROJECTS_ASSISTANT - параметры подключения к Ватсон ассистенту (скритпу обработки диалогов в системе Ватсон);

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

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

6. UPDATE_ORDERS - обновлять ли заказы или использовать заглушку (так как не было тестового API, а реальные заказы изменять не хотелось, использовался этот костыль).

Контракт

Формат входных и выходных данных: JSON

Запускаемые функции: 1. message. Входные параметры: a. dep_id - целое число (2 байта); b. chat_id – целое число (8 байт); c. message_id - целое число (8 байт); d. text – строка длиной 2000 символов;

2. chat_oper. Входные параметры: a. chat_id – целое число (8 байт);

3. email. Входные параметры: a. chat_id – целое число (8 байт);

4. get_status. Входные параметры: a. chat_id – целое число (8 байт);


Возвращаемые значения в ответе бота: 1. text – строка длиной максимум 2048 символов; 2. fyi – строка длиной максимум 1048576 символов (на счёт этого параметра не уверен). Поле fyi только json со степенью вложения не более двух; 3. action – строка максимум 30 символов. Данная строка может принимать следующие значения: send, alert, call_oper, passive; 4. delay – целое число (2 байта); 5. urgency – целое число (1 байт).

Максимальное время ответа: 3 сек.;

В случае передачи в функцию message параметра dep_id, который в данный момент не обрабатывается, будет возвращен JSON объект с текстовым полем ‘error’, описывающим ошибку.

Инструкция по запуску chatbot

1. устанавливаем python 3.6; 2. ставим библиотеки (файл requirements.txt); возможны проблемы с установкой uwsgi. Попробуй conda install -c conda-forge uwsgi 3. в корне лежит файл с настройками settings.py, нужно ввести актуальные значения (назначение полей в файле настроек находится в settings_fields.txt); 4. редактируем файл настроек bloomexbot/uwsgi.ini; 5. переходим в папку bloomexbot; 6. для создания базы данных используем команды

python manage.py makemigrations python manage.py migrate

в результате в базе должны создаться таблицы в соответствии с содержанием файла bloomexbot/botapi/models.py;

7. запуск работы скрипта:

uwsgi uwsgi.ini

логи сохраняются в файл chatbot.log в JSON формате.