1. Hinweis
In diesem Codelab erfahren Sie, wie Sie mit Dialogflow CX, einer Conversational AI Platform (CAIP) zum Erstellen von Konversations-UIs, einen Einzelhandels-Chatbot erstellen. Mit Dialogflow CX können Sie virtuelle Kundenservicemitarbeiter wie Chatbots, Voicebots und Telefon-Gateways implementieren und mehrere Kanäle in über 50 verschiedenen Sprachen unterstützen.
In diesem Codelab erfahren Sie, wie Sie einen Website-Chatbot für den Einzelhandel erstellen. Das fiktive Unternehmen, für das wir den Chatbot erstellen, heißt G-Records. G-Records ist ein Rock-Label mit Sitz in Kalifornien. Das Label hat vier Rockbands unter Vertrag: Alice Googler, G's N' Roses, The Goo Fighters und The Google Dolls. G-Records verkauft Bandmerchandise an alle Rockfans.
Am Ende dieses Codelabs können Sie den Chatbot verwenden, um T-Shirts oder Musik zu bestellen oder Fragen zu Ihrer Bestellung zu stellen.
Lerninhalte
Sie lernen die Vorteile von Dialogflow CX im Vergleich zu Dialogflow ES kennen. Sie umfasst die folgenden Konzepte:
- Virtuellen Dialogflow CX-Kundenservicemitarbeiter in Google Cloud erstellen
- Informationen zum Erstellen von Workflows
- Entitäten erstellen
- Weitere Informationen zum Erstellen von Intents
- Seiten und Übergangsseiten mit Zustands-Handlern erstellen
- Seiten mit Intent-Routen verknüpfen
- Seitenübergänge mit Parametern und Bedingungsrouten
- Bedingte Antworten mit Systemfunktionen zurückgeben
- Informationen zum Erstellen von Fallback-Nachrichten
- Informationen zur Verwendung des Simulators
- Testfälle und Testabdeckung erstellen
Das endgültige Dialogflow CX-Agent-Design sieht so aus:
Voraussetzungen
- Sie benötigen eine Google-Identität bzw. eine Gmail-Adresse, um einen Dialogflow CX-Agenten zu erstellen.
- Zugriff auf Google Cloud
2. Umgebung einrichten
Google Cloud-Projekt erstellen
Da Dialogflow CX in Google Cloud ausgeführt wird, müssen Sie ein Google Cloud-Projekt erstellen. Es dient zur Organisation all Ihrer Google Cloud-Ressourcen. Projekte umfassen Mitarbeiter, aktivierte APIs (und andere Ressourcen), Monitoringtools, Zahlungsinformationen sowie Authentifizierungs- und Zugriffssteuerungen.
Wenn Sie ein neues Projekt erstellen, müssen Sie einen Projektnamen eingeben. Außerdem müssen Sie es mit einem vorhandenen Rechnungskonto und einer vorhandenen Organisation verknüpfen.
In Rechnungskonten ist festgelegt, wer die Nutzungsgebühren für Ressourcen bezahlt. Ein Rechnungskonto kann mit einem oder mehreren Projekten verknüpft sein. Die Gebühren für die Projektnutzung werden dem verknüpften Rechnungskonto belastet. In den meisten Fällen konfigurieren Sie die Abrechnung beim Erstellen eines Projekts. Weitere Informationen finden Sie in der Dokumentation zur Abrechnung. Die Abrechnung für das Cloud-Projekt muss aktiviert sein.
Dialogflow API aktivieren
Wenn Sie Dialogflow verwenden möchten, müssen Sie die Dialogflow API für Ihr Projekt aktivieren.
- Wählen Sie das Projekt aus, für das Sie die API aktivieren möchten, und klicken Sie auf Weiter.
- Minimieren Sie das Menü „APIs und Dienste“ und klicken Sie auf Anmeldedaten erstellen.
- Klicken Sie auf Anwendungsdaten.
- Antworten Sie mit Nein, ich verwende sie nicht, da Sie die Kubernetes Engine, App Engine oder Cloud Functions derzeit nicht verwenden.
- Klicken Sie auf Fertig.
Neuen Dialogflow CX-Agent erstellen
Wenn Sie einen neuen Dialogflow CX-Agenten erstellen möchten, öffnen Sie zuerst die Dialogflow CX-Konsole:
- Wählen Sie das zuvor erstellte Google Cloud-Projekt aus.
- Klicken Sie auf Agent erstellen.
Füllen Sie das Formular für die grundlegenden Agent-Einstellungen aus:
- Sie können einen beliebigen Anzeigenamen wählen.
- Wählen Sie als Standort us-central1 aus.
- Wählen Sie Ihre bevorzugte Zeitzone aus.
- Wählen Sie en – Englisch als Standardsprache aus.
Klicken Sie auf Erstellen.
Alles klar, wir sind bereit. Jetzt können wir mit dem Modellieren unseres virtuellen Kundenservicemitarbeiters beginnen.
3. Abläufe
Komplexe Dialoge enthalten oft mehrere Unterhaltungsthemen. Für den Chatbot, den wir für G-Records zum Verkauf von Bandmerchandise entwickeln, würden wir Dialoge zum Produktkatalog, zur Zahlung, zum Bestellstatus und zu Fragen zum Kundenservice haben. Wir könnten diese Unterhaltungsthemen in Abläufe unterteilen.
Mit Abläufen können Teams an einzelnen Konversationspfaden arbeiten. Es empfiehlt sich, den Ablauf zu vereinfachen, damit er problemlos auf einen Bildschirm passt und modularer ist.
Abläufe sind ein neues Konzept in Dialogflow CX. In Dialogflow Essentials gibt es das Konzept „Mega-Agents“, das in gewisser Weise mit Abläufen vergleichbar ist. Sie würden jedoch Workflows viel häufiger verwenden.
Später in diesem Lab verwenden wir Status-Handler, mit denen ein Ablauf beendet werden kann (so wird zu einem nächsten oder vorherigen Ablauf gesprungen). Sie können auch die gesamte Kundenservicemitarbeitersitzung beenden.
Lass uns ein paar Abläufe erstellen.
Flows erstellen
- Klicken Sie in Dialogflow CX auf das Symbol + > Flow erstellen.
- Geben Sie den Namen
Catalog
ein und drücken Sie die Eingabetaste.
Ihr erster Flow Catalog wurde erstellt. Erstellen Sie jetzt die anderen Abläufe:
Order Process
My Order
Customer Care
Später in diesem Lab legen wir Seitenstatus-Handler fest, damit die Visualisierung so aussieht:
Simulator
Rechts in der Dialogflow CX-Konsole können Sie den virtuellen Kundenservicemitarbeiter mit dem integrierten Simulator testen. Sie können die Unterhaltung von Anfang an oder von einem bestimmten Ablauf aus testen.
- Klicken Sie oben rechts auf die Schaltfläche Test-Agent.
- Geben Sie im Feld „Mit Kundenservicemitarbeiter chatten“ Folgendes ein:
Hello
Der virtuelle Kundenservicemitarbeiter antwortet mit einer standardmäßigen Begrüßung: Hallo! Wie kann ich Ihnen helfen?
Ändern wir diesen Standard-Begrüßungstext.
Standardstartablauf
Erstellen Sie zuerst eine Intent-Route, die ausgelöst wird, sobald Sie den virtuellen Kundenservicemitarbeiter begrüßen.
- Klicken Sie in der linken Seitenleiste Build > Abläufe auf Standardstartablauf und wählen Sie den Knoten Start aus.
Daraufhin wird die Seite Start geöffnet. In der Seitenleiste Build > Seiten wurde automatisch die Startseite ausgewählt.
- Klicken Sie unter Start > Routes auf Default Welcome Intent (Standard-Begrüßungs-Intent).
Ein Intent kategorisiert die Absicht eines Endnutzers für eine Unterhaltungsrunde. In Dialogflow CX können Intents Teil eines Status-Handlers sein, um die nächste aktive Seite oder Auftragsausführung weiterzuleiten.
- Entfernen Sie alle Einträge unter Kundenservicemitarbeiter sagt und fügen Sie den folgenden Text hinzu:
Welcome, I am the virtual agent of G-Records, a fictional rock label. You can order artists merchandise, ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?
Um die Unterhaltung zu optimieren, benötigen wir auch Schaltflächen für Kurzantworten und Vorschlags-Chips.
- Klicken Sie auf Dialogoption hinzufügen > Benutzerdefinierte Nutzlast und verwenden Sie das folgende Code-Snippet.
- Verwenden Sie das folgende Code-Snippet als benutzerdefinierte Payload und klicken Sie auf Speichern.
Weitere Informationen zu benutzerdefinierten Nutzlasten finden Sie in der Dokumentation.
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Testen Sie die Begrüßungsabsicht im Simulator.
Sie fragen sich wahrscheinlich, warum Sie keine Rich-Inhalte sehen. Das liegt daran, dass Rich Content wie Vorschlags-Chips eine Integration erfordern. Für die folgenden Schritte ist ein Abrechnungskonto erforderlich. Sie können sie aber überspringen, wenn Sie keins haben.
- Klicken Sie in der linken Seitenleiste auf Verwalten > Integrationen.
- Wählen Sie Dialogflow Messenger aus und klicken Sie auf Verbinden.
- Klicken Sie im Pop-up-Fenster auf Aktivieren.
Es wird ein weiteres Pop-up-Fenster mit JavaScript-Code zur Integration angezeigt, den Sie in Ihre Website einfügen können, um die Dialogflow Messenger-Komponente einzubinden. Da wir noch keine Website haben, testen wir den virtuellen Kundenservicemitarbeiter direkt im Tool.
- Klicken Sie auf den Link Jetzt testen.
- Klicken Sie rechts unten auf das Chatbot-Symbol, um das Chatfenster zu öffnen. Geben Sie
Hello
ein, um die Unterhaltung zu starten.
Wenn Sie derzeit auf die Vorschlags-Chips klicken, versteht der virtuelle Assistent nicht, was Sie meinen. Das liegt daran, dass unser virtueller Kundenservicemitarbeiter noch nicht zwischen den Status wechselt. In Dialogflow CX können wir das mit Seiten tun. Fahren wir mit dem Lab fort. Erstellen Sie zuerst einige Entitäten und Intents.
4. Entitätstypen
Entitätstypen steuern, wie Daten aus Endnutzereingaben extrahiert werden. Dialogflow CX-Entitätstypen sind Dialogflow ES-Entitätstypen sehr ähnlich. Dialogflow stellt vordefinierte Systementitäten bereit, die mit vielen gängigen Datentypen übereinstimmen. So gibt es beispielsweise Systementitäten für den Abgleich von Datumsangaben, Uhrzeiten, Farben und E-Mail-Adressen. Sie können auch eigene benutzerdefinierte Entitäten erstellen, um benutzerdefinierte Daten zuzuordnen.
Bereiten wir zuerst alle benutzerdefinierten Entitäten vor, bevor wir die Seiten in einem Ablauf entwerfen können. Wir erstellen die folgenden Entitäten:
Elemente erstellen
Erstellen wir eine Künstler-Entität.
- Klicken Sie auf Verwalten > Entitätstypen.
- Klicken Sie auf + Erstellen.
- Anzeigename:
Artist
- Einheiten:
The Google Dolls
(mit Synonym:Google Dolls
)The Goo Fighters
(mit Synonym:Goo Fighters
)G's N' Roses
(mit Synonym:Gs and Roses
)Alice Googler
- Klicken Sie auf „Erweiterte Optionen“ und aktivieren Sie Ungenaue Übereinstimmung. Auch wenn du den Bandnamen falsch schreibst, wird er möglicherweise trotzdem der richtigen Entität zugeordnet.
- Aktivieren Sie unter „Erweiterte Optionen“ auch die Option Im Log entfernen. Wenn du den Bandnamen falsch schreibst, wird er im Log korrigiert.
- Klicken Sie auf Speichern.
Außerdem benötigen wir eine Entität für den Merch:
- Klicken Sie auf Verwalten > Entitätstypen.
- Klicken Sie auf + Erstellen.
- Anzeigename:
Merch
- Einheiten:
T-shirt
Longsleeve
(mit Synonym:Longsleeve shirt
)Tour Movie
Digital Album
(mit Synonym:MP3 Album
,MP3
)CD
(mit den SynonymeDisc
,Physical CD
)
- Klicken Sie auf Speichern.
Außerdem benötigen wir eine Entität für das Album:
- Klicken Sie auf Verwalten > Entitätstypen.
- Klicken Sie auf + Erstellen.
- Anzeigename:
Album
- Einheiten:
Live
Greatest Hits
(mit Synonym:Hits
)
- Klicken Sie auf Speichern.
Außerdem benötigen wir eine Entität für Kleidungsgrößen:
- Klicken Sie auf Verwalten > Entitätstypen.
- Klicken Sie auf + Erstellen.
- Anzeigename:
ShirtSize
- Einheiten:
XS
(mit Synonym:Extra Small
)S
(mit Synonym:Small
)M
(mit Synonym:Medium
)L
(mit Synonym:Large
)XL
(mit Synonym:Extra Large
)2XL
(mit Synonym:Extra Extra Large
)3XL
- Klicken Sie auf Speichern.
Und eine Entität für Bestellnummern, die in der Regel aus 4 alphanumerischen Zeichen und 3 Ziffern bestehen. (z. B. ABCD123)
- Klicken Sie auf Verwalten > Entitätstypen.
- Klicken Sie auf + Erstellen.
- Anzeigename:
OrderNumber
- RegExp-Entitäten
- Entität: [A-Z]{4}[0-9]{3}
- Klicken Sie auf Speichern.
Die Entitätskonfiguration sollte in etwa so aussehen:
@Künstler:
@Merch:
@Album:
@ShirtSize:
@OrderNumber:
Sobald die benutzerdefinierten Entitäten vorbereitet sind, können wir die Intents vorbereiten. Fahren wir mit dem Lab fort.
5. Intents
Ein Intent kategorisiert die Absicht eines Endnutzers für eine Unterhaltungsrunde. In Dialogflow CX wurden sie stark vereinfacht. Sie sind nicht mehr ein Baustein für die Unterhaltungssteuerung. In Dialogflow CX werden nur Intents verwendet, um die Äußerungen der Nutzer abzugleichen. In Dialogflow ES mussten Sie alles (Parameter, Ereignisse, Ausführung usw.) mit einem Intent verknüpfen. Intents in Dialogflow CX enthalten nur Trainingsformulierungen und können daher wiederverwendet werden. Sie steuert die Unterhaltung nicht mehr. Das Erstellen von Intents ist ganz einfach:
Die Trainingsphrasen in Intents können Entitäten verwenden, um Eingaben vom Typ „Variable“ zu extrahieren. Daher ist es empfehlenswert, die Entitätstypen im Voraus zu erstellen. Das haben wir auf der vorherigen Seite der Lab-Schritte getan.
Intents erstellen
Bereiten wir zuerst alle Intents vor, bevor wir die Seiten in einem Fluss entwerfen können.
- Klicken Sie auf Verwalten > Intents.
- Klicken Sie auf + Erstellen.
Verwenden Sie die folgenden Angaben:
- Anzeigename
redirect.artists.overview
- Textzeile
Artists overview: The bands supported by the label
Scrollen Sie nach unten und erstellen Sie die folgenden Trainingsformulierungen:
Which bands are signed?
Which bands
Which artists
Which artists are part of the record label
Who is part of the label
From which bands can I buy merchandise
Band merchandise
Which music do you have?
I would like to know who are signed to the label
Who are supported by the label
From who can I buy shirts
What music can I order
Can I get an overview of all the artists
- Klicken Sie auf Speichern.
- Fahren wir fort und erstellen alle anderen Intents. Lassen Sie Ihrer Fantasie freien Lauf und überlegen Sie sich weitere Trainingsformulierungen. Es empfiehlt sich, mindestens 10 Trainingsformulierungen pro Intent zu haben, um die verschiedenen Möglichkeiten abzudecken, wie ein Nutzer diesen Intent auslösen kann. Für die Zwecke dieses Labs sollte es aber auch weniger sein.
Achten Sie auf Folgendes:
- Hinweis: Wenn Sie eine Trainingsformulierung eingeben, werden Ihre Entitäten in Dialogflow CX automatisch annotiert. Andernfalls müssen Sie die Entität möglicherweise aktualisieren, indem Sie ein Synonym hinzufügen oder die Trainingsformulierung manuell annotieren.
- Kürzere Trainingsphrasen: Das NLU-System von Dialogflow kann auch mit kürzeren Trainingsphrasen funktionieren. Hier finden Sie einige Beispiele.
- Übertraining: Zu viele Trainingsformulierungen für einen Intent können zu einem Übertraining und einem weniger wünschenswerten Ergebnis führen. Es wird empfohlen, iterative und inkrementelle Tests durchzuführen und Trainingsformulierungen hinzuzufügen, falls kein Intent zugeordnet werden kann.
Anzeigename | Trainingsformulierungen |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nachdem wir unsere wiederverwendbaren Elemente (Abläufe, Entitäten und Intents) vorbereitet haben, können wir sie zusammenstellen, indem wir Seiten und Status-Handler erstellen.
6. Seiten und Zustands-Handler
Eine Unterhaltung (Sitzung) in Dialogflow CX kann als endliche Zustandsmaschine beschrieben und dargestellt werden. Ein Beispiel wäre ein Automat, der als Finite-State-Maschine modelliert werden könnte. Es hat die folgenden Status: „Auf Münzen warten“, „Süßigkeiten auswählen“ und „Süßigkeiten geben“. Je nach Eingaben wechselt es zwischen diesen Status. Wenn Sie beispielsweise eine Münze einwerfen, wechselt der Automat von „Warte auf Münzen“ zu „Süßigkeiten auswählen“. Mit Seiten können wir diese Status für einen virtuellen Dialogflow CX-Kundenservicemitarbeiter modellieren.
Wenn ein Endnutzer in einer Unterhaltung mit Dialogflow CX interagiert, wechselt die Unterhaltung von Seite zu Seite. Es ist also immer genau eine Seite die aktuelle Seite. Diese aktuelle Seite wird als aktiv betrachtet und auch der mit dieser Seite verknüpfte Ablauf wird als aktiv betrachtet.
Für jeden Ablauf definieren Sie mehrere Seiten, wobei die Gesamtheit der Seiten eine vollständige Unterhaltung zu den Themen ermöglicht, für die der Ablauf bestimmt ist. Jeder Ablauf hat eine spezielle Startseite. Wird ein Ablauf zum ersten Mal aktiviert, wird die Startseite zur aktuellen Seite. Bei jeder Unterhaltungsrunde bleibt die aktuelle Seite entweder unverändert oder wechselt zu einer anderen Seite. Mit diesem Konzept können Sie größere Bots mit vielen Seiten und mehreren Unterhaltungsschritten erstellen.
Seiten enthalten Ausführungen (statische Einstiegsdialoge und/oder Webhooks), Parameter und Status-Handler. Die Unterhaltungssteuerung erfolgt über Status-Handler. So können Sie verschiedene Übergangsrouten erstellen, um zu einer anderen Dialogflow CX-Seite zu wechseln. Sie können sie auch bedingt machen (für die Verzweigung von Unterhaltungen).
Der Status einer Unterhaltung wird durch die Verarbeitung von Übergängen zwischen Seiten mit drei verschiedenen Arten von Routen gesteuert:
- Intent-Routen: Gibt an, wann ein Intent abgeglichen werden soll (z.B. Wechsel der Seite basierend auf dem, was ein Endnutzer sagt). (Blaue Linien im visuellen Diagramm)
- Bedingungsrouten: Gibt an, wann eine Bedingung geprüft werden soll (z. B. Wechsel der Seite basierend auf bestimmten Parametern, die in der Sitzung gespeichert sind). (Orangefarbene Linien im visuellen Diagramm.)
- Ereignis-Handler: Gibt an, wann ein bestimmtes Fallback-Ereignis verarbeitet werden soll (z. B. „Keine Eingabe“ oder „Keine Übereinstimmung“, um den Endnutzer zu einem Intent- oder Bedingungspfad weiterzuleiten). (Grüne Linien im visuellen Diagramm.)
Die Unterhaltungsäußerungen (d.h. der Inhalt oder die Antwort an den Nutzer) werden durch die Auftragsausführung definiert, die entweder statisch oder dynamisch sein kann:
- Statische Auftragsausführung: Wenn eine statische Auftragsausführungsantwort bereitgestellt wird
- Dynamische Auftragsausführung: Wenn ein Auftragsausführungs-Webhook für dynamische Antworten aufgerufen wird
Für unseren Einzelhandelsbot erstellen wir einige Intent-Routen und geben einige Antworten für die Ausführung statischer Eingaben an, die dem Nutzer angezeigt werden, sobald eine Seite aktiviert wird. Später erstellen wir Parameter mit Bedingungspfaden, um die Informationen zu erfassen, die du für eine Merchandise-Bestellung benötigst.
Intent-Routen für Seiten
Seiten im Standardstartablauf erstellen
Hier ein Flussdiagramm des Standardstartablaufs:
Gehen wir das gemeinsam durch:
- Klicken Sie auf Erstellen > Standardstartablauf.
- Klicken Sie auf die Startseite.
- Klicken Sie neben Routen auf das Symbol +.
- redirect.artists.overview hinzufügen
- Scrollen Sie nach unten zu Übergang und wechseln Sie zum Katalog.
- Klicke auf Speichern.
- Wiederholen Sie die obigen Schritte für
redirect.product.overview
und die anderen 11 Zeilen dieser Tabelle:
Seite (im Navigationsfluss) | Routes > Intent | Routen > Zur Umstellung |
Start |
| - |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Katalog |
Start |
| Ablauf: Kundenservice |
Start |
| Ablauf: Kundenservice |
Start |
| Ablauf: Kundenservice |
Start |
| Ablauf: „Meine Bestellung“ |
Start |
| Ablauf: „Meine Bestellung“ |
Start |
| Ablauf: „Meine Bestellung“ |
Start |
| Seite: Sitzung beenden |
Der Standardstartablauf funktioniert wie ein Optionsmenü beim Anrufen eines Callcenters. Bei diesem virtuellen Kundenservicemitarbeiter wird er jedoch mit Natural Language trainiert, wobei die Trainingsphrasen in Intents enthalten sind. Daher wird die Interaktion durch die Unterhaltung und nicht durch DTMF-Optionen gesteuert und ist natürlicher und menschlicher.
Seiten im Katalogfluss erstellen
Der folgende Chatverlauf gehört zum Katalogablauf:
> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!
We sell shirts, music or the tour movie.
Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.
Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"
Wenn du Musik oder Tourfilm auswählst, wird ein anderer Dialog angezeigt: Bei „Musik“ sieht der Dialog so aus:
> "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"
Für den Tour-Film sieht der Dialog so aus:
> "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?
Hier ist ein Flussdiagramm aller Seiten im Katalogfluss:
Beachten Sie die Komplexität dieses Ablaufs:
- Ich könnte die Frage Welche Künstler? überspringen und direkt fragen: Welche Merchandise-Artikel sind verfügbar?
- Im Standardstartablauf könnte ich fragen: „Ich möchte das T-Shirt von The Google Dolls kaufen“ oder „Ich möchte etwas kaufen“. Das bedeutet, dass der virtuelle Kundenservicemitarbeiter Anschlussfragen stellt, um die Felder für diese erforderlichen Parameter auszufüllen. Sie werden direkt zur Produktseite weitergeleitet.
- Das Dialogfeld „Preis“ stammt von der Preisseite, die wiederverwendet wird.
- Auch wenn der Dialog für das Vorstellungsvideo auf den ersten Blick sehr einfach erscheint, werden wir damit etwas Besonderes machen. Wir verwenden diesen Teil des Dialogs wieder, damit Endnutzer ihn auch direkt für eines der anderen Produkte eingeben können, wenn sie alle Informationen gleichzeitig spezialisieren:
> "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"
Beginnen wir damit, die Seiten zu verbinden.
- Klicken Sie auf Erstellen > Katalog.
- Klicken Sie auf die Startseite.
- Klicken Sie neben Routen auf das Symbol +.
- redirect.artists.overview hinzufügen
- Scrollen Sie nach unten zu Übergang, wählen Sie Seite und dann + Neue Seite aus.
- Verwenden Sie den Seitennamen
Artist Overview
und klicken Sie auf Speichern.
Schließen wir jetzt den Rest des Ablaufs ab:
- Die vorherigen Schritte können mit den folgenden Seiten, Intents und Erfüllungen wiederholt werden. Nehmen Sie diese Tabelle an. Seite ist die Seite, die Sie im Ablauf auswählen. Routen > Zur Seite wechseln ist der neue Ablauf oder die neue Seite, die Sie erstellen und zu der Sie wechseln.
Seite (im Navigationsfluss) | Routes > Intent | Routen > Zur Umstellung |
Katalogstart |
| Künstlerübersicht |
Katalogstart |
| Produkt |
Katalogstart |
| Produktübersicht |
Katalogstart |
| Produktübersicht |
Katalogstart |
| Hemden |
Katalogstart |
| Musik |
Katalogstart |
| Sitzung beenden |
Katalogstart |
| Ablauf beenden |
Künstlerübersicht |
| Produktübersicht |
Fahren wir fort und fügen weitere statische Ausführungen hinzu.
- Klicke im Katalog auf die Seite Künstlerübersicht.
- Klicken Sie im Abschnitt Ausführung des Eintrags auf Ausführung bearbeiten.
- Verwenden Sie die folgenden statischen Ausführungen (Kundenservicemitarbeiter sagt):
The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
- Klicken Sie auf Speichern.
- Klicken Sie im Katalogfluss auf die Seite Produktübersicht.
- Klicken Sie im Abschnitt Ausführung des Eintrags auf Ausführung bearbeiten.
- Verwende die folgende statische Ausführung (Kundenservicemitarbeiter sagt):
We sell shirts, music or the tour movie.
- Klicken Sie auf Speichern.
Seitenparameter
Parameter werden zum Erfassen und Referenzieren von Werten verwendet, die der Endnutzer während einer Sitzung bereitgestellt hat. Jeder Parameter hat einen Namen und einen Entitätstyp. @Artist
und @Merch
sind die Mindestparameter, die wir für eine Merchandise-Bestellung benötigen. Bei T-Shirts oder Longsleeves solltest du auch @ShirtSize
erfassen. Wenn du Musik bestellen möchtest, benötigst du außerdem einen @Carrier
- und einen @Album
-Namen.
Diese Parameter müssen als erforderlich gekennzeichnet sein. Wenn dies erforderlich ist, sollten Sie benutzerdefinierte Prompts bereitstellen, damit sich der Endnutzer erinnert und die richtigen Antworten gibt, damit diese Parameter erfasst werden können. In Dialogflow CX gibt es einige Mechanismen, die Ihnen dabei helfen können.
Sie können beispielsweise im Abschnitt Parameter benutzerdefinierte Nachrichten für die statische Auftragsausführung angeben. Wenn der Parameter erforderlich ist, werden diese Parameterausführungen angezeigt. Diese Antwortnachrichten werden der Antwortwarteschlange hinzugefügt. Während der Unterhaltungsrunde eines Kundenservicemitarbeiters ist es möglich (und manchmal wünschenswert), mehrere Auftragsausführungen aufzurufen, von denen jede eine Antwort erzeugen kann. Dialogflow speichert diese Antworten in einer Antwortwarteschlange. Weitere Informationen zum Seitenlebenszyklus und zur Reihenfolge, in der diese Ausführungen der Antwortwarteschlange hinzugefügt werden, finden Sie in der Dialogflow CX-Dokumentation zu Seiten.
Parameter auf der Übersichtsseite des Künstlers erstellen
Definieren wir einige Seitenparameter:
- Klicke im Katalog auf die Seite Künstlerübersicht.
- Klicken Sie im Block Parameter auf +. Füge den Parameter artist hinzu:
- Anzeigename:
artist
- Typ der Rechtspersönlichkeit:
@Artist
- Erforderlich: Häkchen setzen
- Im Log entfernen: Häkchen setzen
- Fügen wir jetzt einige Nachrichten zur Ausführung von benutzerdefinierten Parametern hinzu. Wenn der Parameter artist noch nicht vom virtuellen Kundenservicemitarbeiter erfasst wurde, wird dem Endnutzer diese Antwort des Kundenservicemitarbeiters in die Antwortwarteschlange hinzugefügt:
From which of these artists would you like to order merchandise?
- Fügen Sie eine zweite Dialogoption hinzu, die umfangreiche Vorschlags-Chips enthält. Klicken Sie auf Dialogoption hinzufügen und verwenden Sie diesen Code (in JSON):
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
Je nachdem, wie oft der Endnutzer versucht hat, diese zu beantworten, können Sie unterschiedliche Fallback-Aufforderungen zur Auftragsausführung verwenden. Dazu verwenden Sie Event-Handler für Parameter. Es stehen verschiedene vordefinierte Ereignis-Handler zur Auswahl, z. B. Ungültige Parameter, Sätze zu lang, Keine Eingabe, Keine Eingabe beim ersten Versuch, 2. Versuch oder Kein Übereinstimmen. Der Unterschied zwischen „Keine Eingabe“ und „Kein Treffer“ besteht darin, dass ein Nutzer bei „Keine Eingabe“ nie eine Antwort gegeben hat. Bei „Kein Treffer“ hat der Nutzer zwar eine Antwort gegeben, Dialogflow CX konnte diese jedoch nicht mit einer Seite abgleichen.
- Scrollen Sie nach unten zum Abschnitt Event-Handler für erneute Eingabeaufforderungen.
- Klicken Sie auf Event-Handler hinzufügen und wählen Sie das Ereignis aus:
No-match default
- Verwenden Sie die folgende statische Textausführung für das Ereignis:
I missed that. Please, specify the artist. You can choose between: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Klicken Sie auf Speichern.
- Klicken Sie auf Event-Handler hinzufügen und wählen Sie das Ereignis aus:
No-input default
- Verwenden Sie die folgende statische Textausführung für das Ereignis:
I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Klicken Sie auf Speichern.
Seitenbedingungensrouten
Parameter sind in Kombination mit seitenabhängigen Routen sehr leistungsfähig. Wenn eine Bedingung als wahr ausgewertet wird, wird die zugehörige Seitenroute aufgerufen. Beispiele für Bedingungen: Ein Parameter ist gleich einem bestimmten Wert, Ein Parameter darf nicht fehlen oder Ein Formular wurde ausgefüllt. Weitere Informationen zu Parametern und Bedingungen finden Sie in der Dialogflow CX-Dokumentation.
Für unseren virtuellen Einzelhandelsmitarbeiter müssen wir eine Reihe von Parametern erfassen. Daher müssen wir eine Bedingung erstellen, um zu prüfen, ob ein „Formular“ ausgefüllt wurde. Ein Formular ist eine Liste von Parametern, die vom Endnutzer für die Seite erfasst werden sollen. Der virtuelle Kundenservicemitarbeiter interagiert mit dem Endnutzer mehrere Unterhaltungsrunden lang, bis er alle erforderlichen Formularparameter, auch Seitenparameter genannt, erfasst hat.
Dialogflow CX legt automatisch Parameterwerte fest, die der Endnutzer während des Ausfüllens eines Formulars angegeben hat. Verwenden Sie die folgende Bedingung, um zu prüfen, ob das vollständige Formular der aktuellen Seite ausgefüllt ist: $page.params.status = "FINAL"
Bedingte Routen auf der Übersichtsseite des Künstlers erstellen
Erstellen wir eine bedingte Route, die zur nächsten Seite weiterleitet, sobald der Künstler bekannt ist:
- Klicke auf der Seite Künstlerübersicht im Bereich Routen auf das Symbol +.
- Scrollen Sie nach unten zum Abschnitt Zustand.
- Wählen Sie Mindestens eine (ODER) aus.
- Als Nächstes schreiben wir einen Ausdruck, der
- Parameter:
$page.params.status
- Betreiber:
=
- Wert:
"FINAL"
- Jetzt erstellen wir eine bestimmte statische Auslieferungsnachricht auf der Route, in der die Auswahl des Endnutzers bestätigt wird. Scrolle nach unten zum Block Fulfillment und gib die folgenden Auftragsausführungsnachrichten ein:
$session.params.artist, great choice! Rock on!
You want to rock with $session.params.artist merchandise. Awesome!
- Wenn die Bedingung erfüllt ist, sollte eine Weiterleitung zur Seite Produktübersicht erfolgen. Scrollen Sie nach unten zum Abschnitt Übergang und verwenden Sie die folgende Seite:
Product Overview
- Klicken Sie auf Speichern.
Routen auf der Seite „Produktübersicht“ erstellen
Nachdem wir nun wissen, wie Parameter und bedingte Routen erstellt werden, erstellen wir weitere Parameter für die folgenden Seiten:
Produktübersicht
- Erstellen Sie den Parameter
artist
auf der Seite Produktübersicht:
- Anzeigename:
artist
- Typ der Rechtspersönlichkeit:
@Artist
- Erforderlich: Häkchen setzen
- Im Log entfernen: Häkchen setzen
- Erstauftragsausführung:
From which of these artists would you like to order merchandise?
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Event-Handler >
No-match default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
- Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
- Event-Handler >
No-input default
:To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
- Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"options": [
{
"text": "The Google Dolls"
},
{
"text": "The Goo Fighters"
},
{
"text": "Alice Googler"
},
{
"text": "G's N' Roses"
}
],
"type": "chips"
}
]
]
}
merch
-Parameter erstellen:
- Anzeigename:
merch
- Typ der Rechtspersönlichkeit:
@Merch
- Erforderlich: Häkchen setzen
- Im Log entfernen: Häkchen setzen
- Auftragsausführung:
Which merchandise item do you want?
- Klicken Sie auf Dialogoption hinzufügen > Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Event-Handler >
No-match default
- Auftragsausführung für Event-Handler:
We sell Shirts, Music or the Tour movie. Which of these items do you want?
- Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Event-Handler >
No-input default
- Auftragsausführung für Event-Handler:
I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
- Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Shirts"
},
{
"text": "Music"
},
{
"text": "Tour movie"
}
]
}
]
]
}
- Erstelle eine Route, die zur Seite Produkt weiterleitet, wenn
artist
und der Artikelmerch
angegeben sind.
- Bedingung:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.artist != null
- Ausdruck:
$session.params.merch != null
- Auftragsausführung:
Alright! $session.params.merch of $session.params.artist, let's go!
- Übergang: Seite:
Product
- Route für den Fall erstellen, dass der Nutzer „Hemden“ sagt
- Intent: redirect.shirts
- Übergang: Seite:
Shirts
- Route für den Fall erstellen, dass der Nutzer „Musik“ sagt
- Intent: redirect.music
- Übergang: Seite:
Music
- Route für den Fall erstellen, dass der Nutzer nach Preisinformationen fragt
- Intent: redirect.price
- Übergang: Neue Seite erstellen:
Price
Wenn Sie die oben beschriebene Konfiguration festgelegt haben, sehen Sie eine Visualisierung, die der Abbildung unten ähnelt. Beachten Sie, dass Intent-Routen im Diagramm blau und Bedingungsrouten orange sind. Event-Handler sind grün, wenn mehrere Routentypen zu einer Seite führen, ist die Linie grau.
Sie haben gelernt, wie Sie Abläufe, Entitäten, Intents und Seiten mit Status-Handlern wie Intent-Routen und Bedingungsrouten auf der Grundlage von Parametern erstellen. Später in diesem Lab verwenden wir bedingte Verzweigungen in der Ausführung, um je nach Eingabe unterschiedliche Dialoge anzubieten.
Sie können die folgenden Konfigurationen verwenden, um den virtuellen Kundenservicemitarbeiter fertigzustellen.
Seite „Hemden“:
- Erstelle auf der Seite Hemden die folgenden Konfigurationen:
- Eingabeauftragsausführung:
Do you want a longsleeve or a t-shirt?
- Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
},
{
"text": "Price?"
}
]
}
]
]
}
- Erstellen Sie eine Intent-Route:
redirect.price
mit einer Umleitung zur SeitePrice
. - Erstellen Sie den folgenden Parameter:
- Parameter:
merch
– Entitätstyp:@Merch
,Required
undRedact in log
- „Parameter“ > „Ereignishandler“ >
No-match default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
You can choose between a t-shirt or a longsleeve. Which of these do you want?
- Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- „Parameter“ > „Ereignishandler“ >
No-input default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
- „Parameter“ > „Auftragsausführung für Event-Handler“ > „Benutzerdefinierte Nutzlast“:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "T-shirt"
},
{
"text": "Longsleeve"
}
]
}
]
]
}
- Klicken Sie auf die Datenausführung und scrollen Sie nach unten zu Parametervorgaben. Jedes Mal, wenn die Seite „Hemden“ aktiv wird, wird der Kategorieparameter auf hemden gesetzt:
Parameter | Wert |
|
|
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit mindestens einer Regel (ODER)
- Ausdruck:
$session.params.merch = "T-shirt"
- Ausdruck:
$session.params.merch = "Longsleeve"
- Zur neuen Seite wechseln:
Shirt Size
Preisseite:
Da die Nachrichten für Preise vom ausgewählten Merchandise-Artikel oder der ausgewählten Kategorie (Musik oder T-Shirts) abhängen, werden wir diesen Teil später im Lab fertigstellen. Geben Sie einfach einen Platzhalter ein.
- Erstellen Sie auf der Seite Preis die folgenden Konfigurationen:
- Eingabeauftragsausführung:
PRICE TODO
Da Sie den Preis an verschiedenen Stellen in der Unterhaltung anfordern können, sollte Ihnen immer eine Antwort gegeben werden und Sie zurück zum vorherigen Teil des Dialogs geleitet werden, um die Bestellung fortzusetzen. Es gibt fünf Stellen im Dialogbaum, an denen Sie eine Abfrage zu Preisinformationen starten können. (Shirt, Shirt Size, Music, Carrier und auch direkt über eine Intent-Route), daher benötigen wir einige bedingte Routen, um zurückzugehen:
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "shirts"
- Ausdruck:
$session.params.merch = "null"
- Zur neuen Seite wechseln:
Shirts
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "shirts"
- Ausdruck:
$session.params.size = "null"
- Zur neuen Seite wechseln:
Shirt Size
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "music"
- Ausdruck:
$session.params.album = "null"
- Zur neuen Seite wechseln:
Music
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "music"
- Ausdruck:
$session.params.merch = "null"
- Zur neuen Seite wechseln:
Carrier
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "null"
- Zur neuen Seite wechseln:
Product Overview
Seite mit den T-Shirt-Größen:
- Erstellen Sie auf der Seite Hemdgröße die folgenden Konfigurationen:
- Eingabeauftragsausführung:
What shirt size do you want?
- Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- Erstellen Sie eine Intent-Route:
redirect.price
mit einer Umleitung zur SeitePrice
. - Erstellen Sie den folgenden Parameter:
- Parameter:
shirtsize
– Entitätstyp:@ShirtSize
–Required
,Redact In Log
- „Parameter“ > „Ereignishandler“ >
No-match default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
Please tell me the shirt size, such as XL.
- Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- „Parameter“ > „Ereignishandler“ >
No-input default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
I couldn't understand the shirt size. What size do you want?
- Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "XS"
},
{
"text": "S"
},
{
"text": "M"
},
{
"text": "L"
},
{
"text": "XL"
},
{
"text": "2XL"
},
{
"text": "3XL"
}
]
}
]
]
}
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$page.params.shirtsize != "null"
- Übergang zu Seite:
Product
Musikseite:
- Erstelle auf der Seite Musik die folgenden Konfigurationen:
- Eingabeauftragsausführung:
We have a Greatest Hits Album or the Live Album. Which one do you want?
- Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- Erstellen Sie eine Intent-Route:
redirect.price
mit einer Weiterleitung zur Seite:Price
. - Erstellen Sie den folgenden Parameter:
- Parameter:
album
– Entitätstyp:@Album
–Required
,Redact In Log
- „Parameter“ > „Ereignishandler“ >
No-match default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- „Parameter“ > „Ereignishandler“ >
No-input default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
- „Parameter“ > „Auftragsausführung für Event-Handler“ > „Benutzerdefinierte Nutzlast“:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Klicken Sie auf die Datensatzausführung und scrollen Sie nach unten zu Parametervorgaben. Jedes Mal, wenn die Musikseite aktiv wird, wird der Kategorieparameter auf music gesetzt:
Parameter | Wert |
|
|
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$page.params.album != "null"
- Übergang zu Seite:
Carrier
Mobilfunkanbieterseite:
- Erstelle auf der Seite Mobilfunkanbieter die folgenden Konfigurationen:
- Eingabeauftragsausführung:
Do you want this album on CD or MP3?
- Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
},
{
"text": "Price?"
}
]
}
]
]
}
- Erstellen Sie eine Intent-Route:
redirect.price
, die zur SeitePrice
führt. - Erstellen Sie den folgenden Parameter:
- Parameter:
merch
– Entitätstyp:@Merch
–Required
,Redact In Log
- „Parameter“ > „Ereignishandler“ >
No-match default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
Do you want a physical CD or the digital album?
- Parameter > Auftragsausführung für Event-Handler: Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "Digital Album"
}
]
}
]
]
}
- „Parameter“ > „Ereignishandler“ >
No-input default
- „Parameter“ > „Auftragsausführung für Event-Handler“:
I couldn't understand if you mean CD or MP3. Which one do you want?
- Parameter > Auftragsausführung für Event-Handler: Benutzerdefinierte Nutzlast:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "CD"
},
{
"text": "MP3"
}
]
}
]
]
}
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$page.params.merch != "null"
- Übergang zu Seite:
Product
Produktseite:
- Erstellen Sie die folgenden Parameter:
Parameter-Anzeigename | Parameter-Entitätstyp | Vorabprüfung |
|
| Erforderlich, im Log entfernen |
|
| Erforderlich, im Log entfernen |
- Für den Parameter artist ist die folgende erste Auftragsausführung erforderlich, die angezeigt wird, wenn der Künstler nicht bekannt ist.
You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
"richContent": [
[
{
"options": [
{
"text": "Which artists?"
}
],
"type": "chips"
}
]
]
}
- Fügen Sie auch einen
No-input default
-Ereignis-Handler mit Auftragsausführung hinzu:I couldn't understand what you just said. Ask me which artists are signed.
- Und einen
No-match default
-Ereignis-Handler mit Auftragsausführung:I missed that. Please ask me which artists are signed.
- Für den Parameter merch sind ebenfalls Ereignis-Handler für erneute Eingabeaufforderungen erforderlich.
- Fügen Sie einen
No-input default
-Ereignis-Handler mit Auftragsausführung hinzu:I couldn't understand what you just said. Which merchandise item do you want?
- Und einen
No-match default
-Ereignis-Handler mit Auftragsausführung:I missed that. Which merchandise item do you want?
Wenn der Künstler bekannt ist und der Nutzer „Tour Movie“ auswählt, wird die Bestätigungsseite angezeigt.
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.artist != null
- Ausdruck:
$session.params.merch = "Tour Movie"
- Parametervoreinstellungen > Parameter hinzufügen >
price = 25
- Zur neuen Seite wechseln:
Confirmation
Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist und der Nutzer ein „T-Shirt“ und die Größe des T-Shirts ausgewählt hat.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
- Parametervoreinstellungen > Parameter hinzufügen >
price = 25
- Übergang zu Seite:
Confirmation
Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist, der Nutzer ein „Longsleeve“ auswählt und die Größe des T-Shirts ausgewählt wurde.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND $session.params.merch = "Longsleeve" AND $session.params.shirtsize != null
- Parametervoreinstellungen > Parameter hinzufügen >
price = 30
- Übergang zu Seite:
Confirmation
Wenn der Künstler bekannt ist und der Nutzer „CD“ und den Albumnamen auswählt, wird die Bestätigungsseite aufgerufen.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND $session.params.merch = "CD" AND $session.params.album != null
- Parametervoreinstellungen > Parameter hinzufügen >
price = 15
- Übergang zu Seite:
Confirmation
Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist, der Nutzer „Digitales Album“ auswählt und der Albumname ausgewählt wird.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND $session.params.merch = "Digital Album" AND $session.params.album != null
- Parametervoreinstellungen > Parameter hinzufügen >
price = 10
- Übergang zu Seite:
Confirmation
Als Nächstes erstellen wir einige erweiterte bedingte Anweisungen mit Prompts, die fehlende Informationen erkennen. Der nächste Pfad führt zurück zur Musikseite, wenn der Künstler bekannt ist und der Nutzer „CD“ oder „Digitales Album“ auswählt, aber der Albumname nicht ausgewählt wurde.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND ($session.params.merch = "CD" OR $session.params.merch = "Digital Album") AND $session.params.album = null
- Auftragsausführung:
I would also need to know which album you would like to buy!
- Übergang zu Seite:
Music
Bei der letzten Route wird die Bestätigungsseite aufgerufen, wenn der Künstler bekannt ist und der Nutzer ein „T-Shirt“ oder ein „Longsleeve“ ausgewählt hat, aber keine T-Shirt-Größe.
- So fügen Sie eine bedingte Route hinzu:
- Benutzerdefinierter Ausdruck:
$session.params.artist != null AND ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve") AND $session.params.shirtsize = null
- Auftragsausführung:
I would also need to know which shirt size you need!
- Übergang zu Seite:
Shirt Size
Im nächsten Teil des Labs verwenden wir bedingte Ausführungen, um je nach Eingabe unterschiedliche Ausführungsmeldungen zu geben.
7. Bedingte Antworten
Einige Antworten führen je nach Eingabe zu einem anderen Dialog. Die Dialoge verzweigen sich. Wir nennen das bedingte Antworten. Das kann interessant sein, wenn Sie keine Webhook-Auftragsausführungen verwenden, bei denen die bedingten Antworten im Back-End ermittelt wurden. Ein Beispiel könnte so aussehen:
if [condition]
[response]
elif [condition]
[response]
elif [condition]
[response]
else
[response]
endif
- Ein Beispiel für eine [Bedingung] könnte
$session.params.user-age >= 21
sein. Sie verwendet eine ähnliche Formatierung wie die Bedingungen in den Routen. - Eine [response] nimmt die statische Textantwort
- Bedingte Antworten beginnen immer mit
if
. - Die Sperren
elif
undelse
sind optional.
In Dialogflow CX können auch integrierte Systemfunktionen verwendet werden. Beispiel: zum Formatieren eines Datums oder einer Uhrzeit oder zum Anzeigen der aktuellen Uhrzeit ($sys.func.NOW()
)
Schließen wir den Ablauf für den Katalog ab, indem wir die Seiten Bestätigung und Preis korrigieren.
Bestätigungsseite:
Jetzt erstellen wir die Bestätigungsseite. Es gelten die folgenden Anforderungen:
- Wenn merch CD oder Digitales Album ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, album und price.
- Wenn merch T-shirt oder Longsleeve ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, size und price.
- Sonst (und damit wenn merch Tour Movie ist). In der Bestätigung werden die folgenden Felder angezeigt: artist, merch und price.
- Klicken Sie auf die Seite Bestätigung.
- Klicken Sie auf „Ausführung bearbeiten“ > „Kundenservicemitarbeiterantworten“ > Dialog hinzufügen > Bedingte Antwort:
if ($session.params.merch = "CD" OR $session.params.merch = "Digital Album")
The $session.params.merch: $session.params.artist - $session.params.album costs $$session.params.price. Shall I continue to order?
elif ($session.params.merch = "T-shirt" OR $session.params.merch = "Longsleeve")
A $session.params.merch of $session.params.artist size: $session.params.shirtsize costs $$session.params.price. Shall I continue to order?
elif $session.params.merch = "Tour Movie"
The $session.params.merch of $session.params.artist costs $$session.params.price. Shall I continue to order?
else
It looks like something went wrong with your order. You can say "Reset", to restart the order process.
endif
- Create the following Custom payload:
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Yes, confirm"
}
],
"type": "chips"
}
]
]
}
Next, create two intent routes:
confirm.proceed.order
transitions to:Order Process
Flow.decline.proceed.order
transitions toEnd Flow
When the user declines the order, and does not want to proceed the order process, we will have to transition back to the welcome page, but all the parameters have to be cleared. We can do this by specifically setting null to all the possible parameters. You can do this with Parameter presets.
- In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:
Parameter | Value |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Notice that we have created an additional parameter called restart
. If this parameter is present, the Default Start Flow, should know to continue the conversation by showing a customized message.
- Click on the Default Start Flow, Start Page, and create another Conditional Route:
$session.params.restart = "true"
- Fulfillment:
"Welcome back, as the virtual agent of G-Records, I can help you order artists merchandise, you can ask questions about your order or shipping, and I can tell you more which artists are currently signed with us. How can I help?"
- Custom payload:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Which artists?"
},
{
"text": "Which products?"
},
{
"text": "About my order..."
}
]
}
]
]
}
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
Price Page:
Let's also fix the Price TODOs. The price information will be static for now. Click on the Price Page in the Catalog Flow, and use the following entry fulfillment:
- Delete the Agent Says entry fulfillment.
- Create a new Conditional Response:
if $session.params.category = "shirts"
A t-shirt costs $25 and a longsleeve costs $30.
elif $session.params.category = "music"
A CD costs $15. The digital album on MP3 costs $10.
else
A t-shirt costs $25 and a longsleeve costs $30. A CD costs $15 and a digital album on MP3 $10. In case you are interested in the Tour Movie, that one is $25.
endif
Well done, by now you completed the Catalog flow. Your flow should look similar to this diagram:
8. Wrapping up the agent
We are almost at the end of this lab. Let's configure the last flows together, and take in practice all the new things that we have learned.
Creating the My Order Flow
- Go to the My Order Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
My Order Start |
| My Order |
My Order Start |
| My Order Status |
My Order Start |
| My Order Cancellation |
My Order Start |
| End Session |
My Order Start |
| End Flow |
My Order |
| My Order Status |
My Order |
| My Order Cancellation |
Default Start Flow |
| Flow: My Order |
Default Start Flow |
| Flow: My Order |
- Let's create the following entry fulfillment for the My Order Page:
- Entry fulfillment:
I can look up the status of your order, or I can cancel an order.
- In the My Order Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required: checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Fulfillment:
And do you want to Cancel your order, or should I look up the status?
- Click on Add state handler > Event Handlers and create the Event Handler:
No-input default
- Fulfillment:
I'm sorry, what was that? Would you like me to cancel an order or look up the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- Create the Event Handler:
No-match default
- Fulfillment:
Would you like me to cancel an order or lookup the status?
- Custom payload:
{
"richContent": [
[
{
"options": [
{
"text": "Status"
},
{
"text": "Cancel"
}
],
"type": "chips"
}
]
]
}
- In the My Order Status Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Status Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been shipped, it can take up to approx 2 weeks before you will receive your items.
- Add dialogue option > Text:
Is there anything else I can help you with?
- In the My Order Cancelation Page create the following parameter:
- Displayname:
ordernumber
- Entity Type:
@OrderNumber
- Required checked
- Initial prompt fulfillment:
What's the order number? For example ABCD123.
- Event Handler:
No-match default
:To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- Event Handler:
No-input default
:I missed that. To proceed with your order I will need an order number. Order numbers start with 4 characters and end with 3 numbers, such as ABCD123. Which order number may I use?
- In the My Order Cancelation Page create the following conditional route:
- Customize Expression:
$session.params.ordernumber != null
- Fulfillment:
Your order $session.params.ordernumber has been canceled.
- Add dialogue option > Text:
Is there anything else I can help you with?
- Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"
And:
>"What's the status of order DEFG222"
- Select the Start Page and click on the
redirect.end
intent. Create the following fulfillment:Thank you for contacting G-Records! Have a nice day!
- Select the Start Page and click on the
redirect.home
intent. Create the following parameter preset:restart = true
Default Negative intents (Fallback)
When you create a virtual agent, a default negative intent is created for you. You can add training phrases to this intent that act as negative examples that will trigger a No-match event. There may be cases where end-user input has a slight resemblance to training phrases in normal intents, but you do not want these inputs to match any normal intents.
- Try in the simulator:
I don't like Alice Googler
.
You will see that the virtual agent answers with the Product Overview Page, to continue ordering Alice Googler merchandise. However, your end user does not like that artist. Let's use the Default Negative Intent for this.
- Go to Manage > Intents and select the Default Negative Intent.
- Add the following training phrases that will trigger the No-match event.
I don't like Alice Googler
I am not a fan of G's N' Roses
I can't stand the music of the Google Dolls
- Hit Save and test the following sentence in the simulator:
I am really not a fan of the Goo Fighters
This time the No-match
event was triggered, you stayed on the Start Page.
Default Fallback Messages
- Click the Default Start Flow, select the
sys.no-input-default
event handler.
The No-input fallback basically means: No text or speech answers were detected. Likely no answers were given, or the system couldn't hear it. Therefore, let's make the fallback messages more specific. Use the tab key, to create alternative dialogues:
- Remove all answers, and add these text dialogues:
I'm sorry, I didn't receive an answer. Can you say it again?
I missed your answer, can you say it again?
Sorry, I didn't hear anything. Can you say it again?
I couldn't hear what you were saying, what was that?
I'm sorry, I missed your answer. What were you trying to say?
Don't forget to click Save.
- Click the Default Start Flow, select the
sys.no-match-default
event handler.
The No Match fallback basically means: Text or speech answers were detected but nothing in Dialogflow CX got matched.
- Remove all answers, and add these text dialogues:
Sorry, I didn't get that. Can you please rephrase?
I'm sorry, I don't understand. Can you please rephrase?
I don't understand, please rephrase.
Sorry, I didn't get that. What was that?
I didn't get that, can you please rephrase?
Don't forget to click Save.
- It's advised to repeat these steps for the Catalog, My Order, Order Process and Customer Care flows.
Here's a tip: when creating fallback messages, make them more explicit, by rephrasing the previous question or by mentioning an example. You could create these type of No-match and No-input events on Page level when creating parameters. In our labs, we have already done this.
Creating the Order Process Flow
- Go to the Order Process Flow, and create the following intent transitions:
Page (In Flow) | Routes > Intent | Routes > Transition To |
Order Process Start |
| End Session |
Order Process Start |
| End Flow |
Order Process Start |
| New Page: Shipping Details |
- Let's create the following entry fulfillment for the Shipping Details Page:
- Entry fulfillment:
To complete your order I will first need to collect your shipping details.
- Create the following parameters:
These parameters will make use of built-in system entities. System entity support differs for each language. See the docs for more information.
Parameter Display name | Entity | Required? | Initial prompt fulfillment | No-match default | No-input default |
| @sys.person | Required |
|
|
|
| @sys.person | Required |
|
|
|
| @sys.address | Required |
|
|
|
| @sys.any | Required |
|
|
|
| @sys.geo-city | Required |
|
|
|
| @sys.geo-country | Required |
|
|
|
| @sys.email | Required |
|
|
|
- Create the following conditional route:
- Customize Expression:
$page.params.status = "FINAL"
- Transition to new Page:
Payment Details
- Create the following entry fulfillment.
Let's fake it that this virtual agent makes use of Google Pay. Don't worry this tutorial won't make real transactions. Create the following entry dialogues:
- Agent Says:
Alright $session.params.firstname! We will make use of Google Pay, that's connected to your email account: $session.params.email.
- Conditional Response
if $session.params.merch != "Digital Album"
Shipping costs an additional 5 dollars. This will make the total price $$sys.func.TO_TEXT($sys.func.ADD($session.params.price, 5)).
Your merchandise will be shipped to:
$session.params.firstname $session.params.lastname
$session.params.address
$session.params.zipcode $session.params.city
$session.params.country
To continue the order process please explicitly say "I confirm". Do you want to confirm your $session.params.artist $session.params.merch order?
else
The total costs will be: $$session.params.price.
After purchasing the digital album, you will receive an email with the download link.
To continue the order process please explicitly say "I confirm".
Do you want to confirm your $session.params.artist $session.params.merch order?
endif
- Erstellen Sie die folgende Intent-Route.
- Zweck:
confirm.proceed.order
- Kundenservicemitarbeiter:
Thank you for your order! Your merchandise will be shipped today!
- „Dialogoption hinzufügen“ > „Text“:
Here's the order number: ABCD123
- „Dialogoption hinzufügen“ > „Text“:
Have a good day!
- Übergang:
End Session
- Wählen Sie die Seite Start aus und klicken Sie auf den Intent
redirect.end
. Erstelle die folgende Auftragsausführung:Thank you for contacting G-Records! Have a nice day!
- Wählen Sie die Seite Start aus und klicken Sie auf den Intent
redirect.home
. Erstellen Sie die folgende Parametervoreinstellung:restart = true
Super! Inzwischen haben wir einen voll funktionsfähigen Chatbot für einen echten Einzelhändler. Im nächsten Lab testen wir, wie gut der virtuelle Kundenservicemitarbeiter abschneidet.
9. Virtuellen Kundenservicemitarbeiter testen
Mit dem integrierten Simulator können Sie die Dialoge Ihres virtuellen Agents testen. Der Vorteil beim Testen der Abläufe im Simulator besteht darin, dass Sie einen guten Überblick über die Abläufe, Seiten, Parameter und DTMF-Ereignisse erhalten, die der Simulator beim Durchlaufen Ihrer Abläufe erfasst hat. Das erleichtert den Test im Vergleich zu einem Test direkt in einer Integration, da diese Informationen für den Endnutzer ausgeblendet werden. Es ist sogar möglich, Testfälle zu erstellen, zu speichern und wiederzuverwenden. Das ist sehr sinnvoll, wenn Sie Ihre Workflows im Laufe der Zeit pflegen oder bearbeiten und sicher sein möchten, dass keine Ihrer Änderungen Ihre vorherige Arbeit beeinträchtigt.
Es ist auch möglich, zuvor erstellte Testfälle zu exportieren und zu importieren, indem Sie die Tests in Google Cloud Storage oder lokal speichern. Beim Exportieren eines Tests wird eine Blob-Datei heruntergeladen. Weitere Informationen zum Simulator und zu den Testfällen finden Sie in der Dokumentation zum Simulator und zu den Testfällen.
Bevor wir einige Testfälle erstellen, sollten wir zuerst den Rest unseres virtuellen Kundenservicemitarbeiters fertigstellen:
Customer Care-Flow erstellen
- Rufen Sie den Kundenservice-Flow auf und erstellen Sie die folgenden Intent-Übergänge:
Seite (im Navigationsfluss) | Routes > Intent | Routen > Zur Umstellung |
Kundenbetreuung – Start |
| Versand |
Kundenbetreuung – Start |
| Erstattung |
Kundenbetreuung – Start |
| Tausch |
Kundenbetreuung – Start |
| Ablauf beenden |
Kundenbetreuung – Start |
| Sitzung beenden |
- Erstellen Sie die folgenden Eingabeauftragsausführungen für die Seite Versand:
Shipping physical merchandise items can take up to 2 weeks.
Is there anything else I can help you with?
- Erstelle die folgenden Eintragsausführungen für die Seite Erstattung:
We offer free returns and refunds. We provide one free return label for each order. You can use it within 30 days from receiving your order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Erstelle die folgenden Auftragsausführungen für die Seite Tausch:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.
Is there anything else I can help you with?
- Wählen Sie die Seite Start aus und klicken Sie auf den Intent
redirect.end
. Erstelle die folgende Auftragsausführung:Thank you for contacting G-Records! Have a nice day!
- Wählen Sie die Seite Start aus und klicken Sie auf den Intent
redirect.home
. Erstellen Sie die folgende Parametervoreinstellung:restart = true
Testfälle erstellen
- Klicken Sie rechts auf dem Bildschirm auf die Schaltfläche Kundenservicemitarbeiter testen.
Wenn Sie den Simulator zum ersten Mal öffnen, müssen Sie eine Agent-Umgebung und einen aktiven Ablauf auswählen. In den meisten Fällen sollten Sie die Entwurfsumgebung und den Standardstartablauf verwenden.
- Typ:
Hi
- Frage:
Which artists are signed with your label?
- Sagen Sie:
The Google Dolls
- Sagen Sie:
I am interested in buying a shirt
- Sagen Sie:
A t-shirt
- Sagen Sie:
Medium
- Klicken Sie jetzt auf die Schaltfläche „Testfall speichern“. Sie finden es oben im Simulator neben dem Pfeil für „Wiederholen“ und dem Papierkorbsymbol für „Zurücksetzen“.
- Geben Sie die folgenden Informationen an:
- Name des Testfalls:
Buy Google Dolls t-shirt size M
- Tags: #catalog, #shirts, #t-shirt, #TheGoogleDolls
- Klicken Sie auf Speichern.
Erstellen wir weitere Testfälle.
- Löschen Sie zuerst das aktuelle Dialogfeld, indem Sie auf das Symbol „Zurücksetzen“ (Papierkorb) klicken.
- Erstellen Sie die folgenden Testfälle:
T-Shirt mit Alice the Googler kaufen:
>"Buy the Alice Googler t-shirt."
>"XL"
- Name des Testfalls:
Buy the Alice Googler t-shirt
- Tag:
#catalog, #shirts, #t-shirt, #AliceGoogler
T-Shirt in Größe M kaufen: (Der Name des Künstlers wurde nicht erwähnt, aber Sie möchten die Seiten „Bandübersicht“, „Produktübersicht“, „Shirts“ und „Shirtgrößen“ überspringen.)
>"Buy a t-shirt size M"
>"The Google Fighters"
- Name des Testfalls:
Buy a t-shirt size M
- Tag:
#catalog, #shirts, #t-shirt, #TheGoogleFighters
- Beschreibung: (Hinweis: Der Name des Künstlers wurde nicht erwähnt, aber du möchtest die Seiten „Bandübersicht“, „Produktübersicht“, „Shirts“ und „Shirtgrößen“ überspringen.)
Musik von G's N' Roses kaufen (Hinweis: Die Seite mit der Bandübersicht und der Produktübersicht wird übersprungen)
>"Purchase music of G's N' Roses"
>"Live"
>"CD"
- Name des Testfalls:
Purchase music of G's N' Roses
- Tag:
#catalog, #music, #CD, #GsNRoses, #live
- Beschreibung: Hinweis: Die Übersichten zu Bändern und Produkten werden übersprungen.
Prüfen Sie die Preisinformationen:
>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
- Name des Testfalls:
Price info
- Tag:
#catalog, #music, #tourmovie, #shirts
- Beschreibung: Preisinformationen an verschiedenen Stellen im Dialog testen
Aufgezeichnete Testfälle testen
- Wählen Sie im Dialogflow-Hauptmenü links Verwalten > Testfälle aus.
- Wählen Sie alle Testfälle aus und klicken Sie über der Tabelle auf die Schaltfläche Ausführen.
In Dialogflow CX werden alle ausgewählten Testfälle mit der Aufnahme verglichen, die als „Goldener Testfall“ gespeichert wurde. Wenn die Ergebnisse mit den gespeicherten übereinstimmen, werden die Tests bestanden. – Wenn sich etwas an den Aufrufabfolgen geändert hat, z. B. Seiten, die nicht richtig konfiguriert sind, oder Intents, die zu den falschen Seiten weitergeleitet haben, schlagen die Tests fehl.
- Stellen Sie im Simulator folgende Frage:
How long will shipping take?
- Notieren Sie sich das Ergebnis und speichern Sie den Testfall als
Shipping
mit dem Tag#shipping
. - Klicken Sie auf „Verwalten“ > „Testfälle“ und drücken Sie oben rechts im Raster auf die Schaltfläche Ausführen, um nur den Testfall
Shipping
auszuführen.
Dieser Test sollte bestanden werden.
- Kehren Sie zum Kundenserviceablauf zurück, wählen Sie die Seite Start aus und klicken Sie auf den Titel Routen.
Daraufhin wird ein Bildschirm mit einem Raster angezeigt, in dem alle Routen zu sehen sind.
- Entfernen Sie
redirect.shipping.info route
. - Klicken Sie auf „Verwalten“ > „Testfälle“ und drücken Sie oben rechts im Raster auf die Schaltfläche Ausführen, um nur den Testfall
Shipping
auszuführen.
Dieser Test sollte fehlschlagen.
- Sie können auf den fehlgeschlagenen Test klicken, um die Details zu sehen.
In diesem Fall ist der Test mit der folgenden Fehlermeldung fehlgeschlagen:
Page: Page mismatch:
Expected: Shipping
Actual: Start Page
Das liegt daran, dass die Seite im Navigationsfluss nicht mehr vorhanden ist. Wir haben die Seite Shipping
erwartet, sind aber stattdessen immer auf der Seite Start
geblieben. Andernfalls erhalten Ihre Endnutzer eine Fallback-Nachricht.
Mit anderen Worten: Es handelt sich um eine verpasste Anfrage, ein falsch-negatives Testergebnis. Der Test ist fehlgeschlagen. Wir erwarteten die Seite Versand, aber es passiert nichts oder eine Fallback-Nachricht wird angezeigt.
- Kehren Sie zum Kundenserviceablauf zurück und fügen Sie der Seite Start die
redirect.shipping.info
als Intent-Route hinzu. Denken Sie daran, zur Seite Versand zu wechseln und auf Speichern zu klicken. - Erfassen Sie im Simulator den folgenden Testfall:
I want to swap my item
. Speichern Sie diesen Testfall alsSwapping
#swapping
. - Öffnen Sie Verwalten > Intents > redirect.refund.info und fügen Sie die folgende Trainingsformulierung hinzu:
I want to swap this item for a refund
Ohne diesen Trainingssatz würde bei einer Anfrage eines Nutzers, einen Artikel gegen Erstattung umzutauschen, die Absicht redirect.swapping.info ausgelöst werden. Wir möchten jedoch keine Informationen zum Umtausch von Artikeln, sondern zum Thema Erstattungen bereitstellen.
- Erstellen Sie im Simulator den folgenden goldenen Testfall:
I want to swap this item for a refund
und speichern Sie ihn alsSwap for Refund
#refund
. - Kehren Sie zur Absicht Verwalten > Absichten > redirect.refund.info zurück und entfernen Sie die Zeile
I want to swap this item for a refund
. - Kehren Sie zu Verwalten > Testfälle zurück, wählen Sie den Testfall Umtausch gegen Erstattung aus und führen Sie ihn aus.
Ihr letzter Test ist mit der folgenden Fehlermeldung fehlgeschlagen:
If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
Page: Page mismatch:
Expected: Refund
Actual: Swapping
Mit anderen Worten: Es handelt sich um eine missverstandene Anfrage, ein falsch-positives Testergebnis. Der Test ist fehlgeschlagen. Wir haben die Seite Erstattung erwartet, aber die Seite Gerätetausch wurde aktiviert.
Abdeckung
In Dialogflow CX ist die Testabdeckung ein Maß, mit dem beschrieben wird, inwieweit der Dialog des virtuellen Kundenservicemitarbeiters (Seiten und Intents) ausgeführt wird, wenn eine bestimmte Testsuite ausgeführt wird. Bei einem virtuellen Kundenservicemitarbeiter mit hoher Testabdeckung, gemessen als Prozentsatz, wurden während der Tests mehr seiner Dialoge ausgeführt. Das bedeutet, dass die Wahrscheinlichkeit, dass er nicht erkannte Fehler enthält (z. B. nicht erkannte Anfragen), im Vergleich zu einem virtuellen Kundenservicemitarbeiter mit niedriger Testabdeckung geringer ist.
- Um einen Bericht zur Testabdeckung für alle Testfälle aufzurufen klicken Sie auf Abdeckung.
- Klicken Sie auf den Tab Übergänge.
Daraufhin wird die Testabdeckung für alle Seitenübergänge angezeigt.
- Klicken Sie auf den Tab Intents.
Daraufhin wird die Testabdeckung für alle Intents angezeigt.
Herzlichen Glückwunsch! Sie haben jetzt ein vollständiges Beispiel für einen Einzelhandelsbot aus der Praxis erstellt und getestet. Rufen Sie die nächste Seite des Labs auf, um die Schlussfolgerung zu lesen und nützliche Referenzen zu finden.
10. Fazit
Dialogflow CX ist eine Conversational AI Platform (CAIP) zum Erstellen virtueller Kundenservicemitarbeiter wie Chat- oder Sprachbots. Mit Dialogflow CX kann Ihr Team dank visueller Bot-Builder, wiederverwendbarer Intents und der Möglichkeit, mehrstufige Unterhaltungen zu führen, schneller dialogorientierte Anwendungen auf Unternehmensebene erstellen.
In diesem Codelab haben Sie gelernt, wie Sie einen virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen. Wir haben uns mit den folgenden Konzepten befasst:
- Abläufe
- Parameter, benutzerdefinierte und Systementitäten
- iWork Pages
- Zustands-Handler wie Intent-Routen und Bedingungs-Routen
- Statische Auftragsausführungsnachrichten und bedingte Antworten
- Fallback-Intents
- Simulator, Testfälle und Abdeckung
Verweise
Weitere Informationen zu Dialogflow CX finden Sie in den folgenden Blogs und der Dokumentation.