Dies ist eine RiveScript-Interpreterbibliothek, die für die Programmiersprache Java geschrieben wurde. RiveScript ist eine Skriptsprache für Chatterbots, die es einfach macht, Trigger-/Antwortpaare zum Aufbau der Intelligenz eines Bots zu schreiben.
RiveScript ist eine Skriptsprache zum Erstellen von Chatbots. Es hat eine sehr einfache Syntax und ist so konzipiert, dass es leicht zu lesen und schnell zu schreiben ist.
Ein einfaches Beispiel dafür, wie RiveScript aussieht:
+ hello bot
- Hello human.
Dies entspricht der Nachricht eines Benutzers „Hallo Bot“ und würde mit „Hallo Mensch“ antworten. Oder für ein etwas komplizierteres Beispiel:
+ my name is *
* == => >Wow, we have the same name!
* != undefined => >Did you change your name?
- >Nice to meet you, !
Die offizielle Website für RiveScript ist https://www.rivescript.com/
Um RiveScript in Ihrem Webbrowser zu testen, probieren Sie den RiveScript Playground aus.
Schauen Sie sich auch das RiveScript-Community-Wiki an, um gängige Designmuster sowie Tipps und Tricks für RiveScript zu finden.
Fügen Sie Ihrem Projekt die rivescript-core
Abhängigkeit hinzu:
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 "
}
Wenn Sie RiveScript in einer Spring Boot-Anwendung verwenden möchten, lesen Sie den Abschnitt Spring Boot Starter.
Bei Verwendung als Bibliothek zum Schreiben Ihres eigenen Chatbots sieht die Zusammenfassung wie folgt aus:
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!" );
Die rivescript-core
-Distribution enthält außerdem eine interaktive Shell zum Testen Ihres RiveScript-Bots. Führen Sie es mit dem Pfad zu einem Ordner auf der Festplatte aus, der Ihre RiveScript-Dokumente enthält. Beispiel:
java com.rivescript.cmd.Shell [options]
Der com.rivescript.RiveScript
Konstruktor benötigt eine optionale Config
Instanz. Hier ist ein vollständiges Beispiel mit allen unterstützten Optionen. Sie müssen nur Werte für Konfigurationsoptionen angeben, die von den Standardwerten abweichen.
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 ());
Der Einfachheit halber können Sie Verknüpfungen verwenden:
// 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 ());
Die UTF-8-Unterstützung in RiveScript gilt als experimentelle Funktion. Es ist standardmäßig deaktiviert.
Standardmäßig (ohne aktivierten UTF-8-Modus) dürfen Trigger nur einfache ASCII-Zeichen (keine Fremdzeichen) enthalten und die Nachricht des Benutzers enthält alle Zeichen außer Buchstaben, Zahlen und Leerzeichen. Das bedeutet, dass Sie beispielsweise die E-Mail-Adresse eines Benutzers aufgrund der @ und nicht in einer RiveScript-Antwort erfassen können. Charaktere.
Wenn der UTF-8-Modus aktiviert ist, werden diese Einschränkungen aufgehoben. Trigger dürfen nur bestimmte Metazeichen wie den Backslash nicht enthalten, und die Nachricht des Benutzers wird nur von Backslashes und spitzen HTML-Klammern befreit (zum Schutz vor offensichtlichem XSS, wenn Sie RiveScript in einer Webanwendung verwenden). Darüber hinaus werden gängige Satzzeichen entfernt, wobei der Standardsatz [.,!?;:]
ist. Dies kann überschrieben werden, indem der Config.Builder#unicodePunctuation()
Methode eine neue reguläre Ausdruckszeichenfolge bereitgestellt wird. Beispiel:
// 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 ());
Die
-Tags in RiveScript erfassen die „rohen“ Eingaben des Benutzers, sodass Sie Antworten schreiben können, um die E-Mail-Adresse des Benutzers abzurufen oder fremde Zeichen in seinem Namen zu speichern.
Fügen Sie die Abhängigkeit rivescript-spring-boot-starter
zu Ihrem Projekt hinzu:
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 "
}
Der Starter fügt Ihrem Projekt automatisch die rivescript-core
Abhängigkeit hinzu und löst die automatische Konfiguration aus, um die RiveScript
Bot-Instanz zu erstellen.
Obwohl die automatische Konfiguration sinnvolle Standardeinstellungen zum Erstellen der Bot-Instanz verwendet, können die folgenden Eigenschaften in Ihrer Datei application.properties
/ application.yml
(oder als Befehlszeilenschalter) angegeben werden, um das Verhalten der automatischen Konfiguration anzupassen:
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`).
Um benutzerdefinierte Java-Subroutinen und/oder nicht standardmäßig unterstützte Objekthandler automatisch in der erstellten RiveScript
Bot-Instanz zu registrieren, definieren Sie entsprechende Beans in Ihrem Anwendungskontext wie:
@ 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 ; }
Um alle JARs und Dokumente zu kompilieren, zu testen und zu erstellen, führen Sie Folgendes aus:
./gradlew build
Um alle JAR-Dateien in Ihrem lokalen Maven-Cache zu installieren, führen Sie Folgendes aus:
./gradlew install
Der Ordner /samples
enthält verschiedene Beispiele von Java RiveScript-Bot-Implementierungen.
rsbot
– RSBot.java
ist eine einfache Implementierung unter Verwendung von com.rivescript.cmd.Shell
.
Diese Befehle können an Ihrer Eingabeaufforderung in RSBot verwendet werden:
/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.
Um RSBot
auszuführen, um mit der Eliza-basierten Demo zu chatten, führen Sie Folgendes aus:
./gradlew :rivescript-samples-rsbot:runBot --console plain
spring-boot-starter-rsbot
– In diesem Beispiel wird der RiveScript Spring Boot Starter verwendet, um die RiveScript
-Bot-Instanz automatisch zu konfigurieren.
Um mit dem Demo-Bot zu chatten, führen Sie Folgendes aus:
./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.