Abstract Autoresponder

Abstract implementation for processing text requests.

License

License

Categories

Categories

Auto Application Layer Libs Code Generators
GroupId

GroupId

org.sadtech.autoresponder
ArtifactId

ArtifactId

autoresponder
Last Version

Last Version

1.9.4-RELEASE
Release Date

Release Date

Type

Type

jar
Description

Description

Abstract Autoresponder
Abstract implementation for processing text requests.
Project URL

Project URL

https://github.com/uPagge/autoresponder
Source Code Management

Source Code Management

https://github.com/uPagge/autoresponder

Download autoresponder

How to add to project

<!-- https://jarcasting.com/artifacts/org.sadtech.autoresponder/autoresponder/ -->
<dependency>
    <groupId>org.sadtech.autoresponder</groupId>
    <artifactId>autoresponder</artifactId>
    <version>1.9.4-RELEASE</version>
</dependency>
// https://jarcasting.com/artifacts/org.sadtech.autoresponder/autoresponder/
implementation 'org.sadtech.autoresponder:autoresponder:1.9.4-RELEASE'
// https://jarcasting.com/artifacts/org.sadtech.autoresponder/autoresponder/
implementation ("org.sadtech.autoresponder:autoresponder:1.9.4-RELEASE")
'org.sadtech.autoresponder:autoresponder:jar:1.9.4-RELEASE'
<dependency org="org.sadtech.autoresponder" name="autoresponder" rev="1.9.4-RELEASE">
  <artifact name="autoresponder" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.sadtech.autoresponder', module='autoresponder', version='1.9.4-RELEASE')
)
libraryDependencies += "org.sadtech.autoresponder" % "autoresponder" % "1.9.4-RELEASE"
[org.sadtech.autoresponder/autoresponder "1.9.4-RELEASE"]

Dependencies

compile (3)

Group / Artifact Type Version
junit : junit jar 4.12
org.projectlombok : lombok jar 1.18.12
org.slf4j : slf4j-api jar 1.7.30

Project Modules

There are no modules declared in this project.

Abstract autoresponder

Абстрактная реализация, которая позволяет создавать ботов. Боты позволяют автоматизировать взаимодействие с пользователем. Боты позволяют автоматизировать общение с клиентами, отвечая по запрограммированию сценарию.

Dependency

maven:

<dependency>
    <groupId>org.sadtech.autoresponder</groupId>
    <artifactId>autoresponder</artifactId>
    <version>1.9.2-RELEASE</version>
</dependency>

Основные понятия

Unit - некая единица сценария, по которому проходит пользователь, отправляя свои сообщения. Каждый юнит хранит в себе ключевые слова или регулярное выражение, ссылки на следующие Unit-ы, а так же значение приоритета и процент количества найденных ключевых слов к заданным ключевым словам. В данном модуле Unit является абстрактным классом, так как юнит по задумке это расширяемый класс, который может не только отдавать текстовые сообщения, но и, например, сохранять пользовательскую информацию, и выполнять прочие функции. Примеры наследников Unit можно найти в этом репозитории.

Сценарий - это связанные между собой юниты.

Принцип работы

Для понимания рассмотрим небольшой пример по схеме изображенной ниже. Так же небольшие примеры обработки есть в тестах.

Картинка

Сценариями в данном случае являются:

• Unit1 —> Unit2 —> Unit5 —> Unit7 —> Unit9
• Unit1 —> Unit2 —> Unit6 —> Unit8;
• Unit1 —> Unit3 —> Unit6 —> Unit8;
• Unit1 —> Unit4 —> Unit9;
• Unit10.

Пользователь присылает боту свое первое сообщение, например, «Привет». Если сообщение удовлетворяет регулярному выражению или содержит необходимое количество ключевых слов Unit1, то возвращается Unit1, то же самое относится к Unit10.

Если оба юнита удовлетворяют запросу пользователя, то будет возвращен юнит с большим приоритетом (поле priority). Если приоритеты равны, то случайный Unit. В нашем примере, на первое сообщение, пользователь получил Unit1, поэтому следующее сообщение пользователя будет ассоциироваться с множеством: Unit2, Unit3 и Unit4.

Програмная реализация

Данная библиотека предназначена только на определение того, какой Unit отдавать. Для использования библиотеки необходимо в первую очередь создать наследника класса Unit (самый простой вариант лежит в тестах). Следом создается объект класса UnitPointerService. Он отвечает за сохранение позиции пользователя в сценарии, простыми словами он сохраняет последний Unit, который был отправлен пользователю.

Далее создается объект класса AutoResponder. В конструктор передается UnitPointerService и множество юнитов, которые будут проверяется при первом сообщении пользователя.

Далее у объекта AutoResponder вызывается метод answer, который возвращает следующий для пользователя Unit.

Программные особенности

  1. Существует возможность задать юнит, который будет возвращаться при отсутствии юнита, удовлетворяющего сообщению пользователя (без ключевых слов, и т.п.). Для этого у объекта AutoResponder вызывается метод setDefaultUnit.
  2. Последний юнит сценария не сохраняется в UnitPointerService, вместо этого происходит удаление данных о позиции пользователя в сценарии, и следующее сообщение пользователя будет снова асоциироваться с начальным множеством юнитов.

Versions

Version
1.9.4-RELEASE
1.9.3-RELEASE
1.9.2-RELEASE
1.9.1-RELEASE
1.8-RELEASE