Génération d'un Slackbot basé sur une base de données
Ce tutoriel peut entraîner des coûts. Utilisez l'Estimateur de coûts pour générer une estimation du coût en fonction de votre utilisation projetée.
Dans ce tutoriel, vous allez construire un Slackbot qui permet de rechercher et de créer des entrées dans une base de données IBM Db2 SaaS de back end. Slackbot est pris en charge par le service IBM® watsonx™ Assistant. Vous intégrez Slack et IBM® watsonx™ Assistant à l'aide d'une intégration d'assistant. IBM Db2 SaaS est mis à la disposition de watsonx Assistant en tant qu'extension personnalisée.
L'intégration Slack envoie des messages entre Slack et watsonx Assistant. Une extension personnalisée, écrite en Python et déployée en tant qu'application Code Engine sans serveur, expose une API REST sur le système de back end de la base de données.
Objectifs
- Générez un chatbot à l'aide de watsonx Assistant qui interagit avec un système de back end de base de données
- Connecter watsonx Assistant à Slack à l'aide d'une intégration
- Créez et déployez une application de base de données Python sur Code Engine
- Accédez à une base de données IBM Db2 SaaS via une extension personnalisée watsonx Assistant
- L'utilisateur interagit avec IBM® watsonx™ Assistant, soit via Slack, soit via un client de discussion Web.
- Le chatbot utilise une extension personnalisée avec l'API REST déployée en tant qu'application Python sous Code Engine
- L'application d'extension personnalisée extrait et insère des données dans une base de données IBM Db2 SaaS
Avant de commencer
Pour ce tutoriel, vous devez disposer des éléments suivants :
- IBM Cloud CLI,
- Plug-in Code Engine,
- de
git
pour cloner le référentiel de code source. jq
pour interroger les données JSON.
Pour éviter l'installation de ces outils, vous pouvez utiliser Cloud Shell à partir de la console IBM Cloud.
Vous trouverez des instructions de téléchargement et d'installation de ces outils pour votre environnement d'exploitation dans le document Démarrer avec les tutoriels.
Configurez des services et déployez le système de back end
Dans cette section, vous allez configurer les services nécessaires et déployer l'application de back end. Toute cette procédure peut être réalisée à partir de l'interface de ligne de commande (CLI) dans un terminal.
-
Clonez le dépôtGitHub et naviguez dans le répertoire cloné :
git clone https://github.com/IBM-Cloud/slack-chatbot-database-watson cd slack-chatbot-database-watson
-
Si vous n'êtes pas connecté, utilisez
ibmcloud login
ouibmcloud login --sso
pour vous connecter de manière interactive. Veillez à cibler la région et le groupe de ressources avec lesquels travailler. Il sera utilisé pour créer les services et les actions. Vous pouvez dresser la liste de vos groupes de ressources disponibles à l'aide de la commandeibmcloud resource groups
.ibmcloud target -r <region> -g <resource group>
Utilisez
ibmcloud target -g default
pour passer aux groupe de ressources par défaut. -
Créez une instance IBM Db2 SaaS et nommez-la eventDB. Adaptez la région us-south à votre région, par exemple eu-de.
ibmcloud resource service-instance-create eventDB dashdb-for-transactions free us-south
Vous pouvez également utiliser un autre plan que le plan (Lite) gratuit. Le plan gratuit n'est pas disponible partout. Attendez que le service soit mis à disposition. Pour plus d'instructions, voir la sortie de la commande ci-dessus. Vous pouvez également exécuter la commande suivante pour vérifier le statut :
ibmcloud resource service-instance eventDB
-
Pour accéder ultérieurement au service de base de données à partir de l'application Code Engine, vous avez besoin de l'autorisation appropriée. Vous créez alors des données d'identification du service et les étiquetez slackbotkey :
ibmcloud resource service-key-create slackbotkey Manager --instance-name eventDB --output json > slackbotkey.json
Le fichier slackbotkey.json contient le fichier
service key
également appeléservice credentials
. Ce fichier texte en clair contient le mot de passe d'administration et les chaînes de connexion pour l'instance de service eventDB.La sortie est stockée dans le fichier
slackbotkey.json
et nécessaire à cette étape. Exécutez cette commande pour extraire l'URL de connexion à la base de données :jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json
Il sera référencé en tant que $DB2_URI et peut être stocké dans une variable shell si elle est prise en charge sur votre poste de travail ou sur votre cloud shell et exporté si vous exécutez l'application en local.
export DB2_URI=$(jq -r '.credentials.connection.db2 | "ibm_db_sa://" + (.authentication.username + ":" + .authentication.password + "@" + .hosts[0].hostname + ":" + (.hosts[0].port | tostring) + "/" + .database + "?Security=SSL;")' slackbotkey.json) echo $DB2_URI
La sortie doit être au format suivant:
ibm_db_sa://username:password@database-hostname:port/bludb?Security=SSL;
et se trouve dans la variable de shell DB2_URI. -
Créez une instance du service watsonx Assistant. Utilisez eventAssistant comme nom et le forfait gratuit Lite. Adaptez us-south à votre emplacement.
ibmcloud resource service-instance-create eventAssistant conversation free us-south
-
Déployez l'image de conteneur préconfigurée avec l'extension personnalisée en tant qu'application Code Engine. Tout d'abord, créez un projet :
ibmcloud ce project create --name slackbot
Sélectionnez ensuite le projet comme projet actif:
ibmcloud ce project select --name slackbot
Déployez ensuite l'application et nommez-la slackbot-backend. Remplacez la valeur de API_TOKEN (MY_SECRET). Utilisez votre propre texte pour MY_SECRET si vous le souhaitez et effectuez des substitutions dans toutes les étapes ultérieures. Il est utilisé pour sécuriser les appels à l'API REST.
ibmcloud ce app create --name slackbot-backend --image icr.io/solution-tutorials/tutorial-slack-chatbot-database:latest --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"
Notez l'URI indiquée pour l'application. Il est référencé dans les étapes suivantes en tant que $APP_URL. Vous pouvez utiliser une variable shell:
APP_URL=$(ibmcloud ce app get -n slackbot-backend --output json | jq -r .status.url) echo $APP_URL
Au lieu de déployer une image de conteneur préconfigurée, vous pouvez également générer et déployer votre propre image à partir du code fourni. Vous pouvez modifier la commande de création pour générer à partir de la source:
ibmcloud ce app create --name slackbot-backend --build-source . --min-scale 1 -e API_TOKEN=MY_SECRET -e DB2_URI="$DB2_URI"
à l'aide du fichierDockerfile
qui se trouve dans le référentiel. Pour plus d'informations, voir la documentation Code Engine sur le déploiement de votre application à partir du code source local. Etant donné que vous n'utilisez pas l'image de conteneur publique, mais la vôtre, vous devez également configurer un secret de registre. -
Testez le déploiement en appelant une API REST fournie par l'application pour (re)créer le schéma de base de données et insérer quelques enregistrements d'exemple.
curl -X 'POST' "$APP_URL/database/recreate" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
La demande ci-dessus doit renvoyer un message d'erreur indiquant que la confirmation est manquante. Essayez à nouveau avec un paramètre de requête :
curl -X 'POST' "$APP_URL/database/recreate?confirmation=True" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
La demande doit aboutir et indiquer que la base de données a été recréée. Heure d'un autre test :
curl -X 'GET' "$APP_URL/events" -H 'accept: application/json' -H 'API_TOKEN: MY_SECRET'
-
Notez l'ID de projet qui sera requis lors d'une étape ultérieure.
ibmcloud ce app get -n slackbot-backend --output json | jq -r .metadata.namespace
Création d'un assistant
Dans cette partie du tutoriel, vous allez travailler avec le service watsonx Assistant Tout d'abord, vous créez un nouvel assistant. Ensuite, vous créez l'extension personnalisée et l'ajoutez à l'assistant. Par la suite, vous allez créer des actions et les tester à l'aide de l'aperçu Web. Enfin, vous intégrez le chatbot avec Slack et réalisez d'autres tests.
-
Dans la liste de ressources IBM Cloud, ouvrez la vue d'ensemble de vos services. Localisez l'instance du service watsonx Assistant sous la section AI / Machine Learning. Cliquez sur son entrée pour ouvrir les détails du service.
-
Cliquez sur Launch Watson Assistant pour accéder à l'outil watsonx Assistant.
-
Dans la boîte de dialogue de bienvenue, créez un nouvel assistant en utilisant slackbot comme nom d'assistant, puis cliquez sur Suivant pour commencer la personnalisation.
-
Pour la première question sur le déploiement, choisissez Web.
-
Pour les autres questions, répondez pour votre rôle ou avec Autre / Pas sûr pour l'instant.
-
Cliquez sur Suivant pour avoir la possibilité de personnaliser l'interface utilisateur du chat si vous le souhaitez.
-
Cliquez sur Suivant et finalisez en cliquant sur Créer.
La nouvelle page inclut une visite guidée que vous pouvez terminer si vous découvrez watsonx Assistant.
Ajouter et configurer une extension personnalisée
Ensuite, vous allez ajouter, puis configurer une extension personnalisée pour watsonx Assistant et l'assistant nouvellement créé.
- Dans le tableau de bord situé en bas à gauche, cliquez sur Intégrations, puis sur Générer une extension personnalisée sous Extensions.
- Dans la boîte de dialogue multi-étapes, cliquez sur Suivant, puis entrez événements comme Nom d'extension et API pour la base de données d'événements comme Description de l'extension. Cliquez sur Next.
- Sélectionnez et téléchargez le fichier local slackbot-openapi-spec.json, puis cliquez sur Suivant.
- La dernière étape vous permet de passer en revue l'extension avec les serveurs et opérations inclus. Une fois cela fait, cliquez sur Terminer.
- De retour sur la page Intégrations, vous remarquerez la nouvelle mosaïque événements dans la section Extensions. Cliquez sur Ajouter sur cette mosaïque pour configurer l'extension pour l'assistant.
- La nouvelle boîte de dialogue commence par un bref aperçu. Cliquez sur Suivant pour accéder à la configuration réelle. Dans la liste déroulante de Type d'authentification, sélectionnez Authentification de clé de l'API et entrez votre clé d'API (remplacement de MY_SECRET).
- Pour les variables Variables de serveur, utilisez votre région de déploiement, slackbot-backend comme Nom d'application et le Code Engine projectid de votre application. Par la suite, l'URL générée doit correspondre à celle de votre application Code Engine. Lorsque vous avez terminé, cliquez sur Suivant pour accéder à la page de révision, puis sur Terminer et Fermer pour revenir à la page Intégrations.
Créer la première action
Tout d'abord, vous allez créer une action pour extraire des informations sur un événement unique identifié par son nom.
-
En haut à gauche, cliquez sur Actions et sur la page d'accueil sur Créer une action.
-
Cliquez sur la tuile Recommencer à zéro.
-
Dans la boîte de dialogue Nouvelle action, entrez Afficher les détails de l'événement comme exemple et cliquez sur Sauvegarder.
-
L'écran suivant affiche l'éditeur d'étape pour l'action avec l'Étape 1 ouverte. Dans Assistant, entrez Quel est le nom de l'événement ?. Ensuite, pour Définir la réponse du client, sélectionnez l'option Texte libre. Laissez Et puis pour Passer à l'étape suivante.
-
Cliquez sur Nouvelle étape dans la partie inférieure gauche pour ajouter l'Étape 2. Laissez les premières parties (Assistant:, Définir la réponse du client) inchangées, mais sous Et puis , sélectionnez Utiliser une extension. Dans la liste déroulante, sélectionnez l'extension événements et son opération Enregistrement d'événement par nom . Par la suite, Paramètres affiche les entrées possibles. A l'aide de la liste déroulante, affectez à Set short_name la valeur **Variables d'étape d'action > 1. Quel est le nom de l'événement Il fait référence à l'entrée client de l'étape précédente. Cliquez sur Appliquer pour terminer cette étape.
-
Ajoutez une Nouvelle étape. Dans la partie supérieure, modifiez la sélection de façon à ce que l'Étape 3 soit acceptée avec la condition. Sous Conditions et If, sélectionnez 2 s'est exécuté avec succès. Il se réfère à un résultat issu de l'utilisation de l'extension à l'étape 2.
-
Sous Assistants, vous pouvez composer la réponse avec les détails de l'événement en faisant référence aux zones de sortie de l'appel d'API envoyés à l'application déployée. Utilisez J'ai reçu les détails de l'événement : suivi de la clé
Enter
pour accéder à la ligne suivante. L'éditeur prend en charge le format Markdown. Par conséquent, utilisez la clé-
pour créer une liste à puces. Ajoutez un élément de liste avec Nom :, puis cliquez sur l'icône Insérer une variable. Dans la liste déroulante, sélectionnez 2 body.shortname. Utilisez à nouveau la cléEnter
pour accéder à une nouvelle ligne avec un élément de liste. Ajoutez Emplacement : avec 2 body.location à partir de la liste déroulante des variables. Répétez les étapes pour Commence, Se termine et Contact. Une fois terminé, définissez Et puis sur Mettre fin à l'action. -
Pour gérer les erreurs dans l'extension, créez une autre étape avec une condition. Maintenant, laissez l'étape réagir à 2 s'est exécuté avec succès avec la valeur false. Laissez l'Assistant dire Désolé, il y a eu un problème, puis mpetetz de nouveau fin à l'action.
Par souci de simplicité, les erreurs et les conditions telles que les résultats vides ne sont pas toutes traitées.
-
Cliquez sur l'icône Sauvegarder située en haut à droite, puis sur le X en regard de celle-ci pour fermer l'éditeur d'étape.
-
En bas à droite, sélectionnez Aperçu pour tester la boîte de dialogue.
-
Dans la discussion, entrez show me event details et soumettez. Le robot devrait répondre Quel est le nom de l'événement ? Maintenant, tapez Think et soumettez. Comme l'application dorsale utilise une recherche par caractères génériques, elle devrait trouver l'exemple d'événement portant le nom Think 2022 et renvoyer les détails (voir la capture d'écran ci-dessous).

Vous pouvez cliquer sur Inspecter pour afficher des détails sur l'utilisation de l'extension personnalisée. Vous pouvez vérifier les variables d'entrée et de sortie et la façon dont la fonction d'API de l'extension est appelée.
Action de collecte de données et d'insertion d'un nouvel enregistrement
Tout comme pour l'extraction d'un enregistrement, il est possible de collecter des informations sur un événement et d'ajouter ces données via l'extension personnalisée.
-
Passez à Actions et Créé par vous. Cliquez sur New action.
-
Cliquez sur la tuile Recommencer à zéro.
-
Dans la boîte de dialogue Nouvelle action, entrez add new event et Save.
-
Utilisez l'option Comment voulez-vous nommer l'événement ? pour l'assistant. Le client répond à nouveau par un texte gratuit.
-
Ajoutez une Nouvelle étape et faites dire à l'Assistant : Où est l'événement ?. Encore une fois, le client peut répondre avec du Texte libre.
-
Ajoutez une autre étape et demandez " Quand l'événement commence-t-il ?", mais utilisez " Date" pour définir la réponse du client.
-
Répétez l'opération, mais avec la mention " Quand l'événement se termine-t-il ?
-
Enfin, dans une nouvelle étape, demandez Quelle est l'URL (adresse web) de l'événement ? et laissez le client répondre par un texte libre.
-
Maintenant, pour confirmer l'entrée, créez une nouvelle étape. Utilisez Est-ce exact ? et la liste à puces affiche les données collectées. Ajoutez un élément pour le nom, l'emplacement, le début, la fin et le contact et utilisez des variables d'action relatives aux étapes de saisie des données (voir la capture d'écran ci-dessous). Utilisez Confirmation comme type de réponse client.
Etape de confirmation -
Ajoutez une nouvelle étape ayant la condition que la confirmation précédente soit Non. L'assistant peut dire OL, recommençons de zéro. Définissez Et puis sur Redemander la ou les étapes précédentes et sélectionnez toutes les étapes précédentes.
-
Dans une nouvelle étape, qui doit être l'étape 8, réagissez à la confirmation lorsque celle-ci est Oui. Sous Et puis, sélectionnez Utiliser une extension. Configurez l'extension d'événements avec Insérer un nouvel enregistrement d'événement en tant qu'opération. Faites correspondre les paramètres aux variables d'action pour les étapes, par exemple, shortname à . Comment voulez-vous nommer l'événement ?
-
Créer une nouvelle étape dont la condition 8 Ran est vraie. Laissez l'assistant dire Un nouvel enregistrement avec l'ID VARIABLE a été créé. Pour VARIABLE, sélectionnez 8 body.eid dans les événements (Étape 8). Arrêtez l'action sous Et puis.
-
Créez une nouvelle étape avec la condition pour que 8 Ran réussisse étant fausse. Utilisez quelque chose comme Il semble qu'il y ait eu un problème lors de la création du nouvel enregistrement d'événement pour l'assistant à dire et à terminer l'action sous Et ensuite. Sauvegardez et fermez l'action à l'aide des icônes en haut à droite.
-
Sauvegardez l'action et testez la nouvelle action en cliquant sur Aperçu à gauche et en utilisant le webchat. Entrez add new event et soumettez. Lorsque vous y êtes invité par le bot, entrez Ma conférence comme nom, Bureau à domicile comme emplacement, sélectionnez les dates de début et de fin et utilisez http://localhost comme URL. Par la suite, confirmez que les données sont correctes.
Lors de la création d'un chatbot, vous pouvez souhaiter publier un chatbot. Il s'agit de la diffusion contrôlée d'une version qui permet de revenir sur des modifications et de poursuivre le développement sans affecter le chatbot qui interagit avec des clients réels.
Intégration avec Slack
Vous allez maintenant intégrer le chatbot à Slack.
- Dans la partie inférieure gauche, cliquez sur Intégrations.
- Dans la présentation des intégrations, dans la section Canaux, recherchez Slack et cliquez sur Ajouter.
- Suivez les instructions étape par étape pour intégrer l'environnement Brouillon de votre chatbot à Slack. Pour en savoir plus à ce sujet, consultez la rubrique Integrating with Slack.
- Une fois terminé, ouvrez votre espace de travail Slack. Commencez une discussion directe avec le bot et dites Afficher les détails de l'événement. Ensuite, comme ci-dessus, répondez par Think lorsque vous êtes invité à entrer un nom d'événement.

Suppression de ressources
Pour nettoyer les ressources de ce tutoriel, accédez au répertoire Liste de ressources IBM Cloud. Recherchez les instances de service de watsonx Assistant et IBM Db2 SaaS et supprimez-les. De même, recherchez le projet Code Engine et supprimez-le.
En fonction de la ressource, le service peut ne pas être supprimé immédiatement mais conservé un certain temps (7 jours par défaut). Pour récupérer la ressource, vous pouvez la supprimer de manière définitive ou la restaurer pendant la période de conservation. Pour savoir comment utiliser la récupération de ressources, consultez ce document.
Contenu connexe
Voici des ressources supplémentaires sur les sujets abordés dans ce tutoriel.