Instruction of dev-whatson right start: Difference between revisions

From Bloomex Wiki
Jump to navigation Jump to search
No edit summary
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Документация по работе/разворачиванию сервиса коннекта с IBM Watson ==
[[File:Photo 2022-12-29 11-54-58.jpg|thumb]]
 
== Документация по использованию контейнера коннекта с IBM Watson ==


=== Место сервиса в структуре ===
=== Место сервиса в структуре ===
[[File:Photo 2022-12-29 11-54-52.jpg|thumb]]
[[File:Photo 2022-12-29 11-54-52.jpg|thumb]]
На приложенной картинке указано, как подключается сервис
На приложеных схемах указано, как подключается сервис


=== Структура проекта ===
=== Структура проекта ===
Line 16: Line 18:
static_objects – набор глобальных объектов, через которых происходит работа всего проекта.
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/
 
Например:
 
<nowiki>http://chatbot.necs.ca:3001/conversation_filter_view/</nowiki>
 
 
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 формате.
 
=== Исходный код ===
'''исходный код помещен в гитлаб в таком виде, как получен от прежних разработчиков - без анализа и рефакторинга'''
 
'''https://gitlab.necs.ca/maxim.cherepanov/chatbotwatsonconnector'''

Latest revision as of 15:08, 20 May 2024

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

Документация по использованию контейнера коннекта с 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 формате.

Исходный код

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

https://gitlab.necs.ca/maxim.cherepanov/chatbotwatsonconnector