Instruction of dev-whatson right start: Difference between revisions
No edit summary |
No edit summary |
||
Line 102: | Line 102: | ||
логи сохраняются в файл chatbot.log в JSON формате. | логи сохраняются в файл chatbot.log в JSON формате. | ||
=== Исходный код === | |||
# исходный код вылоден в гитлаб в таком виде, как получен от прежних разработчиков - без анализа и рефакторинга | |||
https://gitlab.necs.ca/maxim.cherepanov/chatbotwatsonconnector |
Revision as of 12:30, 20 May 2024
Документация по использованию контейнера коннекта с IBM Watson
Место сервиса в структуре
На приложенной картинке указано, как подключается сервис
Структура проекта
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