Allons-y avec Watson Assistant (anciennement Conversation) ⑤ Créez un chatbot avec Watson + Java + Slack

Cible

Même sans aucune connaissance, nous vous amènerons au point où vous pouvez créer Slack Bot et Line Bot à l'aide de Watson.

[Mis à jour le 6 juin 2019] Ce message a été écrit à l'époque de Watson Conversation, le prédécesseur de Watson Assistant, et bien que les captures d'écran soient encore anciennes, les idées et les opérations de base de Watson Assitant Ne change pas, veuillez donc le lire comme le dernier environnement. </ font>

■ Je voudrais aborder les points suivants.

(1) Introduction à la réflexion, création d'un compte ② Méthode de conception du flux de dialogue en utilisant "Réservation d'hôtel" comme exemple ③ Utilisation du contexte, utilisation pratique de diverses fonctions non mentionnées dans le didacticiel ④ Comment créer un lien avec la logique Java ** ⑤ Créez un chatbot avec Watson + Java + Slack ** ← Cet article

Cette fois, comme la 5ème fois, j'aimerais créer ** ④ Watson + Java + Slack chatbot **.


Cette fois, nous utiliserons ** Java ** pour lier ** Watson ** et ** Slack ** pour créer un chatbot.

La coordination n'est pas particulièrement difficile, il suffit de transmettre le texte saisi par l'utilisateur dans ** Slack ** à ** Watson Conversation ** et de renvoyer le résultat à l'utilisateur.

arch.png

Code source

Exécutez le code ci-dessous pour lancer le Slack Bot. C'est la seule description. Slack et Watson travaillent maintenant ensemble.

WcsSlackBotExample00.java



public class WcsSlackBotExample00 {

    //Modifiez ici et entrez les informations d'identification Watson
    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";

    //Modifiez ici et entrez le jeton d'API du bot Slack
    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) {
                //Un message direct adressé à BOT a été publié

                SlackUser slackUser = req.getSender();

                //Contenu du message (texte)
                String userInputText = req.getContent();

                //Obtenez l'ID de l'utilisateur Slack et laissez l'ID de cet utilisateur Slack être l'ID utilisateur unique de Watson
                String wcsClientId = slackUser.getId();

                //Envoyer le texte saisi par l'utilisateur à Watson et générer Watson(outputText)Recevoir
                String botOutputText = watson.sendMessageForText(wcsClientId, userInputText);

                //Afficher la réponse de Watson dans Slack
                slackService.sendDirectMessageTo(slackUser, botOutputText);
            }
        });
        //Lancement du service slacklet(Connectez-vous à Slack)
        slackService.start();
    }
}

Exemple d'exécution

Une fois exécuté, il s'agira d'un échange de messages directs individuel avec Slackbot, comme indiqué ci-dessous. Nous allons exécuter le chat bot de Watson (flux de dialogue).

À propos, il est normal que plusieurs utilisateurs se connectent à Slackbot en même temps.

Téléchargement du code source

Le code source complet peut être trouvé dans le référentiel suivant https://github.com/riversun/watson-java-slackbot-ja

Le flux de dialogue utilise le ** Chatbot de réservation d'hôtel (amélioré) ** créé précédemment comme exemple. Vous pouvez le télécharger à partir de ce qui suit. https://riversun.github.io/wcs/org.riversun.WcsContextTestJa.zip

La description

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";

Tout d'abord, modifiez-le et entrez les informations de connexion à Watson et Slack.

  • Informations d'identification de l'espace de travail Watson Conversation (nom d'utilisateur, mot de passe, identifiant d'espace de travail) Cliquez ici pour plus de détails (http://qiita.com/riversun/items/582ef8c2ef805952d748)
  • Pour plus d'informations sur le BOT API TOKEN de Slack BOT ici


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

** nouveau ** chacun de la classe d'assistance ** WcsClient ** pour l'utilisation de Watson Conversation à partir de Java et de la classe d'assistance ** SlackletService ** pour la création de Slack Bot en Java.


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

Créez une classe de rappel ** Slacklet ** qui reçoit le ** message direct ** que l'utilisateur a envoyé au BOT dans Slack. (Pour ** Slacklet **, consultez cet article "Easy to make Slack Bot with Java")


Jetons un coup d'œil au contenu de ** public void onDirectMessagePosted (SlackletRequest req, SlackletResponse resp) **.

String userInputText = req.getContent();

Récupérez le texte saisi par l'utilisateur dans Slack avec ** # getContent **

String wcsClientId = slackUser.getId();

Obtenez l'ID utilisateur slack avec ** slackUser # getId **. Watson utilisera cet ID utilisateur tel quel comme ID unique pour identifier l'utilisateur.


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

** WcsClient # sendMessageForText ** envoie le texte saisi par l'utilisateur à Watson et reçoit la réponse (botOutputText) de Watson comme valeur de retour.

slackService.sendDirectMessageTo(slackUser, botOutputText);

Envoie la réponse de Watson sous forme de message direct à l'utilisateur.

Résumé

Nous avons vu un exemple de la façon dont Watson et Slack travaillent ensemble en Java.

J'ai pu créer un Slack Bot en utilisant Watson assez facilement, Pour rendre son utilisation encore plus facile en tant que Slack Bot En plus des messages directs, vous pouvez rejoindre BOT sur la chaîne Je pense que c'est une bonne idée de parler à BOT à @mention et de faire preuve d'ingéniosité. (Le savoir-faire à ce sujet est résumé dans Easy to make Slack Bot with Java.)

La prochaine fois, nous lierons ** LINE ** (LINE BOT) et ** Watson **.

Recommended Posts

Allons-y avec Watson Assistant (anciennement Conversation) ⑤ Créez un chatbot avec Watson + Java + Slack
C'est parti avec Watson Assistant (anciennement Conversation) ② Faire un chatbot de réservation d'hôtel
Allons-y avec Watson Assistant (anciennement Conversation) ④ Comment créer un lien avec la logique Java
Créons un processus chronométré avec la minuterie de Java! !!
Allons-y avec Watson Assistant (anciennement Conversation) ① Introduction Quelle est l'idée et l'intention de comprendre l'application interactive?
Watson Assistant (anciennement Conversation) sur Android
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Créez un tableau d'affichage simple avec Java + MySQL
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
[Java] Créer une collection avec un seul élément
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
Créons une application TODO en Java 11 Gestion des exceptions lors de l'accès à un TODO avec un ID inexistant
[Java] Créons un Minecraft Mod 1.14.4 [0. Fichier de base]
[Java] Créons un Minecraft Mod 1.14.4 [4. Ajouter des outils]
[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]
[Java] Créons un Minecraft Mod 1.14.4 [7. Add progress]
[Java] Créons un Minecraft Mod 1.14.4 [6. Ajouter une recette]
[Débutant] Créez un jeu compétitif avec des connaissances de base sur Java
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un élément]
[Bases de Java] Créons un triangle avec une instruction for
[Java] Créons un Minecraft Mod 1.14.4 [1. Ajouter un élément]
[Java] Créons un Minecraft Mod 1.14.4 [2. Ajouter un bloc]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un bloc]
[Java] Créer un filtre
Raclons avec Java! !!
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
[Java] Créons un Minecraft Mod 1.14.4 [3. Ajouter un onglet de création]
Créer un SlackBot avec AWS lambda et API Gateway en Java
[Java] Remplaçons les objets de données par un mappeur ~ BeanMapper Orika ~
Expérimentons l'expansion en ligne Java
Exploitons Excel avec Java! !!
Créer une méthode java [Memo] [java11]
[Java] Créer un fichier temporaire
Créez un terrain de jeu avec Xcode 12
Créez un serveur Web simple avec la bibliothèque standard Java com.sun.net.httpserver
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Je ne peux pas créer une classe Java avec un nom spécifique dans IntelliJ
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créez une énumération haute performance avec des champs et des méthodes comme Java avec JavaScript
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter et générer des arbres]
[Java] Créons un Minecraft Mod 1.14.4 [9. Ajouter et générer des arbres]
Créons une application TODO avec Java 1 Brève explication de MVC
Créons une application TODO en Java 5 Changer l'affichage de TODO
Créez une application de recherche de restaurant avec l'API IBM Watson + Guru Navi (avec source)
[Java] Créons un Minecraft Mod 1.14.4 [8. Ajouter et générer du minerai]
Créons un mécanisme polymorphe de paramètres avec Generic Dao et Hibernate