This commit is contained in:
upagge 2020-05-02 16:46:10 +03:00
parent 7df0e3a12a
commit 714b6ab7ef
No known key found for this signature in database
GPG Key ID: 15CD012E46F6BA34

View File

@ -1,5 +1,6 @@
# Abstract autoresponder
Абстрактная реализация, которая позволяет создавать ботов.
Абстрактная реализация, которая позволяет создавать ботов. Боты позволяют автоматизировать взаимодействие с пользователем.
Боты позволяют автоматизировать общение с клиентами, отвечая по запрограммированию сценарию.
### Основные понятия
@ -7,7 +8,7 @@
Каждый юнит хранит в себе ключевые слова или регулярное выражение, ссылки на следующие Unit-ы, а так же значение
приоритета и процент количества найденных ключевых слов к заданным ключевым словам. В данном модуле Unit является
абстрактным классом, так как юнит по задумке это расширяемый класс, который может не только отдавать текстовые
сообщения, но и например сохранять пользовательскую информацию, и выполнять прочее функции. Примеры наследников
сообщения, но и, например, сохранять пользовательскую информацию, и выполнять прочие функции. Примеры наследников
Unit можно найти в [этом репозитории](https://github.com/uPagge/social-bot).
**Сценарий** - это связанные между собой юниты.
@ -26,16 +27,16 @@ Unit можно найти в [этом репозитории](https://github.c
• Unit1 —> Unit4 —> Unit9;
• Unit10.
Пользователь присылает боту свое первое сообщение, например «Привет». Если сообщение удовлетворяет регулярному
Пользователь присылает боту свое первое сообщение, например, «Привет». Если сообщение удовлетворяет регулярному
выражению или содержит необходимое количество ключевых слов Unit1, то возвращается Unit1, то же самое относится к Unit10.
Если оба юнита удовлетворяют запросу пользователя, то будет возвращен юнит с большим приоритетом (поле priority). Если
приоритеты равны, то рандомный Unit. В нашем примере, на первое сообщение, пользователь получил Unit1, поэтому следующее
приоритеты равны, то случайный Unit. В нашем примере, на первое сообщение, пользователь получил Unit1, поэтому следующее
сообщение пользователя будет ассоциироваться с множеством: Unit2, Unit3 и Unit4.
### Програмная реализация
Данная библиотека заточена только на определениие того, какой Unit отдавать, необходимо создать наследника
Данная библиотека предназначена только на определение того, какой Unit отдавать, необходимо создать наследника
класса `Unit` (самый простой вариант лежит в тестах). Следом создается объект класса `UnitPointerService`. Он отвечает
за сохранение позиции пользователя в сценарии, простыми словами он сохраняет последний Unit, который был отправлен
пользователю.
@ -47,6 +48,6 @@ Unit можно найти в [этом репозитории](https://github.c
### Программные особенности
1. Существует возможность отправлять дефолтный юнит, если не будет найден юнит удвлетворяющий сообщению пользователя (
без ключевых слов, и т.п.). Для этого у объекта `AutoResponder` вызывается метод `setDefaultUnit`.
1. Существует возможность задать юнит, который будет возвращаться при отсутствии юнита, удвлетворяющего сообщению
пользователя (без ключевых слов, и т.п.). Для этого у объекта `AutoResponder` вызывается метод `setDefaultUnit`.