Dialogflow CX: Virtuelles Kundenservicepersonal 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. Dialogflow CX kann virtuelles Kundenservicepersonal wie Chatbots, Sprach-Bots und Telefonie-Gateways implementieren und mehrere Kanäle in über 50 verschiedenen Sprachen unterstützen.

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

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

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
  • Informationen zum Erstellen von Intents
  • Seiten und Übergangsseiten mit Zustands-Handlern erstellen
  • Weitere Informationen zur Umstellung von Seiten mit Intent-Routen
  • Seitenübergänge mit Parametern und Bedingungsrouten
  • Bedingte Antworten mit Systemfunktionen zurückgeben
  • Informationen zum Erstellen von Fallback-Nachrichten
  • Informationen zur Verwendung des Simulators
  • Testfälle und Testabdeckung erstellen

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

Endergebnis

Voraussetzungen

  • Sie benötigen eine Google Identity-/Gmail-Adresse, um einen Dialogflow CX-Agent zu erstellen.
  • Zugriff auf Google Cloud

2. Umgebung einrichten

Google Cloud-Projekt erstellen

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

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

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

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 Console:

  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 einem Bildschirm passt und modularer ist.

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

Später in diesem Lab verwenden wir Status-Handler, mit denen Sie einen Ablauf beenden können, sodass er zum nächsten oder vorherigen Ablauf zurückkehrt. Alternativ können Sie auch die vollständige Agent-Sitzung beenden.

Lass uns ein paar Abläufe erstellen.

Abläufe erstellen

  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

Auf der rechten Seite der Dialogflow CX-Konsole können Sie den virtuellen Kundenservicemitarbeiter mit dem integrierten Simulator testen. Sie können die Unterhaltung am Anfang der Unterhaltung oder in einem bestimmten Ablauf testen.

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

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 Baumknoten Start aus.

Daraufhin wird die Seite Start geöffnet. Im Seitenleistenbereich Build > Pages (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 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 die Begrüßungsabsicht im Simulator.

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

  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 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 ist das mit Pages möglich. Fahren wir mit dem Lab fort und erstellen Sie zuerst einige Entities (Entitäten) und Intents.

4. Entitätstypen

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

Beginnen wir mit der Vorbereitung aller benutzerdefinierten Entitäten, bevor wir die Seiten in einem Ablauf entwerfen können. Wir erstellen die folgenden Entitäten:

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 Merchandise-Artikel:

  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 normalerweise aus vier alphanumerischen und drei 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.) an einen Intent binden. Intents in Dialogflow CX enthalten nur Trainingsformulierungen und können daher wiederverwendet werden. Sie steuert die Unterhaltung nicht mehr. Intents werden also einfach erstellt:

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

Intents erstellen

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

  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. Denken Sie sich weitere Trainingsformulierungen aus. Es empfiehlt sich, mindestens 10 Trainingsformulierungen pro Intent zu verwenden, um die verschiedenen Möglichkeiten abzudecken, wie ein Nutzer diesen Intent auslösen könnte. Für die Zwecke dieses Labs sollte es aber auch weniger sein.

Achten Sie auf Folgendes:

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

Anzeigename

Trainingsformulierungen

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 Google-Mitarbeiterin 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: Waiting for Coins, Select Candy, Give Candy (Warten auf Coins, Select Candy, Give Candy) und mehrere Eingaben. Wenn Sie beispielsweise eine Münze einwerfen, wechselt der Automat von „Warte auf Münzen“ zu „Süßigkeiten auswählen“. Mit Seiten können wir diese Status für einen virtuellen Dialogflow CX-Kundenservicemitarbeiter modellieren.

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

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

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

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

  • Intent-Routen: Wenn ein Intent zugeordnet werden soll, z.B. zum Ändern der Seite basierend auf den Aussagen des Endnutzers. (Blaue Linien im visuellen Diagramm)
  • Bedingungsrouten: Wann eine Bedingung geprüft werden soll, z. B. das Ändern der Seite basierend auf bestimmten in der Sitzung gespeicherten Parametern (orangefarbene Linien im Diagramm)
  • Event-Handler: Wenn ein bestimmtes Fallback-Ereignis verarbeitet werden soll (z. B. keine Eingabe oder keine Übereinstimmung, um den Endnutzer von einer Intent- oder Bedingungsroute zu unterscheiden) (grüne Linien im Diagramm)

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

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

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

Seiten-Intent-Routen

Seiten im Standardstartablauf erstellen

Hier ein Flussdiagramm des Standardstartablaufs:

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 Ablauf 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)

Routen > 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. In diesem virtuellen Agenten wird er jedoch mit Natural Language trainiert, wobei die Trainingsformulierungen in Intents verwendet werden. Daher wird die Interaktion durch die Unterhaltung und nicht durch DTMF-Optionen gesteuert und ist natürlicher und menschlicher.

Weiterleitungen der Standardstartseite

Seiten im Katalogablauf erstellen

Der folgende Chatverlauf gehört zum Katalogablauf:

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

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

We sell shirts, music or the tour movie.

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

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

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

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

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

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

Hier sehen Sie ein Flussdiagramm mit allen Seiten im Katalogfluss:

Mit dem Katalog verknüpfte Seiten

Beachten Sie die Komplexität dieses Ablaufs:

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

Beginnen wir damit, die Seiten zu verbinden.

  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.

Jetzt können wir den Rest des Ablaufs abschließen:

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

Seite (im Navigationsfluss)

Routen > Intent

Routen > Zur Umstellung

Katalogstart

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 Katalog auf die Seite Produktübersicht.
  3. Klicken Sie im Abschnitt Auftragsausführung der Einträge auf Auftragsausführung bearbeiten.
  4. Verwenden Sie die folgende statische Auftragsausführung (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 Longsleeves solltest du auch @ShirtSize erfassen. Wenn du Musik bestellen möchtest, benötigst du außerdem einen @Carrier- und einen @Album-Namen.

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

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

Parameter auf der Übersichtsseite des Künstlers erstellen

Definieren wir einige Seitenparameter:

  1. Klicke im Katalog auf die Seite Künstlerübersicht.
  2. Klicken Sie im Block Parameter auf das +. Fügen Sie den Parameter artist hinzu:
  • Anzeigename: artist
  • Entitätstyp: @Artist
  • Erforderlich: Häkchen
  • Im Log entfernen: Häkchen setzen
  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 können Sie Event-Handler für Parameter verwenden. Sie können aus verschiedenen integrierten Event-Handlern auswählen, z. B. Ungültige Parameter, Äußerungen zu lang, Keine Eingabe, Keine Eingabe beim ersten Versuch, 2. Versuch oder Keine Übereinstimmung. Der Unterschied zwischen „Keine Eingabe“ und „Keine Übereinstimmung“ besteht darin, dass ein Nutzer bei „Keine Eingabe“ nie eine Antwort gegeben hat, während er bei „Keine Übereinstimmung“ zwar eine Antwort gegeben hat, diese aber von Dialogflow CX nicht mit einer Seite abgeglichen werden konnte.

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

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

  1. Klicken Sie auf Speichern.

Seitenbedingungensrouten

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

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

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

Bedingte Routen auf der Übersichtsseite des Künstlers erstellen

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

  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,
  • Parameter: $page.params.status
  • Betreiber: =
  • Wert: "FINAL"
  1. Jetzt erstellen wir eine spezielle statische Auslieferungsnachricht auf der Route, in der die Auswahl des Endnutzers bestätigt wird. Scrolle nach unten zum Block Fulfillment und gib die folgenden Auftragsausführungsnachrichten ein:
  • $session.params.artist, great choice! Rock on!
  • You want to rock with $session.params.artist merchandise. Awesome!
  1. Wenn die Bedingung wahr ist, sollten Sie zur Seite Produktübersicht wechseln. Scrollen Sie nach unten zum Abschnitt Umstellung und verwenden Sie die folgende Seite: Product Overview
  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
  • Entitätstyp: @Artist
  • Erforderlich: Häkchen
  • Im Log entfernen: Häkchen setzen
  • Erstauftragsausführung: From which of these artists would you like to order merchandise?
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event-Handler > No-match default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist do you want to buy merchandise from?
  • Benutzerdefinierte Nutzlast:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Event-Handler > No-input default: To buy merchandise you can choose between the following artists: Alice Googler, G's N' Roses, The Google Dolls or The Goo Fighters. Which artist were you trying to mention?
  • Benutzerdefinierte Nutzlast:
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "The Google Dolls"
          },
          {
            "text": "The Goo Fighters"
          },
          {
            "text": "Alice Googler"
          },
          {
            "text": "G's N' Roses"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  1. merch-Parameter erstellen:
  • Anzeigename: merch
  • Entitätstyp: @Merch
  • Erforderlich: Häkchen
  • Im Log entfernen: Häkchen setzen
  • Auftragsausführung: Which merchandise item do you want?
  • Klicken Sie auf Dialogoption hinzufügen > Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event-Handler > No-match default
  • Auftragsausführung für Event-Handler: We sell Shirts, Music or the Tour movie. Which of these items do you want?
  • Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  • Event-Handler > No-input default
  • Auftragsausführung für Event-Handler: I couldn't understand which merchandise item you wanted to buy. You can choose between: Shirts, Music or the Tour movie. Which item do you want?
  • Benutzerdefinierte Nutzlast:
{
    "richContent": [
      [
        {
          "type": "chips",
          "options": [
            {
              "text": "Shirts"
            },
            {
              "text": "Music"
            },
            {
              "text": "Tour movie"
            }
          ]
        }
      ]
    ]
  }
  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. Erstelle eine Route für den Fall, 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 obige Konfiguration eingerichtet haben, sehen Sie eine Visualisierung ähnlich der folgenden Abbildung. Beachten Sie, dass Intent-Routen im Diagramm blau und Bedingungsrouten orange sind. Event-Handler sind grün, wenn mehrere Routentypen zu einer Seite führen, ist die Linie grau.

Beginn des Katalogablaufs

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

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

Seite „Hemden“:

  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 > 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 den Eintrag „Auftragsausführung“ und scrollen Sie nach unten zu Parametervoreinstellungen. Jedes Mal, wenn die Seite „Hemden“ aktiviert wird, wird der Kategorieparameter auf hemden gesetzt:

Parameter

Wert

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 Preisangaben von dem ausgewählten Merchandise-Artikel oder der ausgewählten Kategorie (Musik oder T-Shirts) abhängen, werden wir diesen Teil später in diesem Lab korrigieren. Die Eingabe eines Platzhalters reicht im Moment mehr als aus.

  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 Abzweigung zu Preisinformationen vornehmen können. (Shirt, Shirt Size, Musik, Transportunternehmen und auch direkt über eine Intent-Route). Daher benötigen wir einige bedingte Routen, um zurückzugehen:

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

Anzeigename des Parameters

Parameter-Entitätstyp

Vorabprüfung

artist

@Artist

Erforderlich, im Log entfernen

merch

@Merch

Erforderlich, im Log entfernen

  1. Für den artist-Parameter ist die folgende anfängliche Ausführung erforderlich, die angezeigt wird, wenn der Künstler nicht bekannt ist. You didn't mention which artist you are interested in. You can ask me to buy the $session.params.merch of the artist you like or ask which artists we signed. How can I help?
{
  "richContent": [
    [
      {
        "options": [
          {
            "text": "Which artists?"
          }
        ],
        "type": "chips"
      }
    ]
  ]
}
  • Fügen Sie auch einen No-input default-Ereignis-Handler mit Auftragsausführung hinzu: I couldn't understand what you just said. Ask me which artists are signed.
  • Und einen No-match default-Ereignis-Handler mit Auftragsausführung: I missed that. Please ask me which artists are signed.
  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. Fügen Sie eine bedingte Route hinzu:
  • Benutzerdefinierter Ausdruck: $session.params.artist != null AND $session.params.merch = "T-shirt" AND $session.params.shirtsize != null
  • Parametervoreinstellungen – Parameter hinzufügen > price = 25
  • Übergang zu Seite: Confirmation

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

  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

Der nächste Pfad führt zur Bestätigungsseite, wenn der Künstler bekannt ist und der Nutzer „CD“ und den Albumnamen auswählt.

  1. 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. Die nächste Route wechselt zurück zur Musikseite, wenn der Künstler bekannt ist und der Nutzer eine "CD" oder ein "Digitales Album", aber keinen Albumnamen gewählt hat.

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

Bei einigen Antworten wird je nach Eingabe ein anderer Dialog zurückgegeben. Die Dialogfelder verzweigen sich. Dies nennen wir bedingte Antworten. Das kann interessant sein, wenn Sie keine Webhook-Auftragsausführungen verwenden, bei denen die bedingten Antworten im Back-End ermittelt wurden. Ein Beispiel könnte so aussehen:

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

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

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

Bestätigungsseite:

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

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

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

9. Virtuellen Kundenservicemitarbeiter testen

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

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

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

Customer Care-Flow erstellen

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

Seite (im Navigationsfluss)

Routen > Intent

Routen > Zur Umstellung

Customer Care Start

redirect.shipping.info

Versand

Customer Care Start

redirect.refund.info

Erstattung

Customer Care Start

redirect.swapping.info

Tausch

Customer Care Start

redirect.home

Ablauf beenden

Customer Care-Start

redirect.end

Sitzung beenden

Customer Care-Flow

  1. Erstellen Sie die folgenden Einträge für die Seite Shipping (Versand):
  • Shipping physical merchandise items can take up to 2 weeks.
  • Is there anything else I can help you with?
  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 Startseite aus und klicken Sie auf den Intent redirect.end. Erstellen Sie die folgende Auftragsausführung: Thank you for contacting G-Records! Have a nice day!
  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“. Oben im Simulator finden Sie sie neben dem Pfeil zum Wiederholen und zum Zurücksetzen des Papierkorbsymbols.

Customer Care-Flow

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

Ein T-Shirt in Größe M kaufen: (Hinweis: Der Name des Künstlers wurde nicht erwähnt. Du solltest aber die Bandübersicht, die Produktübersicht, die Seiten mit den Hemden und T-Shirts überspringen.)

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

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

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

Prüfen Sie die Preisinformationen:

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

Vorab aufgezeichnete Testläufe testen

  1. Wählen Sie links im Dialogflow-Hauptmenü Manage > Test Cases (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 dazu aufzurufen.

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

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

Das liegt daran, dass die Seite im Navigationsfluss nicht mehr vorhanden ist. Wir haben die Seite Shipping erwartet, aber stattdessen haben wir die Seite Start nie verlassen. (oder Ihre Endnutzer erhalten eine Fallback-Nachricht.)

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

  1. Kehren Sie zum Kundenserviceablauf zurück und fügen Sie der Seite Start die redirect.shipping.info als Intent-Route hinzu. Wechseln Sie zur Seite Versand und klicken Sie auf Speichern.
  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 eine Erstattung umzutauschen, die Absicht redirect.swapping.info ausgelöst werden. Wir möchten jedoch keine Informationen zum Umtausch von Artikeln, sondern zum Thema Erstattungen bereitstellen.

  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 hatten erwartet, dass die Seite Erstattung angezeigt wird, aber die Seite Tauschen wurde aktiviert.

Abdeckung

In Dialogflow CX ist die Testabdeckung ein Messwert, der angibt, in welchem Umfang der Dialog des virtuellen Kundenservicemitarbeiters (Seiten und Intents) ausgeführt wird, wenn eine bestimmte Testsuite ausgeführt wird. Ein virtueller Kundenservicemitarbeiter mit hoher Testabdeckung, gemessen in Prozent, hat während des Tests mehr von seinen Dialogen ausgeführt. Das deutet darauf hin, dass er im Vergleich zu einem virtuellen Kundenservicemitarbeiter mit geringer Testabdeckung weniger Fehler enthält (z. B. nicht erkannte Anfragen).

  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. Gehen wir nun zur nächsten Lab-Seite, um die Schlussfolgerung zu lesen und einige praktische Referenzen zu finden.

10. Fazit

Dialogflow CX ist eine Plattform für konversationelle KI (Conversational AI Platform, CAIP), mit der Sie virtuelle Agenten wie Chat- oder Sprachbots erstellen können. Mit Dialogflow CX kann Ihr Team mithilfe von visuellen Bot-Buildern, wiederverwendbaren Intents und der Möglichkeit, Unterhaltungen über mehrere Themen hinweg schneller dialogorientierte Lösungen für Unternehmen zu erstellen.

In diesem Codelab haben Sie gelernt, wie Sie einen virtuellen Kundenservicemitarbeiter für den Einzelhandel erstellen. Wir haben die folgenden Konzepte angesprochen:

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

Endergebnis

Verweise

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