Aktionen für Google Assistant mit Actions Builder erstellen (Level 2)

1. Übersicht

Mit der Google Assistant-Entwicklerplattform können Sie Software erstellen, um die Funktionen von Google Assistant, einem virtuellen persönlichen Assistenten, auf mehr als einer Milliarde Geräte zu erweitern, darunter Smart Speaker, Smartphones, Autos, Fernseher, Kopfhörer und mehr. Nutzer interagieren mit Assistant, um Dinge zu erledigen, z. B. Lebensmittel zu kaufen oder eine Fahrt zu buchen. Als Entwickler können Sie die Assistant-Entwicklerplattform nutzen, um auf einfache Weise ansprechende und effektive Unterhaltungen zwischen Nutzern und Ihrem eigenen Drittanbieter-Fulfillment-Dienst zu erstellen und zu verwalten.

In diesem Codelab werden Konzepte für die Entwicklung mit Google Assistant auf mittlerem Niveau behandelt. Es baut auf der Aktion auf, die im Codelab für Anfänger erstellt wurde. Es wird dringend empfohlen, das Codelab für Stufe 1 abzuschließen, bevor Sie mit diesem Codelab beginnen.

Die Action, die Sie in diesem Codelab erstellen, sagt Nutzern ihr Glück für ihre Suche in einem mythischen Land, Gryffinberg, voraus, basierend auf der Hilfe, die sie wählen.

Aufgaben

In diesem Codelab erstellen Sie eine anspruchsvolle Conversational Action mit den folgenden Funktionen:

  • Erhebt Daten vom Nutzer und ändert je nach Wert die Konversationsaufforderungen.
  • Antwortet mit Folgefragen, um die Unterhaltung fortzusetzen
  • Erstellt eine Spielschleife, damit ein Nutzer nach Erhalt einer Vorhersage noch einmal mit der Action interagieren kann.

Bevor Sie mit der Entwicklung beginnen, können Sie mit der Live-Aktion auf Ihrem Google Assistant-fähigen Gerät interagieren, indem Sie „Hey Google, sprich mit Fate and Fortune“ sagen. Der Standardpfad durch diese Aktion für einen wiederkehrenden Nutzer sieht so aus:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

Lerninhalte

  • Slots verwenden, um Daten vom Nutzer zu erfassen
  • Bedingungen verwenden, um einer Szene Logik hinzuzufügen
  • Spielschleife hinzufügen
  • Unterstützenden Pfad hinzufügen

Voraussetzungen

Die Voraussetzungen für dieses Codelab sind:

Kenntnisse von JavaScript (ES6) sind zwar nicht erforderlich, werden aber dringend empfohlen, um den Fulfillment-Code für dieses Codelab zu verstehen.

2. Dialogorientierte Benutzeroberfläche weiterentwickeln

Im ersten Codelab haben Sie eine einfache Conversational Action mit einer einzelnen Szene, Start, erstellt.

In diesem Codelab erweitern Sie die Unterhaltung Ihrer Action. In den folgenden Abschnitten konfigurieren Sie Ihre Aktion für Folgendes:

  • Wechsle zu einer neuen Fortune-Szene, wenn der Nutzer sein Horoskop hören möchte.
  • Fragen Sie den Nutzer, welche Hilfe er für seine Reise auswählen möchte.
  • Eine personalisierte Vorhersage basierend auf der Auswahl des Nutzers erstellen

Fortune-Szene erstellen

In diesem Abschnitt erstellen Sie die Fortune-Szene und definieren, wie der Nutzer während der Unterhaltung zu dieser Szene wechselt.

So erstellen Sie eine neue Szene mit dem Namen Fortune:

  1. Öffnen Sie Ihr Actions-Projekt für Codelab 1.
  2. Klicken Sie in der Navigationsleiste auf Entwickeln.
  3. Klicken Sie unter Szenen auf die Szene Starten.
  4. Klicken Sie auf den Intent yes (das Feld When yes is matched), um die Optionen zu öffnen.
  5. Entfernen Sie das Häkchen bei Prompts senden, um den Prompt zu entfernen.
  6. Klicken Sie im Bereich Übergang auf das Drop-down-Menü, klicken Sie in das Textfeld und geben Sie Fortune ein.
  7. Klicken Sie auf Hinzufügen. Dadurch wird eine neue Szene mit dem Namen Fortune erstellt. Außerdem wird ein Übergang von der Start-Szene zur Fortune-Szene hinzugefügt, wenn der Nutzer sein Horoskop hören möchte.

56682a0c7459b98c.png

Gesprächslogik für die Szene Fortune definieren

In diesem Codelab konfigurieren Sie die Fortune-Szene so, dass der Nutzer gefragt wird: Was wählst du, um dich auf deiner Suche zu unterstützen: einen Drachen, einen Übersetzer oder einen Kompass? Mit der Funktion Slot-Füllung können Sie die erforderlichen Informationen vom Nutzer erfassen, bevor Sie fortfahren.

Ihre Aktion bietet Vorhersagen für drei Hilfsmittel: einen Drachen, einen Übersetzer und einen Kompass. Damit Ihre Aktion diese drei Optionen in der Eingabe eines Nutzers erkennen kann, müssen Sie einen neuen Typ erstellen.

Sie können Typen in der Phase der Slot-Ausfüllung einer Szene verwenden, um die Informationen zu definieren, die Sie vom Nutzer benötigen. Wenn die NLU-Engine eine Slot-Übereinstimmung in der Nutzereingabe erkennt, wird der Slot als typisierter Parameter extrahiert, sodass Sie damit in einer Szene Logik ausführen können.

available_options-Typ erstellen

In diesem Abschnitt erstellen Sie einen neuen Typ namens available_options, der die drei Optionen angibt, die Nutzer als Antwort auf den Prompt auswählen können (Drache, Übersetzer und Kompass). Außerdem definieren Sie einige Synonyme für diese Optionen, falls ein Nutzer etwas Ähnliches sagt. In einem späteren Abschnitt fügen Sie dem Slot den Typ available_options hinzu, um anzugeben, dass Sie die Auswahl des Nutzers abrufen möchten.

So erstellen Sie den Typ available_options:

  1. Klicken Sie in der Navigationsleiste auf Types (Typen).
  2. Klicken Sie auf das + (Pluszeichen), geben Sie available_options ein und drücken Sie die Enter-Taste.
  3. Klicken Sie auf available_options, um die Optionen zu öffnen.

Typen werden als Schlüssel/Wert-Paare konfiguriert, wobei der Schlüssel der Name des Typs und die Werte Synonyme für diesen Schlüssel sind. Wenn Sie den Schlüssel definieren, wird er automatisch als Wert hinzugefügt.

So fügen Sie die drei Optionen hinzu, die der Nutzer auswählen kann:

  1. Scrollen Sie zum Abschnitt Einträge hinzufügen.
  2. Geben Sie im Feld Neuer Eintrag dragon ein und drücken Sie Enter. Dadurch wird ein dragon-Schlüssel erstellt.
  3. Geben Sie hydra in das Feld Werte hinzufügen ein und drücken Sie die Enter-Taste, um den Wert (Synonym) hinzuzufügen. Wiederholen Sie diesen Schritt dann für den Wert lizard.
  4. Fügen Sie die restlichen Schlüssel und die entsprechenden Werte hinzu:
  • translator | translator, communicator, machine, decoder, translate
  • compass | compass, direction, guide

8333b1b67445f21.png

  1. Klicken Sie auf Speichern.

Ihre Aktion versteht jetzt, dass die available_options Drache, Übersetzer und Kompass sind, und kann auch einige entsprechende Synonyme erkennen.

Slot-Füllung konfigurieren

Als Nächstes müssen Sie die Slot-Ausfüllung in der Szene Fortune konfigurieren. So konfigurieren Sie die Logik zum Ausfüllen von Slots:

  1. Klicken Sie in der Navigationsleiste unter Szenen auf Glück.
  2. Klicken Sie in der Szene Fortune auf das Pluszeichen (+) für Slot-Filling.
  3. Geben Sie im Feld Slot-Name eingeben chosenOptions als Slot-Name ein.
  4. Wählen Sie in der Drop-down-Liste Typ auswählen den Slot-Typ available_options aus.
  5. Klicken Sie das Kästchen Dieser Slot ist erforderlich an.

a461b906476e244.png

  1. Wählen Sie Prompts senden aus und fügen Sie die folgende Nachricht und die folgenden Vorschlagschips hinzu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. Klicken Sie auf Speichern.

Sie haben dem Slot jetzt den Typ available_options hinzugefügt. Dadurch wird Ihrer Action mitgeteilt, welche Informationen Sie vom Nutzer erfassen müssen (die Auswahl der Hilfe), bevor Sie fortfahren können. Sie haben auch einen Prompt im Slot konfiguriert, der der Prompt-Warteschlange hinzugefügt wird, wenn der Nutzer die Slot-Filling-Phase der Szene erreicht.

Wenn Sie den Slot chosenOptions genannt haben, wird das Feld Slot-Wert-Rückschreiben anpassen mit demselben Namen ($session.params.chosenOptions) aktualisiert. Sie können über diesen Namen in Actions Builder und in Ihrem Fulfillment über die Clientbibliothek auf diesen Parameter zugreifen.

scene.slots.status == "FINAL"-Bedingung konfigurieren

Wenn Sie einen Slot hinzufügen, wird der Liste automatisch die Bedingung scene.slots.status == "FINAL" hinzugefügt.

Mit der Bedingung scene.slots.status == "FINAL" wird geprüft, ob alle Slots ausgefüllt sind. Wenn alle Slots gefüllt sind, kann die Bedingung einen Webhook auslösen, zu einer neuen Szene wechseln oder der Prompt-Warteschlange Prompts hinzufügen.

In diesem Abschnitt konfigurieren Sie scene.slots.status == "FINAL" so, dass der Promptwarteschlange ein Prompt hinzugefügt wird, sobald die Slots gefüllt sind.

So fügen Sie diesen Prompt der Bedingung FINAL hinzu:

  1. Klicken Sie auf scene.slots.status == "FINAL", um das Optionsfenster zu öffnen.
  2. Wählen Sie Prompts senden aus und fügen Sie den folgenden Prompt hinzu:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. Klicken Sie auf Speichern.

Aktion im Simulator testen

An dieser Stelle haben Sie festgelegt, welche Optionen der Nutzer auswählen soll, um den Slot zu füllen. Nachdem Sie diese Informationen vom Nutzer erhalten haben, sollte Ihre Aktion einen Prompt mit der von ihm ausgewählten Option ausgeben.

So testen Sie Ihre Action:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Klicken Sie auf das Feld Eingabe oder geben Sie Talk to my test app ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auch auf den Vorschlagschip Ja klicken.

a899d45c542668f6.png

  1. Klicken, tippen oder sagen Sie dragon. Sie sollten den Prompt „You picked dragon.“ (Du hast Drache ausgewählt) erhalten.

Im nächsten Abschnitt passen Sie die Prompts für jede Hilfe an, die der Nutzer auswählen kann.

Aufforderungen mit Bedingungen anpassen

In diesem Abschnitt fügen Sie für jede Option, die der Nutzer auswählen kann, Bedingungen und für jede Bedingung einen benutzerdefinierten Prompt hinzu.

dragon-Glückskeks anpassen

So aktualisieren Sie die Bedingung und passen den Prompt an, wenn ein Nutzer „dragon“ auswählt:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie in der Navigationsleiste auf die Szene Fortune.
  3. Klicken Sie auf scene.slots.status == "FINAL", um das Optionsfenster zu öffnen.
  4. Aktualisieren Sie die Bedingung auf: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. Wählen Sie Prompts senden aus.
  6. Aktualisieren Sie den Prompt mit dem folgenden Glückskeksspruch im Code-Editor:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. Klicken Sie auf Speichern.

d31767232ad908bd.png

Wenn ein Nutzer jetzt „Drache“ oder etwas Ähnliches sagt, liefert Ihre Action ein Horoskop basierend auf dieser Auswahl. Als Nächstes fügen Sie die verbleibenden zwei Auswahlen hinzu.

translator-Glückskeks anpassen

So fügen Sie die Bedingung hinzu und passen den Prompt an, wenn ein Nutzer „Übersetzer“ auswählt:

  1. Klicken Sie neben Bedingung auf das Pluszeichen (+).
  2. Fügen Sie scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" dem Feld else if hinzu.
  3. Wählen Sie Prompts senden aus.
  4. Fügen Sie im Code-Editor den folgenden Prompt hinzu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. Klicken Sie auf Speichern.

c1af65e70dbf3dfe.png

compass-Glückskeks anpassen

So fügen Sie die Bedingung hinzu und passen den Prompt an, wenn ein Nutzer „Kompass“ auswählt:

  1. Klicken Sie neben Bedingung auf das + (Pluszeichen).
  2. Fügen Sie scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" in das Textfeld else if ein.
  3. Wählen Sie Prompts senden aus.
  4. Fügen Sie im Code-Editor den folgenden Prompt hinzu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. Klicken Sie auf Speichern.

Aktion im Simulator testen

An diesem Punkt sollte Ihre Aktion dem Nutzer basierend auf der ausgewählten Option eine personalisierte Vorhersage liefern.

So testen Sie Ihre Action:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Geben Sie Talk to my test app in das Feld Eingabe ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auf den Vorschlagschip Ja klicken.
  4. Klicken, tippen oder sagen Sie Translator.

29e17f950bd0dd71.png

Sie sollten das entsprechende Fortune für die Option „Übersetzer“ erhalten.

3. Spielschleife hinzufügen

In diesem Abschnitt konfigurieren Sie Ihre Aktion so, dass der Nutzer eine andere Option auswählen und nach der Auswahl ein anderes Horoskop hören kann. Diese Änderung ähnelt der Meldung Möchten Sie noch einmal spielen? am Ende eines Spiels. Um diese Schleife zu erstellen, können Sie die zuvor erstellten Intents yes und no wiederverwenden und sie einer neuen Szene namens Again hinzufügen.

Again-Szene erstellen

In diesem Abschnitt erstellen Sie eine neue Again-Szene und fügen einen Prompt hinzu, in dem der Nutzer gefragt wird, ob er eine andere Option auswählen möchte.

So erstellen Sie die Szene Again:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie unter Szenen auf das Pluszeichen (+).
  3. Geben Sie Again ein und drücken Sie Enter.
  4. Klicken Sie in der Navigationsleiste auf die Szene Again.
  5. Klicken Sie neben Beim Aufrufen auf das + (Pluszeichen).
  6. Wählen Sie Aufforderungen senden aus und fügen Sie die folgende Aufforderung und die Vorschlagschips hinzu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Klicken Sie auf Speichern.

Übergang von Szene Fortune zu Szene Again hinzufügen

Nachdem der Nutzer sein Horoskop erhalten hat, muss das Gespräch zur neuen Again-Szene übergehen.

So fügen Sie einen Übergang von der Szene Fortune zur Szene Again hinzu:

  1. Klicken Sie auf die Szene Fortune (Glück).
  2. Klicken Sie auf die erste Bedingung (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"), um das Optionsfenster zu öffnen.
  3. Scrollen Sie unter Übergang zu Again und wählen Sie die Option aus.
  4. Klicken Sie auf Speichern.
  5. Klicken Sie auf die zweite Bedingung, um das Optionsfenster zu öffnen.
  6. Scrollen Sie unter Übergang zu Again und wählen Sie die Option aus.
  7. Klicken Sie auf Speichern.
  8. Klicken Sie auf die dritte Bedingung, um das Optionsfenster zu öffnen.
  9. Scrollen Sie unter Übergang zu Again und wählen Sie die Option aus.
  10. Klicken Sie auf Speichern.

Aktion im Simulator testen

An diesem Punkt sollte Ihre Action dem Nutzer nach der Vorhersage den folgenden Prompt anzeigen: „Das ist es, was ich für dich sehe. Möchten Sie eine andere Option auswählen und eine andere Zukunft erkunden?“

So testen Sie Ihre Action:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Geben Sie Talk to my test app in das Feld Eingabe ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auf den Vorschlagschip Ja klicken.
  4. Klicken, tippen oder sagen Sie dragon.

b299e9fed9aedb69.png

Sie sollten das Ergebnis für die Option „Drache“ und den Prompt Again erhalten.

Intents hinzufügen und zur Szene Again wechseln

In diesem Abschnitt fügen Sie der Again-Szene yes- und no-Intents hinzu, damit Ihre Action versteht, ob der Nutzer eine neue Option auswählen möchte oder nicht. Außerdem fügen Sie die entsprechenden Übergänge für die Intents yes und no hinzu. Der Intent yes wechselt zur Szene Fortune, während der Intent no zur Systemszene End conversation wechselt.

So fügen Sie der Szene Again Intents und Übergänge hinzu:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie auf die Szene Again.
  3. Klicken Sie neben User intent handling auf das + (Pluszeichen).
  4. Wählen Sie im Drop-down-Menü für die Intention Ja aus.
  5. Wählen Sie im Drop-down-Menü Übergang die Option Fortune aus.
  6. Klicken Sie auf Speichern.

c2efba35ea881b0d.png

  1. Klicken Sie neben User intent handling auf das + (Pluszeichen).
  2. Wählen Sie im Drop-down-Menü für die Intention Nein aus.
  3. Wählen Sie im Drop-down-Menü Übergang die Option Unterhaltung beenden aus.
  4. Wählen Sie Prompts senden aus und fügen Sie den folgenden Prompt in den Code-Editor ein:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. Klicken Sie auf Speichern.

Aktion im Simulator testen

Ihre Aktion sollte jetzt erkennen, ob der Nutzer eine neue Option auswählen oder die Unterhaltung beenden möchte.

So testen Sie den Intent yes:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Geben Sie Talk to my test app in das Feld Eingabe ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auf den Vorschlagschip Ja klicken.
  4. Klicken Sie auf eine der Optionen, geben Sie sie ein oder sprechen Sie sie aus.
  5. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter.

5d0690332efe2e29.png

Sie sollten den Prompt „Was wählst du, um dich auf deiner Suche zu unterstützen: einen Drachen, einen Übersetzer oder einen Kompass?“ erhalten.

So testen Sie den Intent no:

  1. Klicken Sie auf eine der Optionen, geben Sie sie ein oder sprechen Sie sie aus.
  2. Geben Sie No in das Eingabefeld ein und drücken Sie Enter.

Sie sollten den Prompt End conversation erhalten: „Es freut mich, dass du mit deiner Wahl zufrieden bist. Viel Glück bei der Suche. Auf Wiedersehen.

4. Unterstützenden Pfad hinzufügen

Sie haben jetzt den Hauptpfad erstellt, den die meisten Nutzer in Ihrer Action durchlaufen. Der Nutzer könnte jedoch auf den Prompt aus der Fortune-Szene „Was wählst du, um dich auf deiner Suche zu unterstützen: einen Drachen, einen Übersetzer oder einen Kompass?“ mit einer Antwort reagieren, die nicht zu den bereitgestellten Optionen gehört.

In diesem Abschnitt konfigurieren Sie Ihre Aktion so, dass sie erkennt, wenn ein Nutzer „magic“, „money“, „horse“ oder „phone“ auswählt, und den Nutzer auffordert, eine der ursprünglichen drei Optionen auszuwählen, wenn er eine dieser Optionen auswählt. Um diese Logik zu konfigurieren, müssen Sie eine neue type erstellen, die diese anderen Optionen enthält, sowie einen neuen Intent, other_option, der abgeglichen wird, wenn ein Nutzer eine dieser Optionen nennt. Außerdem müssen Sie Trainingsformulierungen im Intent other_option annotieren, um Intent-Parameter zu identifizieren und zu extrahieren.

Wenn die NLU-Engine (Natural Language Processing) von Assistant eine Parameterübereinstimmung in der Nutzereingabe erkennt, wird der Wert als typisierter Parameter extrahiert, damit Sie damit in einer Szene Logik ausführen können. In diesem Codelab konfigurieren Sie Ihre Action so, dass die vom Nutzer ausgewählte Hilfe extrahiert und in einem Prompt darauf verwiesen wird.

unavailable_options-Typ erstellen

Sie können jetzt einen unavailable_options-Typ erstellen, der verschiedene Optionen enthält, damit Ihre Action diese Daten in der Eingabe eines Nutzers erkennen kann.

So erstellen Sie den Typ unavailable_options:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie unter Typen auf das + (Pluszeichen).
  3. Geben Sie unavailable_options ein und drücken Sie Enter.
  4. Klicken Sie auf unavailable_options, um die Optionen zu öffnen.
  5. Geben Sie im Abschnitt Einträge hinzufügen die folgenden Einträge und entsprechenden Werte ein:

horse

horse, stallion, steed

magic

magic, enchanted, spells

money

money, cash, gold

phone

phone, cell, apps

Ihre Schlüssel/Wert-Tabelle sollte so aussehen:

c9e119e0f5fb2a47.png

  1. Klicken Sie auf Speichern.

other_option-Intent erstellen

Als Nächstes erstellen Sie einen Intent mit dem Namen other_option und fügen Trainingsformulierungen hinzu, die die Optionen vom Typ unavailable_options enthalten. Dieser Intent wird abgeglichen, wenn der Nutzer eine Option vom Typ unavailable_options auswählt.

So erstellen und konfigurieren Sie den Intent other_option:

  1. Klicken Sie unter Benutzerdefinierte Intents auf das + (Pluszeichen).
  2. Geben Sie other_option ein und drücken Sie Enter.
  3. Klicken Sie auf other_option, um das Fenster zu öffnen.
  4. Fügen Sie die folgenden Trainingsformulierungen hinzu und drücken Sie nach jeder Eingabe die Taste Enter:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. Aktualisieren Sie im Abschnitt Absichtsparameter hinzufügen den Parameternamen zu chosenUnavailableOption.
  2. Klicken Sie auf Speichern.

Wenn Sie die Trainingsformulierungen eingeben, erkennt Actions Builder spells, phone, magic, cash und horse vom Typ unavailable_options und hebt diese Wörter automatisch hervor (annotieren). Actions Builder fügt automatisch einen Intent-Parameter im Abschnitt Intent-Parameter hinzufügen hinzu, wie im folgenden Bild dargestellt.

Mit dem Intent-Parameter können Sie den Namen der Option extrahieren und in einem Prompt verwenden.

df61d4489f0910.png

Absicht other_option zur Szene Fortune hinzufügen

Sie haben jetzt eine Intention, other_option, die eine Option verarbeiten kann, die nicht zu den ursprünglichen Optionen gehört. In diesem Abschnitt fügen Sie der Szene Fortune die Intention other_option hinzu. Mit dem Parameter „intent“ können Sie den Prompt basierend auf der Eingabe des Nutzers anpassen.

So fügen Sie der Szene Fortune den Intent other_option hinzu:

  1. Klicken Sie auf die Szene Fortune (Glück).
  2. Klicken Sie neben User intent handling auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für Intents other_option aus.
  4. Wählen Sie Prompts senden aus und fügen Sie den folgenden Prompt hinzu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

Der Ausdruck $intent.params.chosenUnavailableOption bezieht sich auf das Intent-Parameterobjekt und $intent.params.chosenUnavailableOption.original auf den Wert dieses Objekts. Die original property bezieht sich auf die Rohdaten, die der Nutzer angibt.

  1. Klicken Sie auf Speichern.

4bab1efbe21056aa.png

Wenn ein Nutzer während der Fortune-Szene eine Option auswählt, die im unavailable_options-Typ aufgeführt ist, wird der Intent other_option zugeordnet und der Aufforderungswarteschlange wird eine Aufforderung hinzugefügt. Da kein Übergang angegeben ist, wird die Szenenausführungsschleife fortgesetzt, indem die Bedingungen noch einmal ausgewertet werden. Der chosenOptions-Slot fügt dann seinen Prompt der Prompt-Warteschlange hinzu und die Prompt-Warteschlange wird an den Nutzer gesendet.

Aktion im Simulator testen

Ihre Aktion sollte jetzt angemessen reagieren, wenn ein Nutzer eine der im Typ unavailable_options aufgeführten Optionen auswählt, und angeben, welche Hilfe der Nutzer ausgewählt hat. Ihre Aktion sollte den Nutzer dann auffordern, eine der ursprünglichen Optionen auszuwählen (Drache, Übersetzer oder Kompass).

So testen Sie Ihre Action im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Geben Sie Talk to my test app in das Feld Eingabe ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auf den Vorschlagschip Ja klicken.
  4. Geben Sie magic in das Feld Eingabe ein und drücken Sie Enter.

3a42c33eca435f32.png

Möglicherweise stellen Sie fest, dass der Prompt nicht richtig klingt, wenn der Nutzer „Magie“ auswählt, da der Artikel „ein“ davor steht. Dieses Problem wird in den folgenden Abschnitten behandelt.

unavailable_options-Handler hinzufügen

Damit der Artikel „a“ vor den entsprechenden Optionen vom Typ unavailable_options platziert wird, können Sie in Ihrer Fulfillment-Logik einen Ereignishandler konfigurieren, der prüft, ob vor der vom Nutzer ausgewählten Option ein „a“ erforderlich ist. Zuerst müssen Sie Ihre Aktion so konfigurieren, dass der Handler in der Konsole aufgerufen wird.

So fügen Sie den unavailable_options-Handler hinzu:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie auf die Szene Fortune.
  3. Klicken Sie unter User intent handling (Umgang mit Nutzerabsicht) auf When other_option is matched (Wenn „other_option“ übereinstimmt), um das Fenster zu öffnen.
  4. Entfernen Sie das Häkchen aus dem Kästchen Prompts senden.
  5. Klicken Sie das Kästchen Webhook aufrufen an.
  6. Geben Sie in das Textfeld für den Ereignishandler unavailable_options ein.

52a0fba115f1b377.png

  1. Klicken Sie auf Speichern.

Auftragsausführung aktualisieren und bereitstellen

Nachdem Sie Ihre Aktion so konfiguriert haben, dass der unavailable_options-Ereignishandler aufgerufen wird, können Sie den Handler in Ihrer Auftragsausführung aktualisieren und bereitstellen.

So aktualisieren Sie die Auftragsausführung:

  1. Klicken Sie in der Navigationsleiste auf Webhook.
  2. Fügen Sie den folgenden Code unter dem greeting-Handler hinzu:
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. Fügen Sie den folgenden Code unter const app = conversation(); ein:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Klicken Sie auf Bestellung speichern.
  2. Klicken Sie auf Fulfillment bereitstellen. Wenn die Bereitstellung abgeschlossen ist, wird über dem Editor die Meldung Ihre Cloud Functions-Bereitstellung ist auf dem neuesten Stand. angezeigt.

Code verstehen

Der unavailable_options-Handler führt folgende Schritte aus:

  • Ruft option-Daten aus dem conv-Objekt ab und weist option der original-Property zu, die die Rohdaten der Nutzereingabe enthält.
  • Weist optionKey dem Attribut resolved zu, dem Schlüssel für den Typ unavailable_options.
  • Prüft, ob optionKey eine der Optionen ist, für die ein „a“ erforderlich ist. Wenn dies der Fall ist, wird die Nachricht mit einem zusätzlichen „a“ erstellt.
  • Fügt die Nachricht über conv.add(message) hinzu.

Aktion im Simulator testen

Ihre Aktion sollte den Prompt jetzt anpassen, je nachdem, ob die Auswahl des Nutzers aus dem Typ unavailable_options einen Artikel vor dem Begriff erfordert.

So testen Sie Ihre Action:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Klicken Sie auf das Feld Eingabe oder geben Sie Talk to my test app ein und drücken Sie Enter.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter. Alternativ können Sie auf den Vorschlagschip Ja klicken.
  4. Geben Sie magic in das Feld Eingabe ein und drücken Sie Enter.
  5. Geben Sie horse in das Feld Eingabe ein und drücken Sie Enter.

54ee24c5c3c56e.png

Ihre Aktion sollte den Artikel „a“ vor der Auswahl „horse“ einfügen, während der Prompt für die Auswahl „magic“ ohne den Artikel „a“ erstellt wird.

Projekt bereinigen [empfohlen]

Um mögliche Gebühren zu vermeiden, sollten Sie Projekte entfernen, die Sie nicht verwenden möchten. So löschen Sie die Projekte, die Sie in diesem Codelab erstellt haben:

  1. Führen Sie die Schritte im Abschnitt Projekte beenden (löschen) aus, um das Cloud-Projekt und die Ressourcen zu löschen.
  1. Optional: Wenn Sie Ihr Projekt sofort aus der Actions Console entfernen möchten, lesen Sie den Abschnitt Projekt löschen. Wenn Sie diesen Schritt nicht ausführen, wird Ihr Projekt nach etwa 30 Tagen automatisch entfernt.

5. Glückwunsch!

Sie haben nun die erforderlichen Kenntnisse, um Aktionen für Google Assistant zu erstellen.

Behandelte Themen

  • Konversationale Aktionen mit der Node.js-Auftragsausführungsbibliothek entwickeln
  • Slots verwenden, um Daten vom Nutzer zu erheben
  • Bedingungen verwenden, um der Szene Logik hinzuzufügen
  • Spielschleife hinzufügen
  • Unterstützenden Pfad hinzufügen

Weitere Informationen

In den folgenden Ressourcen finden Sie weitere Informationen zum Erstellen von Actions für Google Assistant:

Folgen Sie @ActionsOnGoogle auf X, um über unsere neuesten Ankündigungen auf dem Laufenden zu bleiben, und twittern Sie mit #AoGDevs, um zu teilen, was Sie entwickelt haben.

Feedback-Umfrage

Bevor Sie gehen, füllen Sie bitte eine kurze Umfrage zu Ihren Erfahrungen aus.