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. Dialogflow CX kann virtuelles Kundenservicepersonal wie Chatbots, Sprach-Bots und Telefonie-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
- Informationen zum Erstellen von Intents
- Seiten und Übergangsseiten mit Zustands-Handlern erstellen
- Weitere Informationen zur Umstellung von Seiten mit Intent-Routen
- 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 Design des Dialogflow CX-Agents sieht so aus:
Voraussetzungen
- Sie benötigen eine Google Identity-/Gmail-Adresse, um einen Dialogflow CX-Agent 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.
Mit einem Rechnungskonto wird festgelegt, wer für eine bestimmte Gruppe von Ressourcen bezahlt. Ein Rechnungskonto kann mit einem oder mehreren Projekten verknüpft werden. 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 Console:
- 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 einem 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 Abläufe jedoch viel häufiger verwenden.
Später in diesem Lab verwenden wir Status-Handler, mit denen Sie einen Ablauf beenden können, sodass er zum nächsten oder vorherigen Ablauf zurückkehrt. Alternativ können Sie auch die vollständige Agent-Sitzung beenden.
Lass uns ein paar Abläufe erstellen.
Abläufe 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
Auf der rechten Seite der Dialogflow CX-Konsole können Sie den virtuellen Kundenservicemitarbeiter mit dem integrierten Simulator testen. Sie können die Unterhaltung am Anfang der Unterhaltung oder in einem bestimmten Ablauf testen.
- Klicken Sie oben rechts auf die Schaltfläche Test-Agent.
- Geben Sie im Feld „Mit einem 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 Baumknoten Start aus.
Daraufhin wird die Seite Start geöffnet. Im Seitenleistenbereich Build > Pages (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 Nutzlast 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 können. Das liegt daran, dass Rich Content wie Vorschlags-Chips eine Integration erfordern. Für die folgenden Schritte ist ein Rechnungskonto erforderlich. Sie können diese Schritte jedoch überspringen, wenn Sie noch keines 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 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 ist das mit Pages möglich. Fahren wir mit dem Lab fort und erstellen Sie zuerst einige Entities (Entitäten) und Intents.
4. Entitätstypen
Entitätstypen steuern, wie Daten aus Endnutzereingaben extrahiert werden. Dialogflow CX-Entitätstypen sind den 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.
Beginnen wir mit der Vorbereitung aller benutzerdefinierten Entitäten, 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 Merchandise-Artikel:
- 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 normalerweise aus vier alphanumerischen und drei 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.) an einen Intent binden. Intents in Dialogflow CX enthalten nur Trainingsformulierungen und können daher wiederverwendet werden. Sie steuert die Unterhaltung nicht mehr. Intents werden also einfach erstellt:
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. Denken Sie sich weitere Trainingsformulierungen aus. Es empfiehlt sich, mindestens 10 Trainingsformulierungen pro Intent zu verwenden, um die verschiedenen Möglichkeiten abzudecken, wie ein Nutzer diesen Intent auslösen könnte. 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 Trainingsformulierungen: Das NLU-System von Dialogflow funktioniert auch mit kürzeren Trainingsformulierungen. Hier sind einige Beispiele.
- Übertraining: Zu viele Trainingsformulierungen für einen Intent können zu einem Übertraining und einem weniger wünschenswerten Ergebnis führen. Es empfiehlt sich, iterative und inkrementelle Tests zu verwenden und Trainingsformulierungen hinzuzufügen, wenn kein Intent zugeordnet ist.
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: Waiting for Coins, Select Candy, Give Candy (Warten auf Coins, Select Candy, Give Candy) und mehrere Eingaben. 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. Damit 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: Wenn ein Intent zugeordnet werden soll, z.B. zum Ändern der Seite basierend auf den Aussagen des Endnutzers. (Blaue Linien im visuellen Diagramm)
- Bedingungsrouten: Wann eine Bedingung geprüft werden soll, z. B. das Ändern der Seite basierend auf bestimmten in der Sitzung gespeicherten Parametern (orangefarbene Linien im Diagramm)
- Event-Handler: Wenn ein bestimmtes Fallback-Ereignis verarbeitet werden soll (z. B. keine Eingabe oder keine Übereinstimmung, um den Endnutzer von einer Intent- oder Bedingungsroute zu unterscheiden) (grüne Linien im 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 Bedingungsrouten, um die Informationen zu erfassen, die Sie für die Bestellung von Merchandise-Artikeln benötigen.
Seiten-Intent-Routen
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 Ablauf Katalog.
- Klicke auf Speichern.
- Wiederholen Sie die obigen Schritte für
redirect.product.overview
und die anderen 11 Zeilen dieser Tabelle:
Seite (im Navigationsfluss) | Routen > 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. In diesem virtuellen Agenten wird er jedoch mit Natural Language trainiert, wobei die Trainingsformulierungen in Intents verwendet werden. Daher wird die Interaktion durch die Unterhaltung und nicht durch DTMF-Optionen gesteuert und ist natürlicher und menschlicher.
Seiten im Katalogablauf 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 sehen Sie ein Flussdiagramm mit allen Seiten im Katalogfluss:
Beachten Sie die Komplexität dieses Ablaufs:
- Ich könnte die Frage zu welchen Künstlern überspringen und sofort die Frage "Welche Merchandise-Artikel sind verfügbar" stellen.
- Im Standard-Startprozess könnte ich beispielsweise fragen: „Ich möchte das Google Dolls-T-Shirt 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 gelangen direkt zur Produktseite.
- 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.
Jetzt können wir den Rest des Ablaufs abschließen:
- Die vorherigen Schritte können für die folgenden Seiten, Intents und Auftragsausführungen 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) | Routen > 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 Katalog auf die Seite Produktübersicht.
- Klicken Sie im Abschnitt Auftragsausführung der Einträge auf Auftragsausführung bearbeiten.
- Verwenden Sie die folgende statische Auftragsausführung (Agent 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 Lebenszyklus von Seiten und dazu, in welcher Reihenfolge diese Ausführungen der Antwortwarteschlange hinzugefügt werden, finden Sie in den Dokumenten auf der Dialogflow CX-Seite.
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 das +. Fügen Sie den Parameter artist hinzu:
- Anzeigename:
artist
- Entitätstyp:
@Artist
- Erforderlich: Häkchen
- 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 können Sie Event-Handler für Parameter verwenden. Sie können aus verschiedenen integrierten Event-Handlern auswählen, z. B. Ungültige Parameter, Äußerungen zu lang, Keine Eingabe, Keine Eingabe beim ersten Versuch, 2. Versuch oder Keine Übereinstimmung. Der Unterschied zwischen „Keine Eingabe“ und „Keine Übereinstimmung“ besteht darin, dass ein Nutzer bei „Keine Eingabe“ nie eine Antwort gegeben hat, während er bei „Keine Übereinstimmung“ zwar eine Antwort gegeben hat, diese aber von Dialogflow CX nicht mit einer Seite abgeglichen werden konnte.
- 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 das folgende Ereignis für die statische Textausführung:
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 bedingten Seitenrouten sehr leistungsstark. 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 Kundenservicemitarbeiter im Einzelhandel 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 erfasst hat. Diese werden auch als Seitenparameter bezeichnet.
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,
- Parameter:
$page.params.status
- Betreiber:
=
- Wert:
"FINAL"
- Jetzt erstellen wir eine spezielle 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 wahr ist, sollten Sie zur Seite Produktübersicht wechseln. Scrollen Sie nach unten zum Abschnitt Umstellung 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
- Entitätstyp:
@Artist
- Erforderlich: Häkchen
- 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
- Entitätstyp:
@Merch
- Erforderlich: Häkchen
- 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
- Erstelle eine Route für den Fall, 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 obige Konfiguration eingerichtet haben, sehen Sie eine Visualisierung ähnlich der folgenden Abbildung. 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 bereits gelernt, wie Sie Abläufe, Entitäten, Intents und Seiten mit Zustands-Handlern wie Intent-Routen und bedingten Routen basierend auf 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 > Event-Handler >
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 den Eintrag „Auftragsausführung“ und scrollen Sie nach unten zu Parametervoreinstellungen. Jedes Mal, wenn die Seite „Hemden“ aktiviert 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 Preisangaben von dem ausgewählten Merchandise-Artikel oder der ausgewählten Kategorie (Musik oder T-Shirts) abhängen, werden wir diesen Teil später in diesem Lab korrigieren. Die Eingabe eines Platzhalters reicht im Moment mehr als aus.
- 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 Abzweigung zu Preisinformationen vornehmen können. (Shirt, Shirt Size, Musik, Transportunternehmen 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"
- Übergang zur neuen Seite:
Shirts
- So fügen Sie eine bedingte Route hinzu:
- Übereinstimmung mit JEDER Regel (UND)
- Ausdruck:
$session.params.category = "shirts"
- Ausdruck:
$session.params.size = "null"
- Übergang zur neuen Seite:
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
- 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 Eintragauftragsausfü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 Eintragauftragsausführung:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
},
{
"text": "Price?"
}
]
}
]
]
}
- Erstellen Sie eine Intent-Route:
redirect.price
mit einem Übergang zur SeitePrice
. - Erstellen Sie den folgenden Parameter:
- Parameter für
album
– Entitätstyp:@Album
–Required
,Redact In Log
- Parameter > Event-Handler >
No-match default
- Parameter > Event-Handler-Auftragsausführung:
You can choose between Greatest Hits and Live Album. Which of these do you want?
- Parameter > Benutzerdefinierte Nutzlast für die Auftragsausführung im Event-Handler:
{
"richContent": [
[
{
"type": "chips",
"options": [
{
"text": "Greatest Hits"
},
{
"text": "Live"
}
]
}
]
]
}
- Parameter > Event-Handler >
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 > Benutzerdefinierte Nutzlast für die Auftragsausführung im Event-Handler:
{
"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 |
|
|
- 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 > Event-Handler-Auftragsausführung: 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:
Anzeigename des Parameters | Parameter-Entitätstyp | Vorabprüfung |
|
| Erforderlich, im Log entfernen |
|
| Erforderlich, im Log entfernen |
- Für den artist-Parameter ist die folgende anfängliche Ausfü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.
- 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 „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
Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist und der Nutzer „CD“ und den Albumnamen auswählt.
- 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. Die nächste Route wechselt zurück zur Musikseite, wenn der Künstler bekannt ist und der Nutzer eine "CD" oder ein "Digitales Album", aber keinen Albumnamen gewählt hat.
- 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
Bei einigen Antworten wird je nach Eingabe ein anderer Dialog zurückgegeben. Die Dialogfelder verzweigen sich. Dies nennen wir 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. 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 der Merchandise-Artikel CD oder Digital 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.
- Andernfalls (und das heißt, wenn der merch-Wert Tourfilm 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 Startseite 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! Mittlerweile haben wir einen voll funktionsfähigen Chatbot für 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 des Testens der Abläufe im Simulator besteht darin, dass Sie einen guten Überblick über 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, Testläufe 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 bisherige 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) | Routen > Intent | Routen > Zur Umstellung |
Customer Care Start |
| Versand |
Customer Care Start |
| Erstattung |
Customer Care Start |
| Tausch |
Customer Care Start |
| Ablauf beenden |
Customer Care-Start |
| Sitzung beenden |
- Erstellen Sie die folgenden Einträge für die Seite Shipping (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 Startseite aus und klicken Sie auf den Intent
redirect.end
. Erstellen Sie 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“. Oben im Simulator finden Sie sie neben dem Pfeil zum Wiederholen und zum Zurücksetzen des Papierkorbsymbols.
- Geben Sie die folgenden Informationen an:
- Name des Testlaufs:
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
Ein T-Shirt in Größe M kaufen: (Hinweis: Der Name des Künstlers wurde nicht erwähnt. Du solltest aber die Bandübersicht, die Produktübersicht, die Seiten mit den Hemden und T-Shirts ü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 den 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
Vorab aufgezeichnete Testläufe testen
- Wählen Sie links im Dialogflow-Hauptmenü Manage > Test Cases (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 dazu aufzurufen.
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, aber stattdessen haben wir die Seite Start
nie verlassen. (oder Ihre Endnutzer erhalten eine Fallback-Nachricht.)
Mit anderen Worten: Dies ist 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. Wechseln Sie zur Seite Versand und klicken Sie auf Speichern. - 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 eine 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 hatten erwartet, dass die Seite Erstattung angezeigt wird, aber die Seite Tauschen wurde aktiviert.
Abdeckung
In Dialogflow CX ist die Testabdeckung ein Messwert, der angibt, in welchem Umfang der Dialog des virtuellen Kundenservicemitarbeiters (Seiten und Intents) ausgeführt wird, wenn eine bestimmte Testsuite ausgeführt wird. Ein virtueller Kundenservicemitarbeiter mit hoher Testabdeckung, gemessen in Prozent, hat während des Tests mehr von seinen Dialogen ausgeführt. Das deutet darauf hin, dass er im Vergleich zu einem virtuellen Kundenservicemitarbeiter mit geringer Testabdeckung weniger Fehler enthält (z. B. nicht erkannte Anfragen).
- 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. Gehen wir nun zur nächsten Lab-Seite, um die Schlussfolgerung zu lesen und einige praktische Referenzen zu finden.
10. Fazit
Dialogflow CX ist eine Plattform für konversationelle KI (Conversational AI Platform, CAIP), mit der Sie virtuelle Agenten wie Chat- oder Sprachbots erstellen können. Mit Dialogflow CX kann Ihr Team mithilfe von visuellen Bot-Buildern, wiederverwendbaren Intents und der Möglichkeit, Unterhaltungen über mehrere Themen hinweg schneller dialogorientierte Lösungen für Unternehmen zu erstellen.
In diesem Codelab haben Sie gelernt, wie Sie einen virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen. Wir haben die folgenden Konzepte angesprochen:
- Abläufe
- Parameter, benutzerdefinierte und Systementitäten
- iWork Pages
- State Handler wie Intent-Routen und Bedingungsrouten
- Statische Auftragsausführungsnachrichten und bedingte Antworten
- Fallback-Intents
- Simulator, Testläufe und Abdeckung
Verweise
Weitere Informationen zu Dialogflow CX finden Sie in den folgenden Blogs und der Dokumentation.