Esta é uma biblioteca de intérpretes Rivescript escrita para a linguagem de programação Java. O Rivescript é uma linguagem de script para o Chatterbots, facilitando a redação/pares de respostas para criar a inteligência de um bot.
Rivescript é uma linguagem de script para a criação de chatbots. Ele tem uma sintaxe muito simples e foi projetado para ser fácil de ler e rápido de escrever.
Um exemplo simples de como é o Rivescript:
+ hello bot
- Hello human.
Isso corresponde à mensagem de um usuário de "Hello Bot" e responderia "Olá Human". Ou para um exemplo um pouco mais complicado:
+ my name is *
* == => >Wow, we have the same name!
* != undefined => >Did you change your name?
- >Nice to meet you, !
O site oficial do Rivescript é https://www.rivescript.com/
Para testar o Rivescript no seu navegador da web, experimente o Playground Rivescript.
Confira também o Wiki da comunidade Rivescript para obter padrões e dicas e dicas e truques de design comuns para Rivescript.
Adicione a dependência rivescript-core
ao seu projeto:
Maven :
< dependency >
< groupId >com.rivescript groupId >
< artifactId >rivescript-core artifactId >
< version >0.10.0 version >
dependency >
Gradle :
dependencies {
compile " com.rivescript:rivescript-core:0.10.0 "
}
Se você deseja usar o Rivescript em um aplicativo de inicialização da primavera, consulte a seção de iniciantes da Spring Boot.
Quando usado como uma biblioteca para escrever seu próprio chatbot, a sinopse é a seguinte:
import com . rivescript . Config ;
import com . rivescript . RiveScript ;
// Create a new bot with the default settings.
RiveScript bot = new RiveScript ();
// To enable UTF-8 mode, you'd have initialized the bot like:
RiveScript bot = new RiveScript ( Config . utf8 ());
// Load a directory full of RiveScript documents (.rive files)
bot . loadDirectory ( "./replies" );
// Load an individual file.
bot . LoadFile ( "./testsuite.rive" );
// Sort the replies after loading them!
bot . sortReplies ();
// Get a reply.
String reply = bot . reply ( "user" , "Hello bot!" );
A distribuição rivescript-core
também inclui um shell interativo para testar seu bot rivescript. Execute -o com o caminho para uma pasta no disco que contém seus documentos Rivescript. Exemplo:
java com.rivescript.cmd.Shell [options]
O construtor com.rivescript.RiveScript
leva uma instância Config
opcional. Aqui está um exemplo completo com todas as opções suportadas. Você só precisa fornecer valores para opções de configuração diferentes dos padrões.
RiveScript bot = new RiveScript ( Config . newBuilder ()
. throwExceptions ( false ) // Whether exception throwing is enabled
. strict ( true ) // Whether strict syntax checking is enabled
. utf8 ( false ) // Whether UTF-8 mode is enabled
. unicodePunctuation ( "[.,!?;:]" ) // The unicode punctuation pattern
. forceCase ( false ) // Whether forcing triggers to lowercase is enabled
. concat ( ConcatMode . NONE ) // The concat mode
. depth ( 50 ) // The recursion depth limit
. sessionManager ( sessionManager ) // The session manager for user variables
. errorMessages ( errors ) // Map of custom error messages
. build ());
Por conveniência, você pode usar atalhos:
// The default constructor uses a basic configuration.
RiveScript bot = new RiveScript ();
// This is similar as:
RiveScript bot = new RiveScript ( Config . basic ());
// To use the basic configuration with UTF-8 mode enabled use:
RiveScript bot = new RiveScript ( Config . utf8 ());
O suporte UTF-8 no Rivescript é considerado uma característica experimental. É desativado por padrão.
Por padrão (sem o modo UTF-8), os gatilhos podem conter apenas caracteres ASCII básicos (sem caracteres estrangeiros), e a mensagem do usuário é despojada de todos os caracteres, exceto letras, números e espaços. Isso significa que, por exemplo, você não pode capturar o endereço de e-mail de um usuário em uma resposta Rivescript, por causa do @ e. caracteres.
Quando o modo UTF-8 é ativado, essas restrições são levantadas. Os gatilhos só estão limitados a não conter certos metacaracters, como a barra de barragem, e a mensagem do usuário é despojada apenas de barragens e suportes angulares HTML (para proteger de XSS óbvio, se você usar o Rivescript em um aplicativo da Web). Além disso, os caracteres de pontuação comuns são despojados, com o conjunto padrão sendo [.,!?;:]
. Isso pode ser substituído fornecendo uma nova string regexp para o método Config.Builder#unicodePunctuation()
. Exemplo:
// Make a new bot with UTF-8 mode enabled and override the punctuation
characters that get stripped from the user 's message.
RiveScript bot = new RiveScript ( Config . Builder
. utf8 ()
. unicodePunctuation ( "[.,!?;:]" )
. build ());
As tags
no Rivescript capturam a entrada "RAW" do usuário, para que você possa escrever respostas para obter o endereço de e-mail do usuário ou armazenar caracteres estrangeiros em seu nome.
Adicione a dependência rivescript-spring-boot-starter
ao seu projeto:
Maven :
< dependency >
< groupId >com.rivescript groupId >
< artifactId >rivescript-spring-boot-starter artifactId >
< version >0.10.0 version >
dependency >
Gradle :
dependencies {
compile " com.rivescript:rivescript-spring-boot-starter:0.10.0 "
}
O acionador de partida adicionará automaticamente a dependência rivescript-core
ao seu projeto e acionará a configuração automática para criar a instância RiveScript
Bot.
Embora a configuração automática use padrões sensíveis para criar a instância do BOT, as seguintes propriedades podem ser especificadas dentro do seu application.properties
/ application.yml
Arquivo (ou como comutadores de linha de comando) para personalizar o comportamento de configuração automática:
rivescript:
enabled: true # Enable RiveScript for the application.
source-path: classpath:/rivescript/ # The comma-separated list of RiveScript source files and/or directories.
file-extensions: .rive, .rs # The comma-separated list of RiveScript file extensions to load.
throw-exceptions: false # Enable throw exceptions.
strict: true # Enable strict syntax checking.
utf8: false # Enable UTF-8 mode.
unicode-punctuation: [.,!?;:] # The unicode punctuation pattern (only used when UTF-8 mode is enabled).
force-case: false # Enable forcing triggers to lowercase.
concat: none # The concat mode (none|newline|space).
depth: 50 # The recursion depth limit.
error-messages: # The custom error message overrides. For instance `rivescript.error-messages.deepRecursion=Custom Deep Recursion Detected Message`
object-handlers: # The comma-separated list of object handler names to register (currently supported: `groovy`, `javascript`, `ruby`).
Para registrar automaticamente as sub-rotinas Java personalizadas e/ou manipuladores de objetos suportados por não padrão na instância de bots RiveScript
criada, defina feijões apropriados no contexto do seu aplicativo, como:
@ Bean public Map < String , Subroutine > subroutines () { // The key is the name of the Java object macro to register. Map < String , Subroutine > subroutines = new HashMap <>(); subroutines . put ( "subroutine1" , new Subroutine1 ()); subroutines . put ( "subroutine2" , new Subroutine2 ()); return subroutines ; } @ Bean public Map < String , ObjectHandler > objectHandlers () { // The key is the name of the programming language to register. Map < String , ObjectHandler > objectHandlers = new HashMap <>(); objectHandlers . put ( "handler1" , new ObjectHandler1 ()); objectHandlers . put ( "handler2" , new ObjectHandler2 ()); return objectHandlers ; }
Para compilar, testar, construir todos os frascos e documentos executados:
./gradlew build
Para instalar todos os frascos em sua execução local de cache do Maven:
./gradlew install
A pasta /samples
contém várias amostras de implementações de bots Java Rivescript.
rsbot
- O RSBot.java
é uma implementação simples usando o com.rivescript.cmd.Shell
.
Esses comandos podem ser usados no seu prompt de entrada no RSBOT:
/quit - Quit the program
/dump topics - Dump the internal topic/trigger/reply struct (debugging)
/dump sorted - Dump the internal trigger sort buffers (debugging)
/last - Print the last trigger you matched.
Para executar RSBot
para começar a conversar com a Demo Eliza Run:
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
-Este exemplo usa o iniciador de inicialização do RivingScript para configurar automaticamente a instância do RiveScript
.
Para começar a conversar com a corrida de demonstração:
./gradlew :rivescript-samples-spring-boot-starter-rsbot:bootRun --console plain
The MIT License (MIT)
Copyright (c) 2016 the original author or authors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.