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.
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();
}
}
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.
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
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.
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.
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