Los geht's mit Watson Assistant (ehemals Conversation) ⑤ Erstellen Sie einen Chatbot mit Watson + Java + Slack

Ziel

Wir bringen Sie an den Punkt, an dem Sie mit Watson Slack Bot und Line Bot auch ohne Wissen erstellen können.

[Aktualisiert am 6. Juni 2019] Dieser Beitrag wurde während der Watson Conversation-Ära, dem Vorgänger von Watson Assistant, verfasst. Obwohl Screenshots noch alt sind, sind die grundlegenden Ideen und Operationen von Watson Assitant noch nicht abgeschlossen Ändert sich nicht, lesen Sie es daher bitte als neueste Umgebung. </ font>

■ Ich möchte Folgendes ansprechen.

(1) Einführung in das Denken, Erstellen eines Kontos ② Entwurfsmethode für den Dialogfluss am Beispiel "Hotelreservierung" ③ Verwendung des Kontexts, praktische Verwendung verschiedener Funktionen, die im Lernprogramm nicht erwähnt werden ④ Verknüpfung mit Java-Logik ** ⑤ Erstelle einen Chatbot mit Watson + Java + Slack ** ← Dieser Artikel

Dieses Mal möchte ich als fünftes Mal ** ④ Watson + Java + Slack Chatbot ** machen.


Dieses Mal werden wir ** Java ** verwenden, um ** Watson ** zu verknüpfen, und ** Slack **, um einen Chatbot zu erstellen.

Die Koordination ist nicht besonders schwierig. Übergeben Sie einfach den vom Benutzer in ** Slack ** eingegebenen Text an ** Watson Conversation ** und geben Sie das Ergebnis erneut an den Benutzer zurück.

arch.png

Quellcode

Führen Sie den folgenden Code aus, um den Slack Bot zu starten. Dies ist die einzige Beschreibung. Slack und Watson arbeiten jetzt zusammen.

WcsSlackBotExample00.java



public class WcsSlackBotExample00 {

    //Bearbeiten Sie hier und geben Sie Watson-Anmeldeinformationen ein
    private static final String WATSON_CONVERSATION_USERNAME = "EDIT_ME_USERNAME_HERE";
    private static final String WATSON_CONVERSATION_PASSWORD = "EDIT_ME_PASSWORD_HERE";
    private static final String WATSON_CONVERSATION_WORKSPACE_ID = "EDIT_ME_WORKSPACE_ID_HERE";

    //Bearbeiten Sie hier und geben Sie das Slack-Bot-API-Token ein
    private static final String SLACK_BOT_API_TOKEN = "EDIT_ME_SLACK_API_TOKEN";

    public static void main(String[] args) throws IOException {

        final WcsClient watson = new WcsClient(
                WATSON_CONVERSATION_USERNAME,
                WATSON_CONVERSATION_PASSWORD,
                WATSON_CONVERSATION_WORKSPACE_ID);

        SlackletService slackService = new SlackletService(SLACK_BOT_API_TOKEN);
        slackService.addSlacklet(new Slacklet() {
            @Override
            public void onDirectMessagePosted(SlackletRequest req, SlackletResponse resp) {
                //Eine direkte Nachricht an BOT wurde gesendet

                SlackUser slackUser = req.getSender();

                //Nachrichteninhalt (Text)
                String userInputText = req.getContent();

                //Holen Sie sich die ID des Slack-Benutzers und lassen Sie die ID dieses Slack-Benutzers die eindeutige Benutzer-ID von Watson sein
                String wcsClientId = slackUser.getId();

                //Senden Sie vom Benutzer eingegebenen Text an Watson und geben Sie Watson aus(outputText)Bekommen
                String botOutputText = watson.sendMessageForText(wcsClientId, userInputText);

                //Zeigen Sie die Antwort von Watson in lockerem Zustand an
                slackService.sendDirectMessageTo(slackUser, botOutputText);
            }
        });
        //Slacklet-Service gestartet(Mit Slack verbinden)
        slackService.start();
    }
}

Ausführungsbeispiel

Bei der Ausführung handelt es sich um einen direkten Eins-zu-Eins-Nachrichtenaustausch mit Slackbot, wie unten gezeigt. Wir werden Watsons Chat-Bot ausführen (Dialogfluss).

Übrigens ist es in Ordnung, wenn mehrere Benutzer gleichzeitig eine Verbindung zu Slackbot herstellen.

Quellcode herunterladen

Der vollständige Quellcode befindet sich im folgenden Repository https://github.com/riversun/watson-java-slackbot-ja

Der Dialogfluss verwendet als Beispiel den Chatbot ** Hotelreservierung (erweitert) **, der von Zurück erstellt wurde. Sie können es von folgenden herunterladen. https://riversun.github.io/wcs/org.riversun.WcsContextTestJa.zip

Erläuterung

private static final String WATSON_CONVERSATION_USERNAME = "EDIT_ME_USERNAME_HERE";
private static final String WATSON_CONVERSATION_PASSWORD = "EDIT_ME_PASSWORD_HERE";
private static final String WATSON_CONVERSATION_WORKSPACE_ID = "EDIT_ME_WORKSPACE_ID_HERE";

private static final String SLACK_BOT_API_TOKEN = "EDIT_ME_SLACK_API_TOKEN";

Bearbeiten Sie es zuerst und geben Sie die Verbindungsinformationen zu Watson und Slack ein.

  • Anmeldeinformationen für den Watson Conversation-Arbeitsbereich (Benutzername, Kennwort, Arbeitsbereich-ID) Klicken Sie hier, um weitere Informationen zu erhalten (http://qiita.com/riversun/items/582ef8c2ef805952d748).
  • Weitere Informationen zum BOT API TOKEN von Slack BOT hier


final WcsClient watson = new WcsClient(
   WATSON_CONVERSATION_USERNAME,
   WATSON_CONVERSATION_PASSWORD,
   WATSON_CONVERSATION_WORKSPACE_ID);
        
SlackletService slackService = new SlackletService(SLACK_BOT_API_TOKEN);

** neu ** jede der Hilfsklassen ** WcsClient ** für die Verwendung von Watson Conversation aus Java und die Hilfsklasse ** SlackletService ** für die Erstellung von Slack Bot in Java.


 slackService.addSlacklet(new Slacklet() {
            @Override
            public void onDirectMessagePosted(SlackletRequest req, SlackletResponse resp) {
・ ・ ・ ・ ・ ・ ・
            }
         });

Erstellen Sie eine Rückrufklasse ** Slacklet **, die die ** Direktnachricht ** empfängt, die der Benutzer in Slack an den BOT gesendet hat. (Informationen zu ** Slacklet ** finden Sie in diesem Artikel „Einfach, Slack Bot mit Java zu erstellen“)


Werfen wir einen Blick auf den Inhalt von ** public void onDirectMessagePosted (SlackletRequest req, SlackletResponse resp) **.

String userInputText = req.getContent();

Holen Sie sich den vom Benutzer in Slack eingegebenen Text mit ** # getContent **

String wcsClientId = slackUser.getId();

Holen Sie sich die Slack-Benutzer-ID mit ** slackUser # getId **. Diese Benutzer-ID wird von Watson unverändert als eindeutige ID zur Identifizierung des Benutzers verwendet.


String botOutputText = watson.sendMessageForText(wcsClientId, userInputText);

** WcsClient # sendMessageForText ** sendet den vom Benutzer eingegebenen Text an Watson und empfängt die Antwort (botOutputText) von Watson als Rückgabewert.

slackService.sendDirectMessageTo(slackUser, botOutputText);

Die Antwort von Watson wird als direkte Nachricht an den Benutzer gesendet.

Zusammenfassung

Wir haben ein Beispiel dafür gesehen, wie Watson und Slack in Java zusammenarbeiten.

Ich konnte mit Watson relativ einfach einen Slack Bot erstellen. Um die Verwendung als Slack Bot noch einfacher zu machen Zusätzlich zu Direktnachrichten können Sie BOT mit dem Kanal verbinden Ich denke, es ist eine gute Idee, mit BOT bei @mention zu sprechen und verschiedene Einfallsreichtümer zu entwickeln. (Das Know-how dazu ist in Easy to make Slack Bot mit Java zusammengefasst.)

Das nächste Mal werden wir als Fortsetzung ** LINE ** (LINE BOT) und ** Watson ** verknüpfen.

Recommended Posts

Los geht's mit Watson Assistant (ehemals Conversation) ⑤ Erstellen Sie einen Chatbot mit Watson + Java + Slack
Gehen wir mit Watson Assistant (ehemals Conversation). ② Erstellen Sie einen Chatbot für die Hotelreservierung
Gehen wir zu Watson Assistant (ehemals Conversation). ④ Verknüpfung mit Java-Logik
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
Gehen wir zu Watson Assistant (ehemals Conversation). ① Einführung Was ist die Idee und das Absichtsverständnis der interaktiven Anwendung?
Watson Assistant (ehemals Conversation) auf Android
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Erstellen Sie mit Java + MySQL ein einfaches Bulletin Board
[Windows] [IntelliJ] [Java] [Tomcat] Erstellen Sie mit IntelliJ eine Umgebung für Tomcat 9
[Java] Erstellen Sie eine Sammlung mit nur einem Element
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Einführung]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [99. Mod-Ausgabe]
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [0. Basisdatei]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [4. Tools hinzufügen]
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [5. Rüstung hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [7. Fortschritt hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [6. Rezept hinzufügen]
[Anfänger] Erstellen Sie ein wettbewerbsfähiges Spiel mit grundlegenden Java-Kenntnissen
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Element hinzufügen]
[Java-Grundlagen] Lassen Sie uns ein Dreieck mit einer for-Anweisung erstellen
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [1. Element hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [2. Fügen Sie einen Block hinzu]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Block hinzufügen]
[Java] Erstellen Sie einen Filter
Lass uns mit Java kratzen! !!
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [3. Registerkarte "Creative hinzufügen"]
Erstellen Sie einen SlackBot mit AWS Lambda & API Gateway in Java
[Java] Ersetzen wir Datenobjekte durch einen Mapper ~ BeanMapper Orika ~
Experimentieren wir mit der Java-Inline-Erweiterung
Lassen Sie uns Excel mit Java betreiben! !!
Erstellen Sie eine Java-Methode [Memo] [java11]
[Java] Erstellen Sie eine temporäre Datei
Erstellen Sie einen Spielplatz mit Xcode 12
Erstellen Sie einen einfachen Webserver mit der Java-Standardbibliothek com.sun.net.httpserver
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Ich kann in IntelliJ keine Java-Klasse mit einem bestimmten Namen erstellen
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Erstellen Sie mit JavaScript eine leistungsstarke Aufzählung mit Feldern und Methoden wie Java
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Bäume hinzufügen und generieren]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [9. Bäume hinzufügen und generieren]
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Erstellen Sie eine Restaurant-Such-App mit der IBM Watson + Guru Navi-API (mit Quelle).
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [8. Erz hinzufügen und erzeugen]
Lassen Sie uns mit Generic Dao und Hibernate einen Parameter-Polymorph-Mechanismus erstellen