Ce référentiel ne sera pas mis à jour. Le référentiel restera disponible en mode lecture seule.
Dans ce modèle de code, nous utiliserons la fonctionnalité Watson Assistant Slots pour créer un chatbot qui prend une commande de pizza. Les informations nécessaires telles que la taille, le type et les choix d'ingrédients peuvent toutes être saisies dans un seul nœud Assistant, contrairement aux versions précédentes d'Assistant.
Lorsque le lecteur aura terminé ce modèle de code, il comprendra comment :
REMARQUE : ce modèle de code a été mis à jour pour inclure des instructions permettant d'accéder à Watson Assistant exécuté sur IBM Cloud Pak for Data. Ces mises à jour se trouvent dans les instructions spécifiques au déploiement de votre application localement ou au déploiement de votre application sur OpenShift on IBM Cloud. Le principal changement requis est que votre application aura besoin d'informations d'identification supplémentaires pour accéder au cluster IBM Cloud Pak for Data qui héberge le service Watson Assistant.
Cliquez ici pour plus d'informations sur IBM Cloud Pak for Data.
REMARQUE : ce modèle de code utilise l'expérience Watson Assistant. Après le 8 octobre 2021, toutes les instances (non standard) peuvent basculer entre les expériences Watson Assistant classique et nouvelle en accédant au coin supérieur droit de l'écran Watson Assistant et en cliquant sur l'icône Gérer . situé dans le coin supérieur droit de l’écran Assistant. Cliquez sur Passer à l'expérience classique ou cliquez sur Passer à une nouvelle expérience afin de basculer entre les deux.
Utilisation de Cloud Foundry sur IBM Cloud | Utilisation du service Kubernetes d'IBM Cloud |
---|---|
Cliquez sur l'une des options ci-dessous pour obtenir des instructions sur le déploiement de l'application.
La puissance des Slots réside dans la manière dont ils réduisent le nombre de nœuds requis pour implémenter la logique dans votre boîte de dialogue Watson Assistant. Voici une boîte de dialogue de conversation partielle utilisant l'ancienne méthode :
Et voici un dialogue plus complet utilisant des slots, qui met toute la logique dans le nœud Pizza ordering
.
Ouvrez la boîte de dialogue et nous y jetterons un œil :
Chaque emplacement représente un champ à renseigner dans le chatbot : pizza_size
, pizza_type
et pizza_topings
. S'ils ne sont pas présents, l'utilisateur sera invité, en commençant par le haut, jusqu'à ce qu'ils soient tous renseignés via la variable associée ( $pizza_size
, $pizza_type
, etc.).
Cliquez sur Configurer pour ajouter plus de fonctionnalités :
Ici, nous pouvons ajouter une réponse lorsque cet emplacement est rempli (Trouvé). La logique peut être utilisée pour un ingrédient :
ou s'il y a plus d'un ingrédient ajouté :
Nous avons ajouté une logique pour répondre par oui ou par non à la question « Des garnitures supplémentaires ? » :
Cliquez sur les 3 cercles et choisissez Open JSON editor
pour éditer le json directement :
Ici, nous avons défini une valeur vide pour le champ context : {"pizza_topings"}, afin que nous puissions quitter la boucle en remplissant cet emplacement.
Enfin, nous ajoutons les réponses une fois que les emplacements sont tous remplis :
On commence par le cas où on a "pizza_toppings", en détectant que le tableau a une taille>0. Ici, nous traitons d'abord le cas où l'emplacement facultatif "pizza_place" est rempli, puis traitons le cas où il ne l'est pas.
Enfin, nous ajoutons un gestionnaire pour le cas où les réponses de l'utilisateur à une invite ne sont pas trouvées. Nous avons ajouté un gestionnaire pour l'intention « aide ».
Nous avons un nœud de dialogue pour gérer l'intention #reset
qui réinitialisera tous les champs à null
:
Regardons un exemple de conversation et le json associé. Pendant que votre Watson Pizzeria est en cours d'exécution, démarrez une boîte de dialogue et commencez par dire au Pizza Bot que vous voulez une grande pizza :
La « Saisie utilisateur » vous montre le champ « input » {« text »}, ainsi que le « contexte » qui est principalement utilisé par l'Assistant pour suivre l'état interne. Faites défiler jusqu'à Watson Understands
et examinez intents
:
Notez que l'intention de « commande » est détectée. L'entité "pizza_size" est désormais un slot qui est rempli. Il nous reste 2 emplacements requis, "pizza_type" et "pizza_toppings". L'utilisateur sera invité jusqu'à ce que ceux-ci soient remplis :
Nous pouvons maintenant voir que tous les emplacements requis sont remplis :
Et si on voulait dire à la Watson Pizzeria qu'on voulait manger la pizza là-bas, au restaurant ? Trop tard ! l'emplacement pour "pizza_place" est facultatif, donc l'utilisateur ne sera pas invité à le saisir, et une fois les emplacements requis remplis, nous quittons le nœud de dialogue "Commande de pizza". L'utilisateur doit d'abord remplir les emplacements facultatifs. Tapez reset pour recommencer et testez cela en ajoutant la phrase "pour y manger..." :
cf push
donne : FAILED Could not find service <Watson_service> to bind to <IBM_Cloud_application>
Si vous nommez votre service wcsi-conversation-service
, cela devrait fonctionner. Lorsque vous utilisez cf push
, il essaie de se lier aux services répertoriés dans manifest.yml
.
Il y a donc 2 façons de faire fonctionner cela :
REMARQUE : Le bouton
Deploy to IBM Cloud
résout ce problème en créant les services à la volée (avec les noms corrects).
Ce modèle de code est sous licence Apache Software License, version 2. Les objets de code tiers distincts invoqués dans ce modèle de code sont concédés sous licence par leurs fournisseurs respectifs conformément à leurs propres licences distinctes. Les contributions sont soumises au certificat d'origine du développeur, version 1.1 (DCO) et à la licence du logiciel Apache, version 2.
FAQ sur la licence logicielle Apache (ASL)