Dialogflow CX: Virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen

1. Hinweis

In diesem Codelab erfahren Sie, wie Sie mit Dialogflow CX, einer Conversational AI Platform (CAIP) zum Erstellen von Konversations-UIs, einen Einzelhandels-Chatbot erstellen. Mit Dialogflow CX können Sie virtuelle Kundenservicemitarbeiter wie Chatbots, Voicebots und Telefon-Gateways implementieren und mehrere Kanäle in über 50 verschiedenen Sprachen unterstützen.

In diesem Codelab erfahren Sie, wie Sie einen Website-Chatbot für den Einzelhandel erstellen. Das fiktive Unternehmen, für das wir den Chatbot erstellen, heißt G-Records. G-Records ist ein Rock-Label mit Sitz in Kalifornien. Das Label hat vier Rockbands unter Vertrag: Alice Googler, G's N' Roses, The Goo Fighters und The Google Dolls. G-Records verkauft Bandmerchandise an alle Rockfans.

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

Endergebnis

Lerninhalte

Sie lernen die Vorteile von Dialogflow CX im Vergleich zu Dialogflow ES kennen. Sie umfasst die folgenden Konzepte:

  • Virtuellen Dialogflow CX-Kundenservicemitarbeiter in Google Cloud erstellen
  • Informationen zum Erstellen von Workflows
  • Entitäten erstellen
  • Weitere Informationen zum Erstellen von Intents
  • Seiten und Übergangsseiten mit Zustands-Handlern erstellen
  • Seiten mit Intent-Routen verknüpfen
  • Seitenübergänge mit Parametern und Bedingungsrouten
  • Bedingte Antworten mit Systemfunktionen zurückgeben
  • Informationen zum Erstellen von Fallback-Nachrichten
  • Informationen zur Verwendung des Simulators
  • Testfälle und Testabdeckung erstellen

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

Endergebnis

Voraussetzungen

  • Sie benötigen eine Google-Identität bzw. eine Gmail-Adresse, um einen Dialogflow CX-Agenten zu erstellen.
  • Zugriff auf Google Cloud

2. Umgebung einrichten

Google Cloud-Projekt erstellen

Da Dialogflow CX in Google Cloud ausgeführt wird, müssen Sie ein Google Cloud-Projekt erstellen. Es dient zur Organisation all Ihrer Google Cloud-Ressourcen. Projekte umfassen Mitarbeiter, aktivierte APIs (und andere Ressourcen), Monitoringtools, Zahlungsinformationen sowie Authentifizierungs- und Zugriffssteuerungen.

Wenn Sie ein neues Projekt erstellen, müssen Sie einen Projektnamen eingeben. Außerdem müssen Sie es mit einem vorhandenen Rechnungskonto und einer vorhandenen Organisation verknüpfen.

In Rechnungskonten ist festgelegt, wer die Nutzungsgebühren für Ressourcen bezahlt. Ein Rechnungskonto kann mit einem oder mehreren Projekten verknüpft sein. Die Gebühren für die Projektnutzung werden dem verknüpften Rechnungskonto belastet. In den meisten Fällen konfigurieren Sie die Abrechnung beim Erstellen eines Projekts. Weitere Informationen finden Sie in der Dokumentation zur Abrechnung. Die Abrechnung für das Cloud-Projekt muss aktiviert sein.

Erstellen Sie ein neues Projekt

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. Antworten Sie mit Nein, ich verwende sie nicht, da Sie die Kubernetes Engine, App Engine oder Cloud Functions derzeit nicht verwenden.
  5. Klicken Sie auf Fertig.

Anmeldedaten einrichten

Neuen Dialogflow CX-Agent erstellen

Wenn Sie einen neuen Dialogflow CX-Agenten erstellen möchten, öffnen Sie zuerst die Dialogflow CX-Konsole:

  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.
  • Wählen Sie en – Englisch als Standardsprache aus.

Klicken Sie auf Erstellen.

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

Einzelhandelsablauf

Mit Abläufen können Teams an einzelnen Konversationspfaden arbeiten. Es empfiehlt sich, den Ablauf zu vereinfachen, damit er problemlos auf einen Bildschirm passt und modularer ist.

Abläufe sind ein neues Konzept in Dialogflow CX. In Dialogflow Essentials gibt es das Konzept „Mega-Agents“, das in gewisser Weise mit Abläufen vergleichbar ist. Sie würden jedoch Workflows viel häufiger verwenden.

Später in diesem Lab verwenden wir Status-Handler, mit denen ein Ablauf beendet werden kann (so wird zu einem nächsten oder vorherigen Ablauf gesprungen). Sie können auch die gesamte Kundenservicemitarbeitersitzung beenden.

Lass uns ein paar Abläufe erstellen.

Flows erstellen

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

Ablauf erstellen

Ihr erster Flow Catalog wurde erstellt. Erstellen Sie jetzt die anderen Abläufe:

  • Order Process
  • My Order
  • Customer Care

Abläufe

Später in diesem Lab legen wir Seitenstatus-Handler fest, damit die Visualisierung so aussieht:

Abläufe

Simulator

Rechts in der Dialogflow CX-Konsole können Sie den virtuellen Kundenservicemitarbeiter mit dem integrierten Simulator testen. Sie können die Unterhaltung von Anfang an oder von einem bestimmten Ablauf aus testen.

  1. Klicken Sie oben rechts auf die Schaltfläche Test-Agent.
  2. Geben Sie im Feld „Mit Kundenservicemitarbeiter chatten“ Folgendes ein: Hello Der virtuelle Kundenservicemitarbeiter antwortet mit einer standardmäßigen Begrüßung: Hallo! Wie kann ich Ihnen helfen?

Simulator

Ändern wir diesen Standard-Begrüßungstext.

Standardstartablauf

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

  1. Klicken Sie in der linken Seitenleiste Build > Abläufe auf Standardstartablauf und wählen Sie den Knoten Start aus.

Daraufhin wird die Seite Start geöffnet. In der Seitenleiste Build > Seiten wurde automatisch die Startseite ausgewählt.

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

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

  1. Klicken Sie auf Dialogoption hinzufügen > Benutzerdefinierte Nutzlast und verwenden Sie das folgende Code-Snippet.
  2. Verwenden Sie das folgende Code-Snippet als benutzerdefinierte Payload und klicken Sie auf Speichern.

Weitere Informationen zu benutzerdefinierten Nutzlasten finden Sie in der Dokumentation.

{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Which artists?"
            },
            {
              "text": "Which products?"
            },
            {
              "text": "About my order..."
            }
          ]
        }
      ]
    ]
  }

Standard-Begrüßungs-Intent

  1. Testen Sie die Begrüßungsabsicht im Simulator.

Sie fragen sich wahrscheinlich, warum Sie keine Rich-Inhalte sehen. Das liegt daran, dass Rich Content wie Vorschlags-Chips eine Integration erfordern. Für die folgenden Schritte ist ein Abrechnungskonto erforderlich. Sie können sie aber überspringen, wenn Sie keins haben.

  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

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.

Dialogflow Messenger – Jetzt testen

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

Dialogflow Messenger – Jetzt testen

Wenn Sie derzeit auf die Vorschlags-Chips klicken, versteht der virtuelle Assistent nicht, was Sie meinen. Das liegt daran, dass unser virtueller Kundenservicemitarbeiter noch nicht zwischen den Status wechselt. In Dialogflow CX können wir das mit Seiten tun. Fahren wir mit dem Lab fort. Erstellen Sie zuerst einige Entitäten und Intents.

4. Entitätstypen

Entitätstypen steuern, wie Daten aus Endnutzereingaben extrahiert werden. Dialogflow CX-Entitätstypen sind Dialogflow ES-Entitätstypen sehr ähnlich. Dialogflow stellt vordefinierte Systementitäten bereit, die mit vielen gängigen Datentypen übereinstimmen. So gibt es beispielsweise Systementitäten für den Abgleich von Datumsangaben, Uhrzeiten, Farben und E-Mail-Adressen. Sie können auch eigene benutzerdefinierte Entitäten erstellen, um benutzerdefinierte Daten zuzuordnen.

Bereiten wir zuerst alle benutzerdefinierten Entitäten vor, bevor wir die Seiten in einem Ablauf entwerfen können. Wir erstellen die folgenden Entitäten:

Dialogflow-Entitäten

Elemente erstellen

Erstellen wir 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 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.
  1. Klicken Sie auf Speichern.

Außerdem benötigen wir eine Entität für den 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 den Synonyme Disc, Physical CD)
  1. Klicken Sie auf Speichern.

Außerdem benötigen wir 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 Kleidungsgröß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.

Und eine Entität für Bestellnummern, die in der Regel aus 4 alphanumerischen Zeichen und 3 Ziffern 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 Entitätskonfiguration sollte in etwa so aussehen:

@Künstler: Entitätstyp „@Artist“

@Merch: @Merch-Entitätstyp

@Album: @Album-Entitätstyp

@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. In Dialogflow CX wurden sie stark vereinfacht. Sie sind nicht mehr ein Baustein für die Unterhaltungssteuerung. In Dialogflow CX werden nur Intents verwendet, um die Äußerungen der Nutzer abzugleichen. In Dialogflow ES mussten Sie alles (Parameter, Ereignisse, Ausführung usw.) mit einem Intent verknüpfen. Intents in Dialogflow CX enthalten nur Trainingsformulierungen und können daher wiederverwendet werden. Sie steuert die Unterhaltung nicht mehr. Das Erstellen von Intents ist ganz einfach:

Die Trainingsphrasen in Intents können Entitäten verwenden, um Eingaben vom Typ „Variable“ zu extrahieren. Daher ist es empfehlenswert, die Entitätstypen im Voraus zu erstellen. Das haben wir auf der vorherigen Seite der Lab-Schritte getan.

Intents erstellen

Bereiten wir zuerst alle Intents vor, bevor wir die Seiten in einem Fluss entwerfen können.

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

Verwenden Sie die folgenden Angaben:

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

Neue Absicht

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 fort und erstellen alle anderen Intents. Lassen Sie Ihrer Fantasie freien Lauf und überlegen Sie sich weitere Trainingsformulierungen. Es empfiehlt sich, mindestens 10 Trainingsformulierungen pro Intent zu haben, um die verschiedenen Möglichkeiten abzudecken, wie ein Nutzer diesen Intent auslösen kann. Für die Zwecke dieses Labs sollte es aber auch weniger sein.

Achten Sie auf Folgendes:

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

Anzeigename

Trainingsformulierungen

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 zusammenstellen, indem wir Seiten und Status-Handler erstellen.

6. Seiten und Zustands-Handler

Eine Unterhaltung (Sitzung) in Dialogflow CX kann als endliche Zustandsmaschine beschrieben und dargestellt werden. Ein Beispiel wäre ein Automat, der als Finite-State-Maschine modelliert werden könnte. Es hat die folgenden Status: „Auf Münzen warten“, „Süßigkeiten auswählen“ und „Süßigkeiten geben“. Je nach Eingaben wechselt es zwischen diesen Status. Wenn Sie beispielsweise eine Münze einwerfen, wechselt der Automat von „Warte auf Münzen“ zu „Süßigkeiten auswählen“. Mit Seiten können wir diese Status für einen virtuellen Dialogflow CX-Kundenservicemitarbeiter modellieren.

Wenn ein Endnutzer in einer Unterhaltung mit Dialogflow CX interagiert, wechselt die Unterhaltung von Seite zu Seite. Es ist also immer genau eine Seite die aktuelle Seite. Diese aktuelle Seite wird als aktiv betrachtet und auch der mit dieser Seite verknüpfte Ablauf wird als aktiv betrachtet.

Für jeden Ablauf definieren Sie mehrere Seiten, wobei die Gesamtheit der Seiten eine vollständige Unterhaltung zu den Themen ermöglicht, für die der Ablauf bestimmt ist. Jeder Ablauf hat eine spezielle Startseite. Wird ein Ablauf zum ersten Mal aktiviert, wird die Startseite zur aktuellen Seite. Bei jeder Unterhaltungsrunde bleibt die aktuelle Seite entweder unverändert oder wechselt zu einer anderen Seite. Mit diesem Konzept können Sie größere Bots mit vielen Seiten und mehreren Unterhaltungsschritten erstellen.

Seiten enthalten Ausführungen (statische Einstiegsdialoge und/oder Webhooks), Parameter und Status-Handler. Die Unterhaltungssteuerung erfolgt über Status-Handler. So können Sie verschiedene Übergangsrouten erstellen, um zu einer anderen Dialogflow CX-Seite zu wechseln. Sie können sie auch bedingt machen (für die Verzweigung von Unterhaltungen).

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

  • Intent-Routen: Gibt an, wann ein Intent abgeglichen werden soll (z.B. Wechsel der Seite basierend auf dem, was ein Endnutzer sagt). (Blaue Linien im visuellen Diagramm)
  • Bedingungsrouten: Gibt an, wann eine Bedingung geprüft werden soll (z. B. Wechsel der Seite basierend auf bestimmten Parametern, die in der Sitzung gespeichert sind). (Orangefarbene Linien im visuellen Diagramm.)
  • Ereignis-Handler: Gibt an, wann ein bestimmtes Fallback-Ereignis verarbeitet werden soll (z. B. „Keine Eingabe“ oder „Keine Übereinstimmung“, um den Endnutzer zu einem Intent- oder Bedingungspfad weiterzuleiten). (Grüne Linien im visuellen Diagramm.)

Die Unterhaltungsäußerungen (d.h. der Inhalt oder die Antwort an den Nutzer) werden durch die Auftragsausführung definiert, die entweder statisch oder dynamisch sein kann:

  • Statische Auftragsausführung: Wenn eine statische Auftragsausführungsantwort bereitgestellt wird
  • Dynamische Auftragsausführung: Wenn ein Auftragsausführungs-Webhook für dynamische Antworten aufgerufen wird

Für unseren Einzelhandelsbot erstellen wir einige Intent-Routen und geben einige Antworten für die Ausführung statischer Eingaben an, die dem Nutzer angezeigt werden, sobald eine Seite aktiviert wird. Später erstellen wir Parameter mit Bedingungspfaden, um die Informationen zu erfassen, die du für eine Merchandise-Bestellung benötigst.

Intent-Routen für Seiten

Seiten im Standardstartablauf erstellen

Hier ein Flussdiagramm des Standardstartablaufs:

Mit dem Katalog verknüpfte Seiten

Gehen wir das gemeinsam durch:

  1. Klicken Sie auf Erstellen > Standardstartablauf.
  2. Klicken Sie auf die Startseite.
  3. Klicken Sie neben Routen auf das Symbol +.
  4. redirect.artists.overview hinzufügen
  5. Scrollen Sie nach unten zu Übergang und wechseln Sie zum Katalog.
  6. Klicke auf Speichern.
  7. Wiederholen Sie die obigen Schritte für redirect.product.overview und die anderen 11 Zeilen dieser Tabelle:

Seite (im Navigationsfluss)

Routes > Intent

Routen > Zur Umstellung

Start

Default Welcome Intent

-

Start

redirect.artists.overview

Ablauf: Katalog

Start

redirect.product.overview

Ablauf: Katalog

Start

redirect.shirts

Ablauf: Katalog

Start

redirect.music

Ablauf: Katalog

Start

redirect.product

Ablauf: Katalog

Start

redirect.product.of.artist

Ablauf: Katalog

Start

redirect.refund.info

Ablauf: Kundenservice

Start

redirect.shipping.info

Ablauf: Kundenservice

Start

redirect.swapping.info

Ablauf: Kundenservice

Start

redirect.my.order

Ablauf: „Meine Bestellung“

Start

redirect.my.order.canceled

Ablauf: „Meine Bestellung“

Start

redirect.my.order.status

Ablauf: „Meine Bestellung“

Start

redirect.end

Seite: Sitzung beenden

Standard-Startseitenpfade

Der Standardstartablauf funktioniert wie ein Optionsmenü beim Anrufen eines Callcenters. Bei diesem virtuellen Kundenservicemitarbeiter wird er jedoch mit Natural Language trainiert, wobei die Trainingsphrasen in Intents enthalten sind. Daher wird die Interaktion durch die Unterhaltung und nicht durch DTMF-Optionen gesteuert und ist natürlicher und menschlicher.

Standard-Startseitenpfade

Seiten im Katalogfluss erstellen

Der folgende Chatverlauf gehört zum Katalogablauf:

> "Hi"
"Welcome, I am the virtual agent of G-Records, a fictional rock label.
You can order artists merchandise, ask questions about your order or shipping,
and I can tell you more which artists are currently signed with us. How can I help?"
> "Which bands are signed with this record label?"
"The following bands are signed with G-Records:
Alice Googler, G's N' Roses, The Goo Fighters and The Google Dolls.

From which of these artists would you like to order merchandise?"
> "Alice Googler"
"You want to rock with Alice Googler merchandise. Awesome!

We sell shirts, music or the tour movie.

Which merchandise item do you want?"
"(Suggestion chips: [Shirts] [Music] [Tour Movie])"
> "I would like to buy a Shirt"
"Do you want a longsleeve or a t-shirt?"
"(Suggestion chips: [T-shirt, Longsleeve, Price?])"
> "What's the price difference?"
"A t-shirt costs $25 and a longsleeve costs $30.

Do you want a longsleeve or a t-shirt?"
> "A t-shirt",
"What shirt size do you want?"
"(Suggestion chips: [XS, S, M, L, XL, 2XL, 3XL])"
> "M"
"A T-shirt of Alice Googler size: M costs $25. Shall I continue to order?"

Wenn du Musik oder Tourfilm auswählst, wird ein anderer Dialog angezeigt: Bei „Musik“ sieht der Dialog so aus:

 > "Music"
"We have a Greatest Hits Album or the Live Album. Which one do you want?"
"(Suggestion chips: [Greatest Hits, Live, Price?])"
> "The Live Album"
"Do you want this album on CD or MP3?"
"(Suggestion chips: [CD, MP3])"
> "What's the price difference?"
"A CD costs $15. The digital album on MP3 costs $10.
Do you want this album on CD or MP3?"
> "Digital Album",
"The Digital Album: Alice Googler - Live costs $10. Shall I continue to order?"

Für den Tour-Film sieht der Dialog so aus:

 > "Tour Movie"
"The Tour Movie of G's N' Roses costs $25. Shall I continue to order?

Hier ist ein Flussdiagramm aller Seiten im Katalogfluss:

Mit dem Katalog verknüpfte Seiten

Beachten Sie die Komplexität dieses Ablaufs:

  • Ich könnte die Frage Welche Künstler? überspringen und direkt fragen: Welche Merchandise-Artikel sind verfügbar?
  • Im Standardstartablauf könnte ich fragen: „Ich möchte das T-Shirt von The Google Dolls kaufen“ oder „Ich möchte etwas kaufen“. Das bedeutet, dass der virtuelle Kundenservicemitarbeiter Anschlussfragen stellt, um die Felder für diese erforderlichen Parameter auszufüllen. Sie werden direkt zur Produktseite weitergeleitet.
  • Das Dialogfeld „Preis“ stammt von der Preisseite, die wiederverwendet wird.
  • Auch wenn der Dialog für das Vorstellungsvideo auf den ersten Blick sehr einfach erscheint, werden wir damit etwas Besonderes machen. Wir verwenden diesen Teil des Dialogs wieder, damit Endnutzer ihn auch direkt für eines der anderen Produkte eingeben können, wenn sie alle Informationen gleichzeitig spezialisieren:
 > "I want The Goo Fighters longsleeve size S."
"The longsleeve of The Goo Fighters size S costs $30. Shall I continue to order?"

Beginnen wir damit, die Seiten zu verbinden.

  1. Klicken Sie auf Erstellen > Katalog.
  2. Klicken Sie auf die 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 wir jetzt den Rest des Ablaufs ab:

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

Seite (im Navigationsfluss)

Routes > Intent

Routen > Zur Umstellung

Katalogstart

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

Ablauf beenden

Künstlerübersicht

redirect.product.of.artist

Produktübersicht

Fahren wir fort und fügen weitere statische Ausführungen hinzu.

  1. Klicke im Katalog auf die Seite Künstlerübersicht.
  2. Klicken Sie im Abschnitt Ausführung des Eintrags auf Ausführung bearbeiten.
  3. 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.
  1. Klicken Sie auf Speichern.
  2. Klicken Sie im Katalogfluss auf die Seite Produktübersicht.
  3. Klicken Sie im Abschnitt Ausführung des Eintrags auf Ausführung bearbeiten.
  4. Verwende die folgende statische Ausführung (Kundenservicemitarbeiter 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 Longsleeves solltest du auch @ShirtSize erfassen. Wenn du Musik bestellen möchtest, benötigst du außerdem einen @Carrier- und einen @Album-Namen.

Diese Parameter müssen als erforderlich gekennzeichnet sein. Wenn dies erforderlich ist, sollten Sie benutzerdefinierte Prompts bereitstellen, damit sich der Endnutzer erinnert und die richtigen Antworten gibt, damit diese Parameter erfasst werden können. In Dialogflow CX gibt es einige Mechanismen, die Ihnen dabei helfen können.

Sie können beispielsweise im Abschnitt Parameter benutzerdefinierte Nachrichten für die statische Auftragsausführung angeben. Wenn der Parameter erforderlich ist, werden diese Parameterausführungen angezeigt. Diese Antwortnachrichten werden der Antwortwarteschlange hinzugefügt. Während der Unterhaltungsrunde eines Kundenservicemitarbeiters ist es möglich (und manchmal wünschenswert), mehrere Auftragsausführungen aufzurufen, von denen jede eine Antwort erzeugen kann. Dialogflow speichert diese Antworten in einer Antwortwarteschlange. Weitere Informationen zum Seitenlebenszyklus und zur Reihenfolge, in der diese Ausführungen der Antwortwarteschlange hinzugefügt werden, finden Sie in der Dialogflow CX-Dokumentation zu Seiten.

Parameter auf der Übersichtsseite des Künstlers erstellen

Definieren wir einige Seitenparameter:

  1. Klicke im Katalog auf die Seite Künstlerübersicht.
  2. Klicken Sie im Block Parameter auf +. Füge den Parameter artist hinzu:
  • Anzeigename: artist
  • Typ der Rechtspersönlichkeit: @Artist
  • Erforderlich: Häkchen setzen
  • Im Log entfernen: Häkchen setzen
  1. 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?

  1. Fügen Sie eine zweite Dialogoption hinzu, die umfangreiche Vorschlags-Chips enthält. Klicken Sie auf Dialogoption hinzufügen und verwenden Sie diesen Code (in JSON):
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}

Je nachdem, wie oft der Endnutzer versucht hat, diese zu beantworten, können Sie unterschiedliche Fallback-Aufforderungen zur Auftragsausführung verwenden. Dazu verwenden Sie Event-Handler für Parameter. Es stehen verschiedene vordefinierte Ereignis-Handler zur Auswahl, z. B. Ungültige Parameter, Sätze zu lang, Keine Eingabe, Keine Eingabe beim ersten Versuch, 2. Versuch oder Kein Übereinstimmen. Der Unterschied zwischen „Keine Eingabe“ und „Kein Treffer“ besteht darin, dass ein Nutzer bei „Keine Eingabe“ nie eine Antwort gegeben hat. Bei „Kein Treffer“ hat der Nutzer zwar eine Antwort gegeben, Dialogflow CX konnte diese jedoch nicht mit einer Seite abgleichen.

  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 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?

  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 die folgende statische Textausführung für das Ereignis:

I am sorry, I could understand the artist's name. You can choose between Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?

  1. Klicken Sie auf Speichern.

Seitenbedingungensrouten

Parameter sind in Kombination mit seitenabhängigen Routen sehr leistungsfähig. Wenn eine Bedingung als wahr ausgewertet wird, wird die zugehörige Seitenroute aufgerufen. Beispiele für Bedingungen: Ein Parameter ist gleich einem bestimmten Wert, Ein Parameter darf nicht fehlen oder Ein Formular wurde ausgefüllt. Weitere Informationen zu Parametern und Bedingungen finden Sie in der Dialogflow CX-Dokumentation.

Für unseren virtuellen Einzelhandelsmitarbeiter müssen wir eine Reihe von Parametern erfassen. Daher müssen wir eine Bedingung erstellen, um zu prüfen, ob ein „Formular“ ausgefüllt wurde. Ein Formular ist eine Liste von Parametern, die vom Endnutzer für die Seite erfasst werden sollen. Der virtuelle Kundenservicemitarbeiter interagiert mit dem Endnutzer mehrere Unterhaltungsrunden lang, bis er alle erforderlichen Formularparameter, auch Seitenparameter genannt, erfasst hat.

Dialogflow CX legt automatisch Parameterwerte fest, die der Endnutzer während des Ausfüllens eines Formulars angegeben hat. Verwenden Sie die folgende Bedingung, um zu prüfen, ob das vollständige Formular der aktuellen Seite ausgefüllt ist: $page.params.status = "FINAL"

Bedingte Routen auf der Übersichtsseite des Künstlers erstellen

Erstellen wir eine bedingte Route, die zur nächsten Seite weiterleitet, sobald der Künstler bekannt ist:

  1. Klicke 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
  • Betreiber: =
  • Wert: "FINAL"
  1. Jetzt erstellen wir eine bestimmte statische Auslieferungsnachricht auf der Route, in der die Auswahl des Endnutzers bestätigt wird. Scrolle nach unten zum Block Fulfillment und gib die folgenden Auftragsausführungsnachrichten ein:
  • $session.params.artist, great choice! Rock on!
  • You want to rock with $session.params.artist merchandise. Awesome!
  1. Wenn die Bedingung erfüllt ist, sollte eine Weiterleitung zur Seite Produktübersicht erfolgen. Scrollen Sie nach unten zum Abschnitt Übergang und verwenden Sie die folgende Seite: Product Overview
  2. Klicken Sie auf Speichern.

Parameter

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

  1. Erstellen Sie den Parameter artist auf der Seite Produktübersicht:
  • Anzeigename: artist
  • Typ der Rechtspersönlichkeit: @Artist
  • Erforderlich: Häkchen setzen
  • Im Log entfernen: Häkchen setzen
  • Erstauftragsausführung: From which of these artists would you like to order merchandise?
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event-Handler > No-match default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
  • Benutzerdefinierte Nutzlast:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event-Handler > No-input default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
  • Benutzerdefinierte Nutzlast:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  1. merch-Parameter erstellen:
  • Anzeigename: merch
  • Typ der Rechtspersönlichkeit: @Merch
  • Erforderlich: Häkchen setzen
  • Im Log entfernen: Häkchen setzen
  • Auftragsausführung: Which merchandise item do you want?
  • Klicken Sie auf Dialogoption hinzufügen > Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event-Handler > No-match default
  • Auftragsausführung für Event-Handler: We sell Shirts, Music or the Tour movie. Which of these items do you want?
  • Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event-Handler > No-input default
  • Auftragsausführung für Event-Handler: I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
  • Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  1. Erstelle eine Route, die zur Seite Produkt weiterleitet, wenn artist und der Artikel merch 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
  1. Route für den Fall erstellen, dass der Nutzer „Hemden“ sagt
  • Intent: redirect.shirts
  • Übergang: Seite: Shirts
  1. Route für den Fall erstellen, dass der Nutzer „Musik“ sagt
  • Intent: redirect.music
  • Übergang: Seite: Music
  1. Route für den Fall erstellen, dass der Nutzer nach Preisinformationen fragt
  • Intent: redirect.price
  • Übergang: Neue Seite erstellen: Price

Wenn Sie die oben beschriebene Konfiguration festgelegt haben, sehen Sie eine Visualisierung, die der Abbildung unten ähnelt. Beachten Sie, dass Intent-Routen im Diagramm blau und Bedingungsrouten orange sind. Event-Handler sind grün, wenn mehrere Routentypen zu einer Seite führen, ist die Linie grau.

Beginn des Katalog-Workflows

Sie haben gelernt, wie Sie Abläufe, Entitäten, Intents und Seiten mit Status-Handlern wie Intent-Routen und Bedingungsrouten auf der Grundlage von Parametern erstellen. Später in diesem Lab verwenden wir bedingte Verzweigungen in der Ausführung, um je nach Eingabe unterschiedliche Dialoge anzubieten.

Sie können die folgenden Konfigurationen verwenden, um den virtuellen Kundenservicemitarbeiter fertigzustellen.

Seite „Hemden“:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Umleitung zur Seite Price.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: merch – Entitätstyp: @Merch, Required und Redact in log
  • „Parameter“ > „Ereignishandler“ > No-match default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: You can choose between a t-shirt or a longsleeve. Which of these do you want?
  • Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  • „Parameter“ > „Ereignishandler“ > No-input default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: I couldn't understand if you want the t-shirt or the longsleeve. Which of these do you want?
  • „Parameter“ > „Auftragsausführung für Event-Handler“ > „Benutzerdefinierte Nutzlast“:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "T-shirt"
            },
            {
              "text": "Longsleeve"
            }
          ]
        }
      ]
    ]
  }
  1. Klicken Sie auf die Datenausführung und scrollen Sie nach unten zu Parametervorgaben. Jedes Mal, wenn die Seite „Hemden“ aktiv wird, wird der Kategorieparameter auf hemden gesetzt:

Parameter

Wert

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"
  • Zur neuen Seite wechseln: Shirt Size

Preisseite:

Da die Nachrichten für Preise vom ausgewählten Merchandise-Artikel oder der ausgewählten Kategorie (Musik oder T-Shirts) abhängen, werden wir diesen Teil später im Lab fertigstellen. Geben Sie einfach einen Platzhalter ein.

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

Da Sie den Preis an verschiedenen Stellen in der Unterhaltung anfordern können, sollte Ihnen immer eine Antwort gegeben werden und Sie zurück zum vorherigen Teil des Dialogs geleitet werden, um die Bestellung fortzusetzen. Es gibt fünf Stellen im Dialogbaum, an denen Sie eine Abfrage zu Preisinformationen starten können. (Shirt, Shirt Size, Music, Carrier und auch direkt über eine Intent-Route), daher benötigen wir einige bedingte Routen, um zurückzugehen:

  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "shirts"
  • Ausdruck: $session.params.merch = "null"
  • Zur neuen Seite wechseln: Shirts
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "shirts"
  • Ausdruck: $session.params.size = "null"
  • Zur neuen Seite wechseln: Shirt Size
  1. 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
  1. 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
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $session.params.category = "null"
  • Zur neuen Seite wechseln: Product Overview

Seite mit den T-Shirt-Größen:

  1. Erstellen Sie auf der Seite Hemdgröße die folgenden Konfigurationen:
  • Eingabeauftragsausführung: What shirt size do you want?
  • Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "XS"
            },
            {
              "text": "S"
            },
            {
              "text": "M"
            },
            {
              "text": "L"
            },
            {
              "text": "XL"
            },
            {
              "text": "2XL"
            },
            {
              "text": "3XL"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Umleitung zur Seite Price.
  2. 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"
            }
          ]
        }
      ]
    ]
  }
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $page.params.shirtsize != "null"
  • Übergang zu Seite: Product

Musikseite:

  1. Erstelle auf der Seite Musik die folgenden Konfigurationen:
  • Eingabeauftragsausführung: We have a Greatest Hits Album or the Live Album. Which one do you want?
  • Benutzerdefinierte Nutzlast für die Eingabeauftragsausführung:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            },
            {
              "text": "Price?"
            }
          ]
        }
      ]
    ]
  }
  1. Erstellen Sie eine Intent-Route: redirect.price mit einer Weiterleitung zur Seite: Price.
  2. Erstellen Sie den folgenden Parameter:
  • Parameter: album – Entitätstyp: @Album – Required, Redact In Log
  • „Parameter“ > „Ereignishandler“ > No-match default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: You can choose between Greatest Hits and Live Album. Which of these do you want?
  • Parameter > Auftragsausführung für Event-Handler > Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  • „Parameter“ > „Ereignishandler“ > No-input default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: I couldn't understand if you want the album: Greatest Hit or Live. Which of these do you want?
  • „Parameter“ > „Auftragsausführung für Event-Handler“ > „Benutzerdefinierte Nutzlast“:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Greatest Hits"
            },
            {
              "text": "Live"
            }
          ]
        }
      ]
    ]
  }
  1. 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

category

music

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

Mobilfunkanbieterseite:

  1. 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?"
            }
          ]
        }
      ]
    ]
  }
  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“ > „Ereignishandler“ > No-match default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: Do you want a physical CD or the digital album?
  • Parameter > Auftragsausführung für Event-Handler: Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "Digital Album"
            }
          ]
        }
      ]
    ]
  }
  • „Parameter“ > „Ereignishandler“ > No-input default
  • „Parameter“ > „Auftragsausführung für Event-Handler“: I couldn't understand if you mean CD or MP3. Which one do you want?
  • Parameter > Auftragsausführung für Event-Handler: Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "CD"
            },
            {
              "text": "MP3"
            }
          ]
        }
      ]
    ]
  }
  1. So fügen Sie eine bedingte Route hinzu:
  • Übereinstimmung mit JEDER Regel (UND)
  • Ausdruck: $page.params.merch != "null"
  • Übergang zu Seite: Product

Produktseite:

  1. Erstellen Sie die folgenden Parameter:

Parameter-Anzeigename

Parameter-Entitätstyp

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

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

  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

Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist, der Nutzer ein „Longsleeve“ auswählt und die Größe des T-Shirts ausgewählt wurde.

  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

Wenn der Künstler bekannt ist und der Nutzer „CD“ und den Albumnamen auswählt, wird die Bestätigungsseite aufgerufen.

  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

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.

  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 bedingte Anweisungen mit Prompts, die fehlende Informationen erkennen. Der nächste Pfad führt zurück zur Musikseite, wenn der Künstler bekannt ist und der Nutzer „CD“ oder „Digitales Album“ auswählt, aber der Albumname nicht ausgewählt wurde.

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

  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
  • Auftragsausführung: I would also need to know which shirt size you need!
  • Übergang zu Seite: Shirt Size

Im nächsten Teil des Labs verwenden wir bedingte Ausführungen, um je nach Eingabe unterschiedliche Ausführungsmeldungen zu geben.

7. Bedingte Antworten

Einige Antworten führen je nach Eingabe zu einem anderen Dialog. Die Dialoge verzweigen sich. Wir nennen das bedingte Antworten. Das kann interessant sein, wenn Sie keine Webhook-Auftragsausführungen verwenden, bei denen die bedingten Antworten im Back-End ermittelt wurden. Ein Beispiel könnte so aussehen:

if [condition]
  [response]
elif [condition]
  [response]
elif [condition]
  [response]
else
  [response]
endif
  • Ein Beispiel für eine [Bedingung] könnte $session.params.user-age >= 21 sein. Sie verwendet eine ähnliche Formatierung wie die Bedingungen in den Routen.
  • Eine [response] nimmt die statische Textantwort
  • Bedingte Antworten beginnen immer mit if.
  • Die Sperren elif und else sind optional.

In Dialogflow CX können auch integrierte Systemfunktionen verwendet werden. Beispiel: zum Formatieren eines Datums oder einer Uhrzeit oder zum Anzeigen der aktuellen Uhrzeit ($sys.func.NOW())

Schließen wir den Ablauf für den Katalog ab, indem wir die Seiten Bestätigung und Preis korrigieren.

Bestätigungsseite:

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

  • Wenn merch CD oder Digitales Album ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, album und price.
  • Wenn merch T-shirt oder Longsleeve ist. In der Bestätigung werden die folgenden Felder angezeigt: artist, merch, size und price.
  • Sonst (und damit wenn merch Tour Movie ist). In der Bestätigung werden die folgenden Felder angezeigt: artist, merch und price.
  1. Klicken Sie auf die Seite Bestätigung.
  2. 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
  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: 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
  1. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.end. Erstelle die folgende Auftragsausführung: Thank you for contacting G-Records! Have a nice day!
  2. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.home. Erstellen Sie die folgende Parametervoreinstellung: restart = true

Super! Inzwischen haben wir einen voll funktionsfähigen Chatbot für einen echten Einzelhändler. Im nächsten Lab testen wir, wie gut der virtuelle Kundenservicemitarbeiter abschneidet.

9. Virtuellen Kundenservicemitarbeiter testen

Mit dem integrierten Simulator können Sie die Dialoge Ihres virtuellen Agents testen. Der Vorteil beim Testen der Abläufe im Simulator besteht darin, dass Sie einen guten Überblick über die Abläufe, Seiten, Parameter und DTMF-Ereignisse erhalten, die der Simulator beim Durchlaufen Ihrer Abläufe erfasst hat. Das erleichtert den Test im Vergleich zu einem Test direkt in einer Integration, da diese Informationen für den Endnutzer ausgeblendet werden. Es ist sogar möglich, Testfälle zu erstellen, zu speichern und wiederzuverwenden. Das ist sehr sinnvoll, wenn Sie Ihre Workflows im Laufe der Zeit pflegen oder bearbeiten und sicher sein möchten, dass keine Ihrer Änderungen Ihre vorherige Arbeit beeinträchtigt.

Es ist auch möglich, zuvor erstellte Testfälle zu exportieren und zu importieren, indem Sie die Tests in Google Cloud Storage oder lokal speichern. Beim Exportieren eines Tests wird eine Blob-Datei heruntergeladen. Weitere Informationen zum Simulator und zu den Testfällen finden Sie in der Dokumentation zum Simulator und zu den Testfällen.

Bevor wir einige Testfälle erstellen, sollten wir zuerst den Rest unseres virtuellen Kundenservicemitarbeiters fertigstellen:

Customer Care-Flow erstellen

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

Seite (im Navigationsfluss)

Routes > Intent

Routen > Zur Umstellung

Kundenbetreuung – Start

redirect.shipping.info

Versand

Kundenbetreuung – Start

redirect.refund.info

Erstattung

Kundenbetreuung – Start

redirect.swapping.info

Tausch

Kundenbetreuung – Start

redirect.home

Ablauf beenden

Kundenbetreuung – Start

redirect.end

Sitzung beenden

Customer Care-Flow

  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 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?
  1. 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?
  1. Wählen Sie die Seite Start aus und klicken Sie auf den Intent redirect.end. Erstelle die folgende Auftragsausführung: Thank you for contacting G-Records! Have a nice day!
  2. 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

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

  1. Typ: Hi

Customer Care-Flow

  1. Frage: Which artists are signed with your label?
  2. Sagen Sie: The Google Dolls
  3. Sagen Sie: I am interested in buying a shirt
  4. Sagen Sie: A t-shirt
  5. Sagen Sie: Medium
  6. Klicken Sie jetzt auf die Schaltfläche „Testfall speichern“. Sie finden es oben im Simulator neben dem Pfeil für „Wiederholen“ und dem Papierkorbsymbol für „Zurücksetzen“.

Customer Care-Flow

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

Erstellen wir weitere Testfälle.

  1. Löschen Sie zuerst das aktuelle Dialogfeld, indem Sie auf das Symbol „Zurücksetzen“ (Papierkorb) klicken.
  2. Erstellen Sie die folgenden Testfälle:

T-Shirt mit Alice the Googler kaufen:

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

T-Shirt in Größe M kaufen: (Der Name des Künstlers wurde nicht erwähnt, aber Sie möchten die Seiten „Bandübersicht“, „Produktübersicht“, „Shirts“ und „Shirtgrößen“ überspringen.)

>"Buy a t-shirt size M"
>"The Google Fighters"
  • Name des Testfalls: Buy a t-shirt size M
  • Tag: #catalog, #shirts, #t-shirt, #TheGoogleFighters
  • Beschreibung: (Hinweis: Der Name des Künstlers wurde nicht erwähnt, aber du möchtest die Seiten „Bandübersicht“, „Produktübersicht“, „Shirts“ und „Shirtgrößen“ überspringen.)

Musik von G's N' Roses kaufen (Hinweis: Die Seite mit der Bandübersicht und der Produktübersicht wird übersprungen)

>"Purchase music of G's N' Roses"
>"Live"
>"CD"
  • Name des Testfalls: Purchase music of G's N' Roses
  • Tag: #catalog, #music, #CD, #GsNRoses, #live
  • Beschreibung: Hinweis: Die Übersichten zu Bändern und Produkten werden übersprungen.

Prüfen Sie die Preisinformationen:

>"Which products"
>"Shirts"
>"What's the price difference?"
>"Longsleeve"
>"What does it cost?"
>"M"
>"The Google Dolls"
>"No"
>"Which bands"
>"The Gooo Fighters"
>"Music"
>"How much does it cost?"
>"Greatest Hits"
>"What's the price difference?"
>"Mp3"
>"No"
>"I want to buy the tour movie"
>"Alice Googler"
>"Yes"
  • Name des Testfalls: Price info
  • Tag: #catalog, #music, #tourmovie, #shirts
  • Beschreibung: Preisinformationen an verschiedenen Stellen im Dialog testen

Aufgezeichnete Testfälle testen

  1. Wählen Sie im Dialogflow-Hauptmenü links Verwalten > Testfälle aus.
  2. 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.

Testfälle

  1. Stellen Sie im Simulator folgende Frage: How long will shipping take?
  2. Notieren Sie sich das Ergebnis und speichern Sie den Testfall als Shipping mit dem Tag #shipping.
  3. 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.

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

  1. Entfernen Sie redirect.shipping.info route.
  2. 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.

  1. Sie können auf den fehlgeschlagenen Test klicken, um die Details zu sehen.

In diesem Fall ist der Test mit der folgenden Fehlermeldung fehlgeschlagen:

Page: Page mismatch:
Expected: Shipping
Actual: Start Page

Das liegt daran, dass die Seite im Navigationsfluss nicht mehr vorhanden ist. Wir haben die Seite Shipping erwartet, sind aber stattdessen immer auf der Seite Start geblieben. Andernfalls erhalten Ihre Endnutzer eine Fallback-Nachricht.

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

  1. Kehren Sie zum Kundenserviceablauf zurück und fügen Sie der Seite Start die redirect.shipping.info als Intent-Route hinzu. Denken Sie daran, zur Seite Versand zu wechseln und auf Speichern zu klicken.
  2. Erfassen Sie im Simulator den folgenden Testfall: I want to swap my item. Speichern Sie diesen Testfall 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 bei einer Anfrage eines Nutzers, einen Artikel gegen Erstattung umzutauschen, die Absicht redirect.swapping.info ausgelöst werden. Wir möchten jedoch keine Informationen zum Umtausch von Artikeln, sondern zum Thema Erstattungen bereitstellen.

  1. Erstellen Sie im Simulator den folgenden goldenen Testfall: I want to swap this item for a refund und speichern Sie ihn als Swap for Refund #refund.
  2. 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.
  3. Kehren Sie zu Verwalten > Testfälle zurück, wählen Sie den Testfall Umtausch gegen Erstattung aus und führen Sie ihn aus.

Ihr letzter Test ist mit der folgenden Fehlermeldung fehlgeschlagen:

If you would like to change your item for a different one, please return your unwanted item and place a new order. If your refund is accepted, we will refund the price you paid for your item back to your original payment method.`
Is there anything else I can help you with?
 Page: Page mismatch:
Expected: Refund
Actual: Swapping

Mit anderen Worten: Es handelt sich um eine missverstandene Anfrage, ein falsch-positives Testergebnis. Der Test ist fehlgeschlagen. Wir haben die Seite Erstattung erwartet, aber die Seite Gerätetausch wurde aktiviert.

Abdeckung

In Dialogflow CX ist die Testabdeckung ein Maß, mit dem beschrieben wird, inwieweit der Dialog des virtuellen Kundenservicemitarbeiters (Seiten und Intents) ausgeführt wird, wenn eine bestimmte Testsuite ausgeführt wird. Bei einem virtuellen Kundenservicemitarbeiter mit hoher Testabdeckung, gemessen als Prozentsatz, wurden während der Tests mehr seiner Dialoge ausgeführt. Das bedeutet, dass die Wahrscheinlichkeit, dass er nicht erkannte Fehler enthält (z. B. nicht erkannte Anfragen), im Vergleich zu einem virtuellen Kundenservicemitarbeiter mit niedriger Testabdeckung geringer ist.

  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.

Daraufhin wird die Testabdeckung für alle Intents angezeigt.

Abdeckung von Intents

Herzlichen Glückwunsch! Sie haben jetzt ein vollständiges Beispiel für einen Einzelhandelsbot aus der Praxis erstellt und getestet. Rufen Sie die nächste Seite des Labs auf, um die Schlussfolgerung zu lesen und nützliche Referenzen zu finden.

10. Fazit

Dialogflow CX ist eine Conversational AI Platform (CAIP) zum Erstellen virtueller Kundenservicemitarbeiter wie Chat- oder Sprachbots. Mit Dialogflow CX kann Ihr Team dank visueller Bot-Builder, wiederverwendbarer Intents und der Möglichkeit, mehrstufige Unterhaltungen zu führen, schneller dialogorientierte Anwendungen auf Unternehmensebene erstellen.

In diesem Codelab haben Sie gelernt, wie Sie einen virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen. Wir haben uns mit den folgenden Konzepten befasst:

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

Endergebnis

Verweise

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