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