Intent mit Parametern erstellen

Wir benötigen nun einen Intent, der für den Fahrradladen Termine vereinbaren kann. Der erste Intent Hours (Öffnungszeiten) kann nur die statische Antwort "We're open from 9 AM to 6 PM every day. Is there anything else I can do for you?" zurückgeben. Der neue Intent soll hingegen in der Lage sein, eine Reihe komplexerer Aufgaben auszuführen.

Betrachten wir folgende Interaktion zwischen Nutzer und Agent:

      Nutzer: Hi.

      Agent: Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?

      Nutzer: I need to make an appointment at 3 PM today.

      Agent: Got it. I have your appointment scheduled on Wednesday, August 1 at 3 PM. See you soon. Good-bye.

Im oben aufgeführten Dialog enthält die Nutzeräußerung "I need to make an appointment at 3 PM today" die wichtigen Informationen "3 PM" und "today". Damit wird angegeben, zu welcher Uhrzeit und an welchem Tag der Nutzer den Fahrradladen besuchen möchte. In der Antwort des Agents sind die Uhrzeit- und Datumsangaben aus der Nutzeräußerung enthalten: "Got it. I have your appointment scheduled on Wednesday, August 1 at 3 PM. See you soon. Good-bye."

Uns fällt es leicht, wichtige Informationen aus Äußerungen herauszufiltern. Für Maschinen ist das jedoch eine komplexe Aufgabe. Wir müssen die Intents so einrichten, dass sie aus Nutzeräußerungen wichtige Informationen, sogenannte Parameter, extrahieren können.

Informationen mithilfe von Entitäten und Parametern extrahieren

Mithilfe von Konzepten wie Entitäten und Parametern extrahiert Dialogflow Informationen aus Nutzeräußerungen und konvertiert sie in verschiedene Parameter. Diese Parameter können von anderen Funktionen oder Systemen für eine Vielzahl von Aufgaben verarbeitet werden.

So erstellen Sie einen neuen Intent mit Parametern:

  1. Erstellen Sie einen Intent mit dem Namen Make Appointment.
  2. Fügen Sie dem Bereich Trainingsformulierungen die folgende Formulierung hinzu:

    I need to make an appointment at 3 PM today.

  3. Prüfen Sie, ob in der Tabelle Action and parameter die Systementitäten @sys.date und @sys.time enthalten sind.

  4. Fügen Sie in die Tabelle Antworttext die folgende Antwort ein:

    Got it. I have your appointment scheduled on $date at $time. See you soon. Good-bye.

  5. Klicken Sie auf SAVE.

    Abbildung 5. Flussdiagramm mit dem hinzugefügten Intent Make Appointment (Terminvereinbarung)

Mit dieser Einrichtung wertet der Intent Make Appointment (Terminvereinbarung) die Nutzeräußerungen aus, erfasst alle Wörter, die den in Dialogflow eingebundenen Systementitäten @sys.date und @sys.time zugeordnet sind, und übernimmt die erfassten Werte in die Parameter $date und $time. Hierdurch kann in der Antwort mit $date und $time auf die Datums- und Uhrzeitwerte Bezug genommen werden, die aus den Nutzeräußerungen erfasst wurden: "Got it. I have your appointment scheduled on $date at $time. See you soon. Good-bye."

Mit Dialogflow können Sie auch benutzerdefinierte Entitäten erstellen, um Parameter zu extrahieren, die ungewöhnlich oder unkategorisiert sind. In unserem Szenario sind die Systementitäten jedoch ausreichend, um typische Parameter wie Uhrzeit und Datum zu erfassen. Weitere Informationen zu Entitäten erhalten Sie im Überblick über Entitäten.

Erforderliche Parameter mit Slot-Füllung abfragen

Gemäß den Best Practices aus dem vorherigen Abschnitt müssen wir nun zusätzlich zur aktuellen Trainingsformulierung "I need to make an appointment at 3 PM today" weitere Trainingsformulierungen angeben.

Fügen Sie die folgenden Trainingsformulierungen hinzu:

  • Can I schedule service for 4 PM tomorrow?
  • Can I set up an appointment for noon on Friday?

Bisher enthielten alle Trainingsformulierungen eine Uhrzeit- und Datumsangabe: "3 PM today", "4 PM tomorrow" und "noon on Friday". In der Realität enthalten Nutzeräußerungen jedoch nicht immer alle erforderlichen Parameter. Fügen Sie die folgenden Trainingsformulierungen hinzu:

  • Can you fix my road bike?
  • My bike is broken.
  • I'd like to get my bike fixed, I have a mountain bike that needs servicing.
  • I need to fix my bike today.
  • I'd like to schedule an appointment on this Thursday.

Aus allen oben genannten Formulierungen geht hervor, dass der Nutzer einen Termin vereinbaren möchte. Daher sollte der neue Intent auf Formulierungen dieser Art reagieren, um die Terminvereinbarung durchzuführen. In einigen Formulierungen fehlt jedoch entweder die Uhrzeitangabe oder die Datumsangabe, in anderen fehlen beide Angaben. Formulierungen wie diese sind problematisch, weil der Intent ohne Uhrzeit- und Datumsangabe keinen Termin vereinbaren kann.

Für diese Fälle bietet Dialogflow die Funktion Slot-Füllung. Sie stellt sicher, dass der Intent vom Nutzer alle erforderlichen Informationen einholt. Damit diese Funktion aktiviert wird, müssen wir die Parameter als erforderlich markieren.

Treffen Intents, für die erforderliche Parameter eingerichtet sind, auf Nutzeräußerungen, in denen die Parameter fehlen, werden dem Nutzer gezielte Fragen gestellt, um alle erforderlichen Parameter abzurufen. Schauen wir uns den folgenden Dialog an:

      Nutzer: Hi.

      Agent: Welcome. I can tell you the shop hours, or I can set up an appointment. Which would you like?

      Nutzer: I need to fix my bike.

      Agent: Okay, I can help you with that. What day do you want to come in?

      Nutzer: Today.

      Agent: And what time works for you?

      Nutzer: 3 PM.

      Agent: Got it. I have your appointment scheduled on Wednesday, August 1 at 3 PM. See you soon. Good-bye.

So markieren Sie die Parameter $time und $date als erforderlich und legen für die Parameter gezielte Fragen fest:

  1. Klicken Sie auf den Intent Make Appointment (Terminvereinbarung).
  2. Klicken Sie in der Tabelle Action and parameters (Aktion und Parameter) auf das jeweilige REQUIRED-Kästchen für die Parameter $time und $date. Es wird eine Spalte mit dem Namen PROMPTS erstellt.
  3. Wenn sich der Parameter $date in der Tabelle unterhalb des Parameters $time befindet, ziehen Sie die Zeile des Parameters $date nach oben über den Parameter $time. Die Platzierung in der Tabelle bestimmt nämlich die Reihenfolge, in der die gezielten Fragen gestellt werden.
  4. Klicken Sie für den Parameter $date auf den Link Define prompts unterhalb der Spalte PROMPTS und fügen Sie die folgenden gezielten Fragen hinzu:
    • Okay, I can help you with that. What day do you want to come in?
    • Sure, what day are you coming in?
    • Okay, what day will work for you?
  5. Klicken Sie für den Parameter $time auf den Link Define prompts und fügen Sie die folgenden gezielten Fragen hinzu:
    • And what time works for you?
    • What time?
    • Now, what time do you want the appointment?
  6. Klicken Sie auf SAVE.
  7. Testen Sie die eingerichtete Slot-Füllung mit dem Simulator der Dialogflow-Konsole.

    Abbildung 6. Flussdiagramm mit gezielten Fragen zur Slot-Füllung für die erforderlichen Parameter

Wir haben jetzt einen Intent erstellt, der die notwendigen Datums- und Uhrzeitangaben einholt, sobald ein Nutzer angibt, dass er einen Termin vereinbaren möchte. Noch antwortet der Intent jedoch nur mit einer Scheinantwort, denn es wird kein Termin vereinbart. Wir müssen einen Back-End-Prozess (Fulfillment) erstellen, mit dem über Google Kalender ein Termin vereinbart werden kann.

Im nächsten Teil erfahren Sie, wie Sie für den Intent Make Appointment (Terminvereinbarung) eine Auftragsausführung erstellen.