Dieses Repository wird nicht aktualisiert. Das Repository bleibt im schreibgeschützten Modus verfügbar.
In diesem Codemuster verwenden wir die Watson Assistant Slots-Funktion, um einen Chatbot zu erstellen, der eine Pizzabestellung entgegennimmt. Die erforderlichen Informationen wie Größe, Typ und Zutatenauswahl können im Gegensatz zu früheren Versionen von Assistant alle in einem Assistant-Knoten eingegeben werden.
Wenn der Leser dieses Codemuster abgeschlossen hat, wird er verstehen, wie man:
HINWEIS : Dieses Codemuster wurde aktualisiert und enthält jetzt Anweisungen für den Zugriff auf Watson Assistant, der auf IBM Cloud Pak for Data ausgeführt wird. Diese Aktualisierungen finden Sie in den spezifischen Anweisungen zum lokalen Bereitstellen Ihrer App oder zum Bereitstellen Ihrer App in OpenShift in IBM Cloud. Die wichtigste erforderliche Änderung besteht darin, dass Ihre Anwendung zusätzliche Anmeldeinformationen benötigt, um auf den IBM Cloud Pak for Data-Cluster zuzugreifen, der den Watson Assistant-Dienst hostet.
Klicken Sie hier für weitere Informationen zu IBM Cloud Pak for Data.
HINWEIS : Dieses Codemuster nutzt die Erfahrung von Watson Assistant. Nach dem 8. Oktober 2021 können alle Instanzen (nicht standardmäßig) zwischen der klassischen und der neuen Watson Assistant-Erfahrung wechseln, indem Sie in der oberen rechten Ecke des Watson Assistant-Bildschirms auf das Symbol „Verwalten“ klicken befindet sich in der oberen rechten Ecke des Assistentenbildschirms. Klicken Sie auf „Zum klassischen Erlebnis wechseln“ oder auf „Zu neuem Erlebnis wechseln“, um zwischen beiden zu wechseln.
Verwendung von Cloud Foundry in IBM Cloud | Verwendung des Kubernetes-Dienstes von IBM Cloud |
---|---|
Klicken Sie auf eine der folgenden Optionen, um Anweisungen zum Bereitstellen der App zu erhalten.
Die Stärke von Slots liegt darin, dass es die Anzahl der Knoten reduziert, die zum Implementieren der Logik in Ihrem Watson Assistant-Dialog erforderlich sind. Hier ist ein Teilkonversationsdialog mit der alten Methode:
Und hier ist ein vollständigerer Dialog mit Slots, der die gesamte Logik in den Pizza ordering
Bestellknoten einfügt.
Öffnen Sie den Dialog und wir schauen uns Folgendes an:
Jeder Slot stellt ein Feld dar, das im Chatbot ausgefüllt werden soll: pizza_size
, pizza_type
und pizza_topings
. Wenn sie nicht vorhanden sind, wird der Benutzer von oben beginnend dazu aufgefordert, bis alle über die zugehörige Variable ( $pizza_size
, $pizza_type
usw.) gefüllt sind.
Klicken Sie auf Konfigurieren um weitere Funktionen hinzuzufügen:
Hier können wir eine Antwort hinzufügen, wenn dieser Slot belegt ist (Gefunden). Logik kann für eine Zutat verwendet werden:
oder wenn mehr als eine Zutat hinzugefügt wird:
Wir haben eine Logik hinzugefügt, um Ja- oder Nein-Antworten auf die Frage „Gibt es zusätzliche Toppings?“ zu beantworten:
Klicken Sie auf die 3 Kreise und wählen Sie Open JSON editor
um den JSON direkt zu bearbeiten:
Hier haben wir einen leeren Wert für das Feld context: {"pizza_topings"} festgelegt, damit wir die Schleife verlassen können, indem wir diesen Platz füllen.
Abschließend fügen wir Antworten für den Fall hinzu, dass alle Plätze belegt sind:
Wir beginnen mit dem Fall, in dem wir „pizza_toppings“ haben, indem wir feststellen, dass das Array eine Größe > 0 hat. Hier behandeln wir zunächst den Fall, in dem der optionale „pizza_place“-Slot gefüllt ist, und dann den Fall, in dem dies nicht der Fall ist.
Schließlich fügen wir einen Handler für den Fall hinzu, dass die Antworten des Benutzers auf eine Eingabeaufforderung nicht gefunden werden. Wir haben einen Handler für die Absicht „help“ hinzugefügt.
Wir haben einen Dialogknoten, der die Absicht #reset
verarbeitet, die alle Felder auf null
zurücksetzt:
Schauen wir uns eine Beispielkonversation und den zugehörigen JSON an. Starten Sie bei laufender Watson Pizzeria einen Dialog und teilen Sie dem Pizza Bot zunächst mit, dass Sie eine große Pizza möchten:
Die „Benutzereingabe“ zeigt Ihnen das Feld „Eingabe“{„Text“} sowie den „Kontext“, der hauptsächlich für Assistant verwendet wird, um den internen Status zu verfolgen. Scrollen Sie nach unten zu Watson Understands
und sehen Sie sich intents
an:
Beachten Sie, dass die Absicht für „Bestellung“ erkannt wird. Die Entität „pizza_size“ ist nun ein ausgefüllter Slot. Wir haben noch 2 benötigte Slots, „pizza_type“ und „pizza_toppings“. Der Benutzer wird aufgefordert, bis diese ausgefüllt sind:
Wir können nun sehen, dass alle benötigten Slots besetzt sind:
Was wäre, wenn wir der Watson Pizzeria sagen wollten, dass wir die Pizza dort, im Restaurant, essen wollten? Zu spät! Der Platz für „pizza_place“ ist optional, sodass der Benutzer nicht dazu aufgefordert wird. Sobald die erforderlichen Plätze belegt sind, verlassen wir den Dialogknoten „Pizzabestellung“. Der Benutzer muss zunächst optionale Slots ausfüllen. Geben Sie „reset“ ein, um erneut zu beginnen, und testen Sie dies, indem Sie den Satz „to eat there…“ hinzufügen:
cf push
ergibt: FAILED Could not find service
Wenn Sie Ihren Dienst wcsi-conversation-service
nennen, sollte dies funktionieren. Wenn Sie cf push
verwenden, wird versucht, eine Bindung an die in manifest.yml
aufgeführten Dienste herzustellen.
Es gibt also zwei Möglichkeiten, wie Sie dies zum Laufen bringen können:
HINWEIS: Die Schaltfläche
Deploy to IBM Cloud
löst dieses Problem, indem die Dienste im laufenden Betrieb (mit den richtigen Namen) erstellt werden.
Dieses Codemuster ist unter der Apache-Softwarelizenz, Version 2, lizenziert. Separate Codeobjekte von Drittanbietern, die in diesem Codemuster aufgerufen werden, werden von ihren jeweiligen Anbietern gemäß ihren eigenen separaten Lizenzen lizenziert. Beiträge unterliegen dem Developer Certificate of Origin, Version 1.1 (DCO) und der Apache Software License, Version 2.
Häufig gestellte Fragen zur Apache-Softwarelizenz (ASL).