Dialogflow CX: Virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen

1. Hinweis

In diesem Codelab erfahren Sie, wie Sie mit Dialogflow CX, einer CAIP (Conversational AI Platform) zum Erstellen von konversationellen Benutzeroberflächen, einen Einzelhandels-Chatbot erstellen. Mit Dialogflow CX können virtuelle Kundenservicemitarbeiter wie Chatbots, Voicebots und Telefonie-Gateways implementiert werden. Außerdem werden mehrere Kanäle in über 50 Sprachen unterstützt.

In diesem Codelab erfahren Sie, wie Sie einen Website-Chatbot für den Einzelhandel erstellen. Das fiktive Unternehmen, für das wir den Chatbot entwickeln, heißt G-Records. G-Records ist ein Rock-Plattenlabel 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 Band-Merchandise an alle Rockfans.

Am Ende dieses Codelabs können Sie den Chatbot verwenden, um T-Shirts oder Musik zu bestellen oder sich nach Ihrer Bestellung zu erkundigen.

Endergebnis

Lerninhalte

Sie lernen die Vorteile von Dialogflow CX im Vergleich zu Dialogflow ES kennen. Dazu gehören die folgenden Konzepte:

  • Virtuellen Dialogflow CX-Agent in Google Cloud erstellen
  • Informationen zum Erstellen von Abläufen
  • Informationen zum Erstellen von Rechtssubjekten
  • Informationen zum Erstellen von Intents
  • Seiten erstellen und mit Zustands-Handlern Übergänge zwischen Seiten einrichten
  • Seiten mit Intent-Routen umstellen
  • Seiten mit Parametern und Bedingungsrouten überblenden
  • Bedingte Antworten mit Systemfunktionen zurückgeben
  • Informationen zum Erstellen von Fallback-Nachrichten
  • Simulator verwenden
  • Testfälle und Testabdeckung erstellen

Das endgültige Design des Dialogflow CX-Agents sieht so aus:

Endergebnis

Voraussetzungen

  • Sie benötigen eine Google-Identität bzw. eine 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, Abrechnungsinformationen 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.

Neues Projekt erstellen

Dialogflow API aktivieren

Wenn Sie Dialogflow verwenden möchten, müssen Sie die Dialogflow API für Ihr Projekt aktivieren.

  1. Wählen Sie das Projekt aus, für das Sie die API aktivieren möchten, und klicken Sie auf Weiter.
  2. Minimieren Sie das Menü „APIs und Dienste“ und klicken Sie auf Anmeldedaten erstellen.
  3. Klicken Sie auf Anwendungsdaten.
  4. Wählen Sie Nein, ich verwende sie nicht aus, da Sie Kubernetes Engine, App Engine oder Cloud Functions derzeit nicht verwenden.
  5. Klicken Sie auf Fertig.

Anmeldedaten einrichten

Neuen Dialogflow CX-Agent erstellen

So erstellen Sie einen neuen Dialogflow CX-Agent:

  1. Wählen Sie das zuvor erstellte Google Cloud-Projekt aus.
  2. 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.
  • en – Englisch als Standardsprache auswählen

Klicken Sie auf Erstellen.

KI-Agenten erstellen

Okay, wir sind bereit. Jetzt können wir endlich mit der Modellierung unseres virtuellen Kundenservicemitarbeiters beginnen.

3. Abläufe

Komplexe Dialoge enthalten oft mehrere Unterhaltungsthemen. Im Fall des Chatbots, den wir für G-Records zum Verkauf von Band-Merchandise entwickeln, hätten wir Dialoge zum Produktkatalog, zur Zahlung, zum Bestellstatus und zu Kundenservicefragen. Wir könnten diese Unterhaltungsthemen in Abläufe aufteilen.

Einzelhandels-Flow

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.

Flows sind ein neues Konzept in Dialogflow CX. In Dialogflow Essentials gibt es das Konzept von Mega-Agents, die Flows ähneln. Allerdings würden Sie Flows viel häufiger verwenden.

Später in dieser Übung verwenden wir Status-Handler, mit denen ein Ablauf beendet werden kann (sodass zum nächsten oder vorherigen Ablauf gesprungen wird), oder Sie können die gesamte Agent-Sitzung beenden.

Lass uns einige Abläufe erstellen.

Flows erstellen

  1. Klicken Sie in Dialogflow CX auf das Symbol + > Ablauf erstellen.
  2. Geben Sie den Namen Catalog ein und drücken Sie die Eingabetaste.

Ablauf erstellen

Ihr erster Flow Katalog wurde erstellt. Erstellen Sie nun die anderen Abläufe:

  • Order Process
  • My Order
  • Customer Care

Abläufe

Später in diesem Lab werden wir Handler für den Seitenstatus festlegen, damit die Visualisierung schließlich so aussieht:

Abläufe

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 ab dem Anfang oder ab einem bestimmten Ablauf testen.

  1. Klicken Sie oben rechts auf dem Bildschirm auf die Schaltfläche Test-Agent.
  2. Geben Sie in das Feld „Mit dem Agenten sprechen“ Folgendes ein: Hello Der virtuelle Agent antwortet mit einem standardmäßigen Begrüßungstext: Hallo! Wie kann ich Ihnen helfen?

Simulator

Wir ändern diesen Standardbegrüßungstext.

Standardstartablauf

Erstellen wir zuerst eine Intent-Route, die ausgelöst wird, sobald Sie den virtuellen Kundenservicemitarbeiter begrüßen.

  1. Klicken Sie in der Seitenleiste links auf Build > Flows (Erstellen > Abläufe), dann auf Default Start Flow (Standardstartablauf) und wählen Sie den Baumknoten Start aus.

Dadurch wird die Seite Start geöffnet. Die Startseite wurde automatisch im Seitenleistenbereich Build > Pages (Erstellen > Seiten) ausgewählt.

  1. Klicken Sie unter Start > Routen auf den 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.

  1. Entfernen Sie alle Einträge unter Agent says und fügen Sie diesen neuen 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 einige Schaltflächen für schnelle Antworten / Vorschlagschips.

  1. Klicken Sie auf Add dialogue option > Custom payload (Dialogoption hinzufügen > Benutzerdefinierte Nutzlast) und verwenden Sie das folgende Code-Snippet.
  2. 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..."
            }
          ]
        }
      ]
    ]
  }

Standard-Begrüßungs-Intent

  1. Testen Sie den Willkommens-Intent im Simulator.

Sie fragen sich wahrscheinlich, warum Sie keine Rich-Inhalte sehen. Das liegt daran, dass Rich Content wie Vorschlags-Chips von einer Integration abhängt. Für die folgenden Schritte ist ein Rechnungskonto erforderlich. Sie können sie überspringen, wenn Sie keines haben.

  1. Klicken Sie in der linken Seitenleiste auf Verwalten > Integrationen.
  2. Wählen Sie Dialogflow Messenger aus und klicken Sie auf Verbinden.
  3. Klicken Sie im Pop‑up-Fenster auf Aktivieren.

Integration aktivieren

Ein weiteres Pop-up-Fenster wird eingeblendet, diesmal mit JavaScript-Code für die Integration, den Sie in Ihre Website einfügen können, um die Dialogflow Messenger-Komponente in Ihre Website einzubinden. Da wir noch keine Website haben, testen wir den virtuellen Kundenservicemitarbeiter direkt im Tool.

Dialogflow Messenger – Jetzt testen

  1. Klicken Sie auf den Link Jetzt testen.
  2. Klicken Sie rechts unten auf das Chatbotsymbol, um das Chatfenster zu öffnen. Geben Sie Hello ein, um die Unterhaltung zu starten.

Dialogflow Messenger – Jetzt testen

Wenn Sie derzeit auf die Vorschlagschips klicken, versteht der virtuelle Kundenservice-Agent 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. Zuerst erstellen wir einige Entitäten und Intents.

4. Entitätstypen

Entitätstypen steuern, wie Daten aus Endnutzereingaben extrahiert werden. Dialogflow CX-Entitätstypen ähneln sehr stark Dialogflow ES-Entitätstypen. 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.

Zuerst müssen wir alle benutzerdefinierten Einheiten vorbereiten, bevor wir die Seiten in einem Ablauf gestalten können. Wir erstellen die folgenden Elemente:

Dialogflow-Entitäten

Entitäten erstellen

Wir erstellen jetzt eine Künstler-Entität.

  1. Klicken Sie auf Verwalten > Entitätstypen.
  2. 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 Fuzzy Matching (Ungenaue Übereinstimmung). (Wenn Sie den Bandnamen falsch schreiben, wird er möglicherweise trotzdem der richtigen Entität zugeordnet.)
  • Aktivieren Sie unter „Erweiterte Optionen“ auch Im Log unkenntlich machen. Wenn Sie den Namen der Band falsch schreiben, wird er im Log korrigiert.
  1. Klicken Sie auf Speichern.

Außerdem benötigen wir eine Entität für den Artikel Merch:

  1. Klicken Sie auf Verwalten > Entitätstypen.
  2. 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 Synonymen Disc, Physical CD)
  1. Klicken Sie auf Speichern.

Wir benötigen auch eine Entität für das Album:

  1. Klicken Sie auf Verwalten > Entitätstypen.
  2. Klicken Sie auf + Erstellen.
  • Anzeigename: Album
  • Einheiten:
  • Live
  • Greatest Hits (mit Synonym: Hits)
  1. Klicken Sie auf Speichern.

Außerdem benötigen wir eine Entität für Kleidergrößen:

  1. Klicken Sie auf Verwalten > Entitätstypen.
  2. 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
  1. Klicken Sie auf Speichern.

Außerdem gibt es eine Entität für Bestellnummern, die in der Regel aus 4 alphanumerischen Zeichen und 3 Zahlen bestehen. (z. B. ABCD123)

  1. Klicken Sie auf Verwalten > Entitätstypen.
  2. Klicken Sie auf + Erstellen.
  • Anzeigename: OrderNumber
  • RegExp-Entitäten
  • Entität: [A-Z]{4}[0-9]{3}
  1. Klicken Sie auf Speichern.

Die Konfiguration der Einheit sollte in etwa so aussehen:

@Artist: @Artist Entity Type

@Merch: @Merch Entity Type

@Album: @Album Entity Type

@ShirtSize: Entitätstyp „@ShirtSize“

@OrderNumber: Entitätstyp „@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. Sie wurden in Dialogflow CX erheblich vereinfacht und sind kein Baustein mehr für die Unterhaltungssteuerung. Dialogflow CX verwendet nur Intents, um die Äußerungen der Nutzer zuzuordnen. In Dialogflow ES mussten Sie alles an einen Intent binden (Parameter, Ereignisse, Fulfillment usw.). Intents in Dialogflow CX enthalten nur Trainingsformulierungen und sind daher wiederverwendbar. Sie steuert die Unterhaltung nicht mehr. Das Erstellen von Intents ist ganz einfach:

In den Trainingsformulierungen in Intents können Entitäten verwendet werden, um „variable“ Eingaben zu extrahieren. Daher ist es ratsam, Ihre Entitätstypen im Voraus zu erstellen. Das haben wir auf der vorherigen Seite mit Laborschritten getan.

Intents erstellen

Wir beginnen damit, alle Intents vorzubereiten, bevor wir die Seiten in einem Ablauf gestalten können.

  1. Klicken Sie auf Verwalten > Intentionen.
  2. Klicken Sie auf + Erstellen.

Verwenden Sie die folgenden Informationen:

  • Anzeigename redirect.artists.overview
  • Textzeile Artists overview: The bands supported by the label

Neue Intention

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

Trainingssätze

  1. Klicken Sie auf Speichern.
  1. Fahren wir nun fort und erstellen alle anderen Intents. Lassen Sie Ihrer Fantasie freien Lauf, um weitere Trainingsformulierungen zu entwickeln. Eine Best Practice ist es, mindestens 10 Trainingsformulierungen pro Intent zu haben, um die verschiedenen Möglichkeiten abzudecken, wie ein Nutzer diesen Intent auslösen kann. Für dieses Lab sollte auch weniger ausreichen.

Achten Sie auf Folgendes:

  • Hinweis: Wenn Sie Ihre Trainingsformulierung eingeben, annotiert Dialogflow CX Ihre Entitäten automatisch. Wenn das nicht der Fall ist, müssen Sie möglicherweise Ihre Entität aktualisieren (indem Sie ein Synonym hinzufügen) oder die Trainingsformulierung manuell annotieren.
  • Kürzere Trainingsformulierungen: Das NLU-System von Dialogflow kann auch mit kürzeren Trainingsformulierungen arbeiten. Hier finden Sie einige Beispiele.
  • Übertraining: Zu viele Trainingsformulierungen für einen Intent können zu Übertraining und einem weniger wünschenswerten Ergebnis führen. Es empfiehlt sich, iterative und inkrementelle Tests durchzuführen und Trainingsformulierungen hinzuzufügen, wenn kein Intent zugeordnet wird.

Anzeigename

Trainingsformulierungen

redirect.product.overview

"Which products do you sell?", "What merchandise items do you have?", "What are you selling?", "What are the items?", "Which products?" "What merchandise?", "Please tell me what you have"

confirm.artists.overview

"Yeah, let me buy merchandise", "Yes, I want to purchase something", "Yes, I would like to order merchandise from Alice Googler" (Hinweis: Alice Googler sollte als @Artist-Entität erkannt werden.), "Ok, let's buy stuff."

redirect.price

"How much does a t-shirt cost?", "What's the price for the tour movie?", "The album is how much?", "I want to know the price of a longsleeve shirt", "What's the price difference?", "What does each product costs?", "What does it cost?", "What is the price?"

redirect.product

"Tour movie", "I am interested in a t-shirt", "Can I buy a digital album?", "I want the CD", "I want to buy something", "Can I purchase a record?", "I want to buy a t-shirt size M of The Google Dolls", "Can I purchase the Alice Googler digital album?"

redirect.product.of.artist

"Yeah, let's shop", "Give me merch of Alice Googler", "Shirts of The Google Dolls that would be nice.", "Yes", "I want The Goo Fighters stuff", "Yes, I want to order merchandise", "Yep, give me items of G's N' Roses", "Go for it", "Anything Alice Googler", "I am a G's N' Roses fan!", "Google Dolls", "Yes of The Google Dolls"

redirect.shirts

"Shirts", "I want to buy shirts", "I am interested in shirts", "I want a shirt", "Shirts of G's N' Roses please", "Give me shirts of the Google Dolls", "I want to buy shirts of Alice Googler"

redirect.music

"Music", "I want to buy music", "I am interested in music", "Give me music of the Goo Fighters", "Music of Goo Fighters please", "Interested in buying the Alice Googler album", "Purchase Alice Googler music"

redirect.album

"Hits", "Live Album", "I want the Greatest Hits Digital Album", "Give me the Greatest Hits CD", "Hits on MP3"

redirect.shirt.size

"XS", "I have M", "I want Large", "My size is 3XL", "Extra Large is the size"

redirect.my.order

"About my order", "I have a question about my order", "My order is ABCD123, I have a question about my order."

status

redirect.my.order.status

redirect.my.order.canceled

"I want to cancel my order", "I want to cancel order ABCD123", "Please cancel order ABCD123", "Undo my order", "Stop my order", "Cancel"

redirect.shipping.info

"How long will it take?", "How long is shipping?", "How long does shipping take?", "When will I receive it?"

redirect.refund.info

"I want a refund.", "Can I get a refund", "I want to return the CD", "I want to return my t-shirt"

redirect.swapping.info

"I want to swap my item", "Can I change my t-shirt for a larger size?", "Can I change my product?", "I want to swap the CD"

redirect.order.process

"I want to buy a t-shirt of the Google Dolls, size S", "Let me buy the digital CD of Alice Googler", "Get me the tour movie of G's N' Roses", "Buy a longsleeve shirt of The Goo Fighters", "Purchase the Alice Googler t-shirt", "Please order me the Google Dolls CD"

confirm.proceed.order

"Yes", "Yes, please continue", "Yes order", "I want to order", "Yeah", "Yep", "I confirm", "Agree", "Go ahead", "Order", "Buy it", "Purchase", "Okay"

decline.proceed.order

"No", "I rather not", "I don't want it anymore", "Don't order", "Stop", "Not anymore", "Nope", "Go back", "Reset", "Decline", "I don't need it"

redirect.home

"Go back", "Home", "Help", "What else can I ask", "Restart", "Can you tell me what I can order?", "What questions can I ask", "I need help", "Advice please", "Hi", "Hello", "Good day!"

redirect.end

"No that's it, goodbye", "Bye", "Cheers", "End", "That's it", "No more questions", "Exit", "Have a good day", "End Call", "Close"

Nachdem wir unsere wiederverwendbaren Elemente (Abläufe, Entitäten und Intents) vorbereitet haben, können wir sie zusammenfügen, 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 ist ein Verkaufsautomat, der als endlicher Automat modelliert werden kann. Es hat die folgenden Status: „Warten auf Coins“, „Süßigkeit auswählen“, „Süßigkeit geben“ und „Süßigkeit gegeben“. Je nach Eingabe wechselt es zwischen diesen Status. Wenn Sie beispielsweise eine Münze einwerfen, wechselt der Automat von „Warten auf Münzen“ zu „Süßigkeit auswählen“. Mit Seiten können wir diese Status für einen virtuellen Agenten von Dialogflow CX modellieren.

Wenn ein Endnutzer in einer Unterhaltung mit Dialogflow CX interagiert, wird die Unterhaltung von Seite zu Seite verschoben. Zu jedem Zeitpunkt ist genau eine Seite die aktuelle Seite. Diese aktuelle Seite wird als aktiv bezeichnet. Weiter wird der mit dieser Seite verknüpfte Ablauf als aktiv angesehen.

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 KI-Agents mit vielen Seiten und mehreren Gesprächsrunden 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. Das kann auch bedingt erfolgen, um Unterhaltungen zu verzweigen.

Der Status einer Unterhaltung wird durch die Verarbeitung von Übergängen zwischen Seiten mit drei verschiedenen Routentypen gesteuert:

  • Intent-Routen: Wenn ein Intent zugeordnet werden soll, z.B. wenn die Seite basierend auf den Angaben eines Endnutzers geändert wird. (Blaue Linien im visuellen Diagramm)
  • Bedingungsrouten: Wenn eine Bedingung geprüft werden soll, z.B. wenn die Seite basierend auf bestimmten in der Sitzung gespeicherten Parametern geändert wird (orangefarbene Linien im visuellen Diagramm).
  • Event-Handler: Wenn ein bestimmtes Fallback-Ereignis verarbeitet werden soll (z.B. „No Input“ oder „No Match“, um den Endnutzer entweder zu einem Intent oder einem Bedingungspfad weiterzuleiten) (grüne Linien im visuellen Diagramm).

Die Äußerungen in der Unterhaltung (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: Wann ein Auftragsausführungs-Webhook für dynamische Antworten aufgerufen wird

Für unseren Einzelhandels-Bot erstellen wir einige Intent-Routen und stellen einige statische Antworten für die Eingabeaufforderung bereit, 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 eine Bestellung von Fanartikeln benötigen.

Intent-Routen für Seiten

Seiten im Standardstartablauf erstellen

Hier ist ein Flussdiagramm des Standardstartablaufs:

Verbundene Katalogseiten

Klicken wir gemeinsam auf diesen Link:

  1. Klicken Sie auf Build > Default Start Flow (Erstellen > Standardstartablauf).
  2. Klicken Sie auf Startseite.
  3. Klicken Sie neben Routen auf das Symbol +.
  4. redirect.artists.overview hinzufügen
  5. Scrollen Sie nach unten zu Umstellung und stellen Sie auf den Katalog-Ablauf um.
  6. Klicken Sie auf Speichern.
  7. Wiederholen Sie die oben genannten Schritte für redirect.product.overview und die anderen 11 Zeilen aus dieser Tabelle:

Seite (im Ablauf)

Routen > Intention

Routen > Umstellung auf

Starten

Default Welcome Intent

-

Starten

redirect.artists.overview

Ablauf: Katalog

Starten

redirect.product.overview

Ablauf: Katalog

Starten

redirect.shirts

Ablauf: Katalog

Starten

redirect.music

Ablauf: Katalog

Starten

redirect.product

Ablauf: Katalog

Starten

redirect.product.of.artist

Ablauf: Katalog

Starten

redirect.refund.info

Flow: Kundenservice

Starten

redirect.shipping.info

Flow: Kundenservice

Starten

redirect.swapping.info

Flow: Kundenservice

Starten

redirect.my.order

Ablauf: Meine Bestellung

Starten

redirect.my.order.canceled

Ablauf: Meine Bestellung

Starten

redirect.my.order.status

Ablauf: Meine Bestellung

Starten

redirect.end

Seite: Sitzung beenden

Standardrouten für die Startseite

Der Standardstartablauf funktioniert wie ein Optionsmenü beim Anrufen eines Callcenters. In diesem virtuellen Kundenservicepersonal wird es jedoch mit natürlicher Sprache trainiert, wobei die Trainingsformulierungen in Intents enthalten sind. Die Interaktion erfolgt daher über Gespräche und nicht über DTMF-Optionen. Sie ist natürlicher und menschlicher.

Standardrouten für die Startseite

Seiten im Katalogablauf erstellen

Das folgende Chat-Transkript 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?"

Der Dialog sieht anders aus, wenn Sie Musik oder Tour-Film auswählen. 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 finden Sie ein Flussdiagramm aller Seiten im Katalogablauf:

Verbundene Katalogseiten

Beachten Sie die Komplexität dieses Ablaufs:

  • Ich könnte die Frage nach den Künstlern überspringen und sofort fragen: „Welche Merchandise-Artikel sind verfügbar?“
  • Im Standard-Startablauf könnte ich fragen: „Ich möchte ein T‑Shirt von The Google Dolls kaufen“ oder „Ich möchte etwas kaufen“. Das bedeutet, dass der virtuelle Kundenservicemitarbeiter Folgefragen stellt, um die Slots für diese erforderlichen Parameter zu füllen. Sie werden direkt zur Produktseite weitergeleitet.
  • Das Preisdialogfeld stammt von der Preis-Seite, die wiederverwendet wird.
  • Der Dialog für den Tour-Film sieht zwar am einfachsten aus, aber wir werden ihn besonders gestalten. Wir werden diesen Teil des Dialogs wiederverwenden, damit Endnutzer ihn auch direkt für eines der anderen Produkte eingeben können, wenn sie alle Informationen auf einmal angeben:
 > "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 mit dem Verknüpfen der Seiten.

  1. Klicken Sie auf Entwickeln > Katalog.
  2. Klicken Sie auf Startseite.
  3. Klicken Sie neben Routen auf das Symbol +.
  4. redirect.artists.overview hinzufügen
  5. Scrollen Sie nach unten zu Übergang, wählen Sie Seite und dann + Neue Seite aus.
  6. Verwenden Sie den Seitennamen Artist Overview und klicken Sie auf Speichern.

Schließen Sie nun den Rest des Ablaufs ab:

  1. Die vorherigen Schritte können mit den folgenden Seiten, Intents und Erfüllungen wiederholt werden. Übernehmen Sie diese Tabelle. Seite ist die Seite, die Sie im Ablauf auswählen. Routen > Übergang zu ist der neue Ablauf oder die neue Seite, die Sie erstellen und zu der Sie wechseln.

Seite (im Ablauf)

Routen > Intention

Routen > Umstellung auf

Katalogstart

redirect.artists.overview

Künstlerübersicht

Katalogstart

redirect.product

Produkt

Katalogstart

redirect.product.overview

Produktübersicht

Katalogstart

redirect.product.of.artist

Produktübersicht

Katalogstart

redirect.shirts

Hemden

Katalogstart

redirect.music

Musik

Katalogstart

redirect.end

Sitzung beenden

Katalogstart

redirect.home

Flow beenden

Künstlerübersicht

redirect.product.of.artist

Produktübersicht

Fügen wir nun weitere statische Ausführungen hinzu.

  1. Klicke im Katalog-Workflow auf die Seite Künstlerübersicht.
  2. Klicken Sie im Abschnitt Einstiegs-Fulfillment auf Fulfillment bearbeiten.
  3. Verwende die folgenden statischen Formulierungen (Agent sagt):
  • The following bands are signed with G-Records: Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.
  1. Klicken Sie auf Speichern.
  2. Klicken Sie im Katalogablauf auf die Seite Produktübersicht.
  3. Klicken Sie im Abschnitt Einstiegs-Fulfillment auf Fulfillment bearbeiten.
  4. Verwende die folgende statische Antwort (Agent sagt):
  • We sell shirts, music or the tour movie.
  1. 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 Langarmshirts sollten Sie auch @ShirtSize erfassen. Wenn Sie Musik bestellen möchten, benötigen Sie außerdem einen @Carrier- und @Album-Namen.

Diese Parameter müssen als erforderlich markiert werden. Wenn es erforderlich ist, sollten Sie benutzerdefinierte Prompts bereitstellen, damit sich der Agent an den Endnutzer erinnert und die richtigen Antworten gibt, damit diese Parameter erfasst werden können. Dafür gibt es in Dialogflow CX einige Mechanismen.

Sie können beispielsweise benutzerdefinierte statische Nachrichten zur Auftragserfüllung im Bereich Parameter angeben. Wenn der Parameter erforderlich ist, werden diese Parameter-Fulfillments angezeigt. Diese Antwortnachrichten werden der Antwortwarteschlange hinzugefügt. Während der Unterhaltungsrunde eines Agents ist es möglich (und manchmal gewünscht), 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-Seitendokumentation.

Parameter auf der Seite „Künstlerübersicht“ erstellen

Sehen wir uns einige Seitenparameter an:

  1. Klicke im Katalog-Ablauf auf die Seite Künstlerübersicht.
  2. Klicken Sie im Block Parameter auf +. Fügen Sie den Parameter artist hinzu:
  • Anzeigename: artist
  • Typ der Rechtspersönlichkeit: @Artist
  • Erforderlich: Check
  • Im Log entfernen: Prüfen
  1. Nun fügen wir einige benutzerdefinierte Nachrichten für die Erfüllung von Parametern hinzu. Wenn der Parameter artist noch nicht vom virtuellen Kundenservicemitarbeiter erfasst wurde, wird der Antwortwarteschlange die folgende Antwort des Agents hinzugefügt:

From which of these artists would you like to order merchandise?

  1. Fügen Sie eine zweite Dialogoption hinzu, die umfangreiche Vorschlagschips 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"
      }
    ]
  ]
}

Es ist möglich, verschiedene Fallback-Aufforderungen für die Ausführung basierend auf der Anzahl der Versuche zu verarbeiten, die der Endnutzer unternommen hat, um diese zu beantworten. Dazu verwenden Sie Event-Handler für Parameter. Es gibt verschiedene integrierte Ereignishandler, z. B. Ungültige Parameter, Äußerungen zu lang, Keine Eingabe, Keine Eingabe beim ersten Versuch, Zweiter Versuch oder Keine Übereinstimmung. Der Unterschied zwischen „Keine Eingabe“ und „Keine Übereinstimmung“ besteht darin, dass der Nutzer bei „Keine Eingabe“ nie eine Antwort gegeben hat, während er bei „Keine Übereinstimmung“ eine Antwort gegeben hat, die Dialogflow CX jedoch nicht mit einer Seite abgleichen konnte.

  1. Scrollen Sie nach unten zum Abschnitt Event-Handler für erneute Eingabeaufforderungen.
  2. Klicken Sie auf Event-Handler hinzufügen und wählen Sie das Ereignis aus: No-match default
  3. Verwenden Sie das folgende statische Ereignis text fulfillment:

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?

  1. Klicken Sie auf Speichern.
  2. Klicken Sie auf Event-Handler hinzufügen und wählen Sie das Ereignis aus: No-input default
  3. Verwenden Sie das folgende statische Ereignis text fulfillment:

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?

  1. Klicken Sie auf Speichern.

Bedingungsrouten für Seiten

Parameter sind in Kombination mit seitenbedingten Routen sehr leistungsstark. Wenn eine Bedingung als „true“ ausgewertet wird, wird die zugehörige Seitenroute aufgerufen. Eine Bedingung kann beispielsweise Ein Parameter entspricht einem bestimmten Wert, Ein Parameter darf nicht fehlen oder Ein ausgefülltes Formular sein. Weitere Informationen zu Parametern und Bedingungen finden Sie in der Dialogflow CX-Dokumentation.

Für unseren virtuellen Einzelhandelsagent 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"

Bedingungsrouten auf der Seite „Künstlerübersicht“ erstellen

Wir erstellen eine bedingte Route, die zur nächsten Seite wechselt, sobald der Künstler bekannt ist:

  1. Klicken Sie auf der Seite Künstlerübersicht im Bereich Routen auf das Symbol +.
  2. Scrollen Sie nach unten zum Abschnitt Zustand.
  3. Wählen Sie Mindestens eine (ODER) aus.
  4. Als Nächstes schreiben wir einen Ausdruck, der
  • Parameter: $page.params.status
  • Operator: =
  • Wert: "FINAL"
  1. Als Nächstes erstellen wir eine spezifische statische Fulfillment-Nachricht auf der Route, in der die Auswahl des Endnutzers bestätigt wird. Scrollen Sie nach unten zum Block Auftragsausführung und schreiben Sie die folgenden Nachrichten zur Auftragsausführung:
  • $session.params.artist, great choice! Rock on!
  • You want to rock with $session.params.artist merchandise. Awesome!
  1. Wenn die Bedingung zutrifft, sollten Sie zur Seite Produktübersicht wechseln. Scrollen Sie zum Abschnitt Umstellung und verwenden Sie die folgende Seite: Product Overview
  2. Klicken Sie auf Speichern.

Parameter

Routen auf der Produktübersichtsseite erstellen

Nachdem wir nun wissen, wie Parameter und bedingte Routen erstellt werden, erstellen wir weitere Parameter für die folgenden Seiten:

Produktübersicht

  1. artist-Parameter auf der Seite Produktübersicht erstellen:
  • Anzeigename: artist
  • Typ der Rechtspersönlichkeit: @Artist
  • Erforderlich: Check
  • Im Log entfernen: Prüfen
  • 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"
      }
    ]
  ]
}
  1. merch-Parameter erstellen:
  • Anzeigename: merch
  • Typ der Rechtspersönlichkeit: @Merch
  • Erforderlich: Check
  • Im Log entfernen: Prüfen
  • Ausfü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"
            }
          ]
        }
      ]
    ]
  }
  1. Erstelle eine Route, die zur Seite Produkt führt, wenn artist und das Element merch angegeben sind.
  • Bedingung:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.artist != null
  • Ausdruck: $session.params.merch != null
  • Ausführung: Alright! $session.params.merch of $session.params.artist, let's go!
  • Übergang: Seite: Product
  1. Route erstellen, wenn der Nutzer „Shirts“ sagt
  • Intent: redirect.shirts
  • Übergang: Seite: Shirts
  1. Route erstellen, wenn der Nutzer „Musik“ sagt
  • Intent: redirect.music
  • Übergang: Seite: Music
  1. Route erstellen, wenn der Nutzer nach Preisinformationen fragt
  • Intent: redirect.price
  • Übergang: Neue Seite erstellen: Price

Wenn Sie die oben genannte Konfiguration festgelegt haben, sehen Sie eine Visualisierung ähnlich dem Bild unten. Hinweis: Intention-Routen sind im Diagramm blau und Bedingungsrouten orange. Event-Handler sind grün. Wenn mehrere Routentypen zu einer Seite wechseln, ist die Linie grau.

Der Beginn des Katalogablaufs

Sie haben nun gelernt, wie Sie Abläufe, Entitäten, Intents und Seiten mit Status-Handlern wie Intent-Routen und Bedingungsrouten auf Grundlage von Parametern erstellen. Später in diesem Lab verwenden wir bedingte Verzweigungen im Fulfillment, um je nach Eingabe unterschiedliche Dialoge zu ermöglichen.

Mit den folgenden Konfigurationen können Sie unseren virtuellen Kundenservicemitarbeiter fertigstellen.

Seite „Hemden“:

  1. Erstelle die folgenden Konfigurationen auf der Seite Shirts (T-Shirts):
  • Eingabeauftragsausführung: Do you want a longsleeve or a t-shirt?
  • Benutzerdefinierte Nutzlast für die Ausführung von Einträgen:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Weiterleitung zur Seite Price.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: merch – Entitätstyp: @Merch, Required und Redact in log
  • „Parameter“ > „Event-Handler“ > 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"
            }
          ]
        }
      ]
    ]
  }
  1. Klicken Sie auf die Eintragserfüllung und scrollen Sie nach unten zu Parameter-Voreinstellungen. Jedes Mal, wenn die Seite „Shirts“ aktiv wird, wird der Kategorieparameter auf shirts festgelegt:

Parameter

Wert

category

shirts

  1. 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"
  • Übergang zur neuen Seite: Shirt Size

Preisseite:

Da die Meldungen für Preise vom ausgewählten Merchandise-Artikel oder der Kategorie (Musik oder T-Shirts) abhängen, werden wir diesen Teil später im Lab korrigieren. Es reicht, wenn Sie einen Platzhalter eingeben.

  1. Erstellen Sie auf der Seite Preis die folgenden Konfigurationen:
  • Eingabeauftragsausführung: PRICE TODO

Da Sie den Preis an verschiedenen Stellen im Gespräch anfordern können, sollten Sie immer eine Antwort erhalten und zum vorherigen Teil des Dialogs zurückgeleitet werden, um die Bestellung fortzusetzen. Es gibt fünf Stellen im Dialogbaum, an denen Sie abzweigen können, um Preisinformationen zu erhalten. (Shirt, Shirt Size, Music, Carrier und auch direkt über eine Intent-Route). Daher benötigen wir einige bedingte Routen, um zurückzukehren:

  1. 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
  1. 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
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "music"
  • Ausdruck: $session.params.album = "null"
  • Übergang zur neuen Seite: Music
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "music"
  • Ausdruck: $session.params.merch = "null"
  • Übergang zur neuen Seite: Carrier
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "null"
  • Übergang zur neuen Seite: Product Overview

Seite mit T-Shirt-Größen:

  1. Erstellen Sie auf der Seite Shirt Size (T-Shirt-Größe) die folgenden Konfigurationen:
  • Eingabeauftragsausführung: What shirt size do you want?
  • Benutzerdefinierte Nutzlast für die Ausführung von Einträgen:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Weiterleitung zur Seite Price.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: shirtsize – Entitätstyp: @ShirtSize – Required, Redact In Log
  • „Parameter“ > „Event-Handler“ > 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“ > „Event-Handler“ > 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"
            }
          ]
        }
      ]
    ]
  }
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $page.params.shirtsize != "null"
  • Übergang zur Seite: Product

Musikseite:

  1. Erstellen Sie 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 Ausführung von Einträgen:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Umstellung auf die Seite: Price.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: album – Entitätstyp: @Album – Required, Redact In Log
  • „Parameter“ > „Event-Handler“ > 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“ > „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“ > „Auftragsausführung für Event-Handler“ > „Benutzerdefinierte Nutzlast“:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  1. Klicken Sie auf die Erfüllung des Eintrags und scrollen Sie nach unten zu Parameter-Voreinstellungen. Jedes Mal, wenn die Musikseite aktiviert wird, wird der Kategorieparameter auf music festgelegt:

Parameter

Wert

category

music

  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $page.params.album != "null"
  • Übergang zur Seite: Carrier

Seite des Mobilfunkanbieters:

  1. Erstellen Sie auf der Seite Carrier (Mobilfunkanbieter) die folgenden Konfigurationen:
  • Eingabeauftragsausführung: Do you want this album on CD or MP3?
  • Benutzerdefinierte Nutzlast für die Ausführung von Einträgen:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price, die zur Seite Price führt.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: merch – Entitätstyp: @Merch – Required, Redact In Log
  • „Parameter“ > „Event-Handler“ > 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“ > „Event-Handler“ > 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"
            }
          ]
        }
      ]
    ]
  }
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $page.params.merch != "null"
  • Übergang zur Seite: Product

Produktseite:

  1. Erstellen Sie die folgenden Parameter:

Parameter-Anzeigename

Parameter Entity Type

Vorabprüfung

artist

@Artist

Erforderlich, Im Log entfernen

merch

@Merch

Erforderlich, Im Log entfernen

  1. 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 außerdem einen No-input default-Event-Handler mit Fulfillment hinzu: I couldn't understand what you just said. Ask me which artists are signed.
  • Und ein No-match default-Event-Handler mit Auftragsausführung: I missed that. Please ask me which artists are signed.
  1. Für den Parameter merch sind ebenfalls Handler für erneute Eingabeaufforderungen erforderlich.
  • Fügen Sie einen No-input default-Event-Handler mit Auftragsausführung hinzu: I couldn't understand what you just said. Which merchandise item do you want?
  • Und ein No-match default-Event-Handler mit Auftragsausführung: I missed that. Which merchandise item do you want?

Die nächste Route wird zur Bestätigungsseite weitergeleitet, wenn der Künstler bekannt ist und der Nutzer einen „Tour Movie“ auswählt.

  1. 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
  • Übergang zur neuen Seite: Confirmation

Die nächste Route wird zur Bestätigungsseite weitergeleitet, wenn der Künstler bekannt ist und der Nutzer ein T‑Shirt und die T‑Shirt-Größe ausgewählt hat.

  1. 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

Die nächste Route führt zur Bestätigungsseite, wenn der Künstler bekannt ist und der Nutzer ein Langarmshirt und die T-Shirt-Größe ausgewählt hat.

  1. 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

Die nächste Route wird zur Bestätigungsseite übergehen, wenn der Künstler bekannt ist und der Nutzer eine „CD“ auswählt. Außerdem wird der Albumname ausgewählt.

  1. 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

Die nächste Route führt zur Bestätigungsseite, wenn der Künstler bekannt ist und der Nutzer ein „Digitales Album“ und den Namen des Albums ausgewählt hat.

  1. 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 Bedingungen mit Prompts, die fehlende Informationen erkennen. Die nächste Route führt zurück zur Musikseite, wenn der Künstler bekannt ist und der Nutzer eine „CD“ oder ein „digitales Album“ auswählt, aber der Albumname nicht ausgewählt wurde.

  1. 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
  • Ausführung: I would also need to know which album you would like to buy!
  • Übergang zu Seite: Music

Die letzte Route wird zur Bestätigungsseite weitergeleitet, wenn der Künstler bekannt ist und der Nutzer ein T‑Shirt oder ein Langarmshirt ausgewählt hat, aber keine T‑Shirt-Größe.

  1. 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
  • Ausfü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ührungsnachrichten zu senden.

7. Bedingte Antworten

Bei einigen Antworten wird je nach Eingabe ein anderer Dialog zurückgegeben. 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 bestimmt wurden. Ein Beispiel:

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif
  • Ein Beispiel für eine [condition] wäre: $session.params.user-age >= 21. Es wird eine ähnliche Formatierung wie bei den Bedingungen in den Routen verwendet.
  • Eine [Antwort] enthält die statische Textantwort
  • Bedingte Antworten beginnen immer mit if
  • Die Sperren elif und else sind optional.

Dialogflow CX kann auch integrierte Systemfunktionen verwenden. Zum Beispiel zum Formatieren eines Datums oder einer Uhrzeit oder zum Anzeigen der aktuellen Uhrzeit ($sys.func.NOW())

Wir schließen den Katalog-Ablauf ab, indem wir die Seiten Bestätigung und Preis korrigieren.

Bestätigungsseite:

Jetzt erstellen wir die Bestätigungsseite. Es gelten die folgenden Anforderungen:

  • Wenn Merchandise CD oder Digitales Album ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, album und price.
  • Wenn Merch T-Shirt oder Langarmshirt ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, size und price.
  • Andernfalls (und somit, wenn merch gleich Tour Movie ist). In der Bestätigung werden die folgenden Felder angezeigt: artist, merch und price.
  1. Klicken Sie auf der Seite Bestätigung.
  2. Klicken Sie auf „Erfüllung bearbeiten“ > „Antworten des Kundenservicemitarbeiters“ > Option 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
  1. Create the following Custom payload:
  • Custom payload:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Yes, confirm"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

Next, create two intent routes:

  1. confirm.proceed.order transitions to: Order Process Flow.
  2. decline.proceed.order transitions to End 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.

  1. In the decline.proceed.order intent route, scroll down to Parameter presets and add the following parameters:

Parameter

Value

artist

null

merch

null

shirtsize

null

category

null

album

null

price

null

restart

true

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.

  1. 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..."
            }
          ]
        }
      ]
    ]
  }
  1. 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

Conditional Responses

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

  1. Go to the My Order Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

My Order Start

redirect.my.order

My Order

My Order Start

redirect.my.order.status

My Order Status

My Order Start

redirect.my.order.canceled

My Order Cancellation

My Order Start

redirect.end

End Session

My Order Start

redirect.home

End Flow

My Order

redirect.my.order.status

My Order Status

My Order

redirect.my.order.canceled

My Order Cancellation

Default Start Flow

redirect.my.order.canceled

Flow: My Order

Default Start Flow

redirect.my.order.status

Flow: My Order

  1. 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.
  1. 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?
  1. 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?
  1. 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"
      }
    ]
  ]
}
  1. 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"
      }
    ]
  ]
}
  1. 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?
  1. 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?
  1. 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?
  1. 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?
  1. Test the flow and create the following two test scenarios:
>"About my order"
>"ABCD123"
>"Status"

And:

>"What's the status of order DEFG222"
  1. 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!
  2. 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.

  1. 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.

  1. Go to Manage > Intents and select the Default Negative Intent.
  2. 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
  1. 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

  1. 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:

  1. 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.

  1. 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.

  1. 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.

  1. 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

  1. Go to the Order Process Flow, and create the following intent transitions:

Page (In Flow)

Routes > Intent

Routes > Transition To

Order Process Start

redirect.end

End Session

Order Process Start

redirect.home

End Flow

Order Process Start

confirm.proceed.order

New Page: Shipping Details

  1. 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.
  1. 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

firstname

@sys.person

Required

What's your first name?

I'm sorry I missed that. What's the first name?

I'm sorry, I didn't understand. What's the first name?

lastname

@sys.person

Required

What's your last name?

I'm sorry I missed that. What's the last name?

I'm sorry, I didn't understand. What's the last name?

address

@sys.address

Required

What's your address?

I missed that. What's the address?

I'm sorry, I didn't understand. What's the address?

zipcode

@sys.any

Required

What postal code or zipcode do you have?

I'm sorry, what's the zip or postal code? For example: 1234AB or 10001.

I'm sorry, I didn't understand. What's the zip or postal code? For example: 1234AB or 10001.

city

@sys.geo-city

Required

What's the name of the city?

I missed that, what's the name of the city?

I'm sorry, I didn't understand. What's the name of the city?

country

@sys.geo-country

Required

What's the name of the country?

I missed that, what's the name of the country?

I'm sorry, I didn't understand. What's the name of the country?

email

@sys.email

Required

Lastly, what's your email address?

I am sorry. What's the email address? For example name@domain.com.

I am sorry, I didn't understand. What's the email address? For example name@domain.com.

  1. Create the following conditional route:
  • Customize Expression: $page.params.status = "FINAL"
  • Transition to new Page: Payment Details
  1. 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
  1. Erstellen Sie die folgende Intent-Route.
  • Zweck: confirm.proceed.order
  • Kundenservicemitarbeiter sagt: Thank you for your order! Your merchandise will be shipped today!
  • „Add Dialogue Option“ (Dialogoption hinzufügen) > „Text“: Here's the order number: ABCD123.
  • „Dialogoption hinzufügen“ > „Text“: Have a good day!
  • Übergang: End Session
  1. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.end. Erstelle das folgende Fulfillment: Thank you for contacting G-Records! Have a nice day!
  2. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.home. Erstellen Sie die folgende Parametervoreinstellung: restart = true

Sehr gut! Wir haben jetzt einen voll funktionsfähigen Chatbot für Einzelhändler! Im nächsten Lab testen wir, wie gut der virtuelle Kundenservicemitarbeiter funktioniert.

9. Virtuellen Kundenservicemitarbeiter testen

Mit dem integrierten Simulator können Sie die Dialoge Ihres virtuellen Kundenservicemitarbeiters testen. Der Vorteil des Testens der Abläufe im Simulator besteht darin, dass Sie eine gute Übersicht über die Abläufe, Seiten, Parameter und (DTMF-)Ereignisse erhalten, die der Simulator beim Durchlaufen Ihrer Abläufe erfasst hat. Dadurch wird das Testen einfacher als direkt in einer Integration, da diese Informationen für den Endnutzer verborgen sind. Sie können sogar Testläufe erstellen, speichern und wiederverwenden. Das ist sehr sinnvoll, wenn Sie Ihre Flows im Laufe der Zeit verwalten oder bearbeiten und sichergehen möchten, dass keine Ihrer Änderungen Ihre bisherige Arbeit beeinträchtigen.

Es ist auch möglich, zuvor erstellte Testläufe 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 Testläufen

Bevor wir einige Testläufe erstellen, müssen wir den Rest unseres virtuellen Kundenservicemitarbeiters fertigstellen:

Customer Care-Ablauf erstellen

  1. Rufen Sie den Kundenservice-Ablauf auf und erstellen Sie die folgenden Intent-Übergänge:

Seite (im Ablauf)

Routen > Intention

Routen > Umstellung auf

Start der Kundenbetreuung

redirect.shipping.info

Versand

Start der Kundenbetreuung

redirect.refund.info

Erstattung

Start der Kundenbetreuung

redirect.swapping.info

Tauschen

Start der Kundenbetreuung

redirect.home

Flow beenden

Start der Kundenbetreuung

redirect.end

Sitzung beenden

Customer Care-Ablauf

  1. 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?
  1. Erstelle die folgenden Einträge 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?
  1. Erstellen Sie die folgenden Auftragsausführungen für die Seite Swapping (Tauschen):
  • 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?
  1. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.end. Erstelle das folgende Fulfillment: Thank you for contacting G-Records! Have a nice day!
  2. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.home. Erstellen Sie die folgende Parametervoreinstellung: restart = true

Testläufe erstellen

  1. Klicken Sie rechts auf dem Bildschirm auf die Schaltfläche Test-Agent.

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.

  1. Typ: Hi

Customer Care-Ablauf

  1. Frage: Which artists are signed with your label?
  2. Sag einfach: The Google Dolls
  3. Sag einfach: I am interested in buying a shirt
  4. Sag einfach: A t-shirt
  5. Sag einfach: Medium
  6. Klicken Sie jetzt auf die Schaltfläche „Testfall speichern“. Sie finden sie oben im Simulator (neben dem Pfeil für „Wiederherstellen“ und dem Symbol für „Papierkorb zurücksetzen“).

Customer Care-Ablauf

  1. Geben Sie die folgenden Informationen an:
  • Name des Testlaufs: Buy Google Dolls t-shirt size M
  • Tags: #catalog, #shirts, #t-shirt, #TheGoogleDolls
  1. Klicken Sie auf Speichern.

Erstellen wir weitere Testläufe.

  1. Löschen Sie zuerst den aktuellen Dialog, indem Sie auf das Symbol „Zurücksetzen“ (Papierkorb) klicken.
  2. Erstellen Sie die folgenden Testläufe:

Alice Googler-T‑Shirt kaufen:

>"Buy the Alice Googler t-shirt."
>"XL"
  • Name des Testlaufs: Buy the Alice Googler t-shirt
  • Tag: #catalog, #shirts, #t-shirt, #AliceGoogler

Kaufe ein T-Shirt in Größe M: (Hinweis: Der Künstlername wurde nicht erwähnt, aber Sie möchten die Übersichtsseiten für Bands, Produkte und Shirts sowie die Seite für die Shirt-Größe überspringen.)

>"Buy a t-shirt size M"
>"The Google Fighters"
  • Name des Testlaufs: Buy a t-shirt size M
  • Tag: #catalog, #shirts, #t-shirt, #TheGoogleFighters
  • Beschreibung: (Der Künstlername wurde nicht erwähnt, aber du möchtest die Übersichtsseiten für Bands, Produkte, T-Shirts und T-Shirt-Größen überspringen.)

Musik von Guns N' Roses kaufen (Hinweis: Dadurch werden die Übersichtsseiten für Bands und Produkte übersprungen)

>"Purchase music of G's N' Roses"
>"Live"
>"CD"
  • Name des Testlaufs: Purchase music of G's N' Roses
  • Tag: #catalog, #music, #CD, #GsNRoses, #live
  • Beschreibung: (Hinweis: Dadurch werden die Übersichtsseiten für Bänder und Produkte übersprungen.)

Preisinformationen prüfen:

>"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 Testlaufs: Price info
  • Tag: #catalog, #music, #tourmovie, #shirts
  • Beschreibung: Testen Sie Preisinformationen an verschiedenen Stellen im Dialog.

Vorab aufgezeichnete Testläufe testen

  1. Wählen Sie im Dialogflow-Hauptmenü links Verwalten > Testläufe aus.
  2. Wählen Sie alle Testläufe aus und klicken Sie über der Tabelle auf die Schaltfläche Ausführen.

Dialogflow CX führt alle ausgewählten Testläufe für die Aufzeichnung aus, die als „Golden Test Case“ gespeichert wurde. Wenn die Ergebnisse mit den gespeicherten Ergebnissen übereinstimmen, sind die Tests bestanden. – Wenn sich etwas in den Abläufen geändert hat, z. B. Seiten, die nicht richtig konfiguriert sind, oder Intents, die Sie auf die falschen Seiten weitergeleitet haben, schlagen die Tests fehl.

Testfälle

  1. Stellen Sie im Simulator die folgende Frage: How long will shipping take?
  2. Notieren Sie das Ergebnis und speichern Sie den Testlauf als Shipping mit dem Tag #shipping.
  3. Rufen Sie den Bereich „Verwalten“ > „Testläufe“ auf und klicken Sie oben rechts im Raster auf die Schaltfläche Ausführen, um nur den Testlauf Shipping auszuführen.

Dieser Test sollte bestanden werden.

  1. Kehren Sie zum Kundenservice-Ablauf zurück, wählen Sie die Seite Start aus und klicken Sie auf den Header Routen.

Daraufhin wird ein Bildschirm mit einem Raster angezeigt, in dem alle Routen zu sehen sind.

  1. Entfernen Sie redirect.shipping.info route.
  2. Rufen Sie den Bereich „Verwalten“ > „Testläufe“ auf und klicken Sie oben rechts im Raster auf die Schaltfläche Ausführen, um nur den Testlauf Shipping auszuführen.

Dieser Test sollte fehlschlagen.

  1. Sie können auf den fehlgeschlagenen Test klicken, um die Details des Fehlers 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 nicht mehr im Ablauf vorhanden ist. Wir haben die Seite Shipping erwartet, sind aber nie von der Seite Start weggekommen. oder Ihre Endnutzer würden eine Fallback-Nachricht erhalten.

Mit anderen Worten: Es handelt sich um eine verpasste Anfrage, ein falsch negatives Testergebnis. Der Test ist fehlgeschlagen. Wir haben die Seite Versand erwartet, aber es passiert nichts oder es wird eine Fallback-Meldung angezeigt.

  1. Kehren Sie zum Kundenserviceworkflow zurück und fügen Sie redirect.shipping.info als Intent-Route auf der Seite Start hinzu. Vergiss nicht, zur Seite Versand zu wechseln und auf Speichern zu klicken.
  2. Nehmen Sie im Simulator den folgenden Testlauf auf: I want to swap my item. Speichern Sie diesen Testlauf als Swapping #swapping.
  3. Ö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 eine Anfrage eines Nutzers, ein Produkt gegen eine Erstattung zu tauschen, auf die Intention redirect.swapping.info passen. Wir möchten aber keine Informationen zum Tauschen von Produkten, sondern zu Erstattungen bereitstellen.

  1. Erstellen Sie den folgenden goldenen Testfall: I want to swap this item for a refund im Simulator und speichern Sie diesen Testfall als Swap for Refund #refund.
  2. Gehen Sie zurück zum Intent Verwalten > Intents > redirect.refund.info und entfernen Sie die Zeile I want to swap this item for a refund.
  3. Gehen Sie zurück zu Verwalten > Testläufe, wählen Sie den Testlauf Umtausch gegen Erstattung aus und klicken Sie auf Ausführen.

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 falsch verstandene Anfrage, ein falsch-positives Testergebnis. Der Test ist fehlgeschlagen. Wir haben die Seite Erstattung erwartet, aber die Seite Tauschen wurde aktiviert.

Abdeckung

In Dialogflow CX ist die Testabdeckung ein Maß dafür, inwieweit der Dialog des virtuellen Kundenservicemitarbeiters (Seiten und Intents) ausgeführt wird, wenn eine bestimmte Testsuite ausgeführt wird. Bei einem virtuellen Agenten mit einer hohen Testabdeckung (gemessen als Prozentsatz) wurden mehr Dialoge während des Tests ausgeführt. Das bedeutet, dass die Wahrscheinlichkeit, dass er unentdeckte Fehler (z. B. falsch verstandene Anfragen) enthält, geringer ist als bei einem virtuellen Agenten mit einer niedrigen Testabdeckung.

  1. Um einen Bericht zur Testabdeckung für alle Testfälle aufzurufen klicken Sie auf Abdeckung.
  2. Klicken Sie auf den Tab Übergänge.

Daraufhin wird die Testabdeckung für alle Seitenübergänge angezeigt.

Abdeckung von Übergängen

  1. Klicken Sie auf den Tab Intents.

Hier sehen Sie die Testabdeckung für alle Intents.

Abdeckung von Intents

Herzlichen Glückwunsch! Sie haben jetzt ein vollständiges Beispiel für einen Einzelhändler-Bot erstellt und getestet. Sehen wir uns auf der nächsten Lab-Seite die Zusammenfassung und einige nützliche Referenzen an.

10. Fazit

Dialogflow CX ist eine CAIP (Conversational AI Platform) zum Erstellen virtueller Kundenservicemitarbeiter wie Chat- oder Voicebots. Mit Dialogflow CX kann Ihr Team durch visuelle Bot-Builder, wiederverwendbare Intents und die Möglichkeit, mehrstufige Unterhaltungen zu führen, schneller dialogorientierte Anwendungen auf Unternehmensniveau erstellen.

In diesem Codelab haben Sie gelernt, wie Sie einen virtuellen Kundenservice-Agenten für den Einzelhandel erstellen. Wir haben die folgenden Konzepte behandelt:

  • Abläufe
  • Parameter, benutzerdefinierte und Systementitäten
  • iWork Pages
  • Zustands-Handler wie Intent- und Bedingungsrouten
  • Statische Auftragsausführungsnachrichten und bedingte Antworten
  • Fallback-Intents
  • Simulator, Testläufe und Abdeckung

Endergebnis

Verweise

Weitere Informationen zu Dialogflow CX finden Sie in den folgenden Blogs und in der Dokumentation.