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:


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:
- Ein Webbrowser, z. B. Google Chrome
- Ein abgeschlossenes Codelab-Projekt für Aktionen der Stufe 1 ( Aktionen für Google Assistant mit Actions Builder entwickeln – Stufe 1)
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:
- Öffnen Sie Ihr Actions-Projekt für Codelab 1.
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie unter Szenen auf die Szene Starten.
- Klicken Sie auf den Intent yes (das Feld When yes is matched), um die Optionen zu öffnen.
- Entfernen Sie das Häkchen bei Prompts senden, um den Prompt zu entfernen.
- Klicken Sie im Bereich Übergang auf das Drop-down-Menü, klicken Sie in das Textfeld und geben Sie
Fortuneein. - Klicken Sie auf Hinzufügen. Dadurch wird eine neue Szene mit dem Namen
Fortuneerstellt. Außerdem wird ein Übergang von derStart-Szene zurFortune-Szene hinzugefügt, wenn der Nutzer sein Horoskop hören möchte.

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:
- Klicken Sie in der Navigationsleiste auf Types (Typen).
- Klicken Sie auf das + (Pluszeichen), geben Sie
available_optionsein und drücken Sie dieEnter-Taste. - 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:
- Scrollen Sie zum Abschnitt Einträge hinzufügen.
- Geben Sie im Feld Neuer Eintrag
dragonein und drücken SieEnter. Dadurch wird eindragon-Schlüssel erstellt. - Geben Sie
hydrain das Feld Werte hinzufügen ein und drücken Sie dieEnter-Taste, um den Wert (Synonym) hinzuzufügen. Wiederholen Sie diesen Schritt dann für den Wertlizard. - Fügen Sie die restlichen Schlüssel und die entsprechenden Werte hinzu:
translator | translator,communicator,machine,decoder,translatecompass | compass,direction,guide

- 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:
- Klicken Sie in der Navigationsleiste unter Szenen auf Glück.
- Klicken Sie in der Szene
Fortuneauf das Pluszeichen (+) für Slot-Filling. - Geben Sie im Feld Slot-Name eingeben
chosenOptionsals Slot-Name ein. - Wählen Sie in der Drop-down-Liste Typ auswählen den Slot-Typ
available_optionsaus. - Klicken Sie das Kästchen Dieser Slot ist erforderlich an.

- 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'
- 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:
- Klicken Sie auf
scene.slots.status == "FINAL", um das Optionsfenster zu öffnen. - Wählen Sie Prompts senden aus und fügen Sie den folgenden Prompt hinzu:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- 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:
- Klicken Sie in der Navigationsleiste auf Test.
- Klicken Sie auf das Feld Eingabe oder geben Sie
Talk to my test appein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auch auf den Vorschlagschip Ja klicken.

- 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:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie in der Navigationsleiste auf die Szene Fortune.
- Klicken Sie auf
scene.slots.status == "FINAL", um das Optionsfenster zu öffnen. - Aktualisieren Sie die Bedingung auf:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon" - Wählen Sie Prompts senden aus.
- 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.
- Klicken Sie auf Speichern.

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:
- Klicken Sie neben Bedingung auf das Pluszeichen (+).
- Fügen Sie
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"dem Feld else if hinzu. - Wählen Sie Prompts senden aus.
- 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.
- Klicken Sie auf Speichern.

compass-Glückskeks anpassen
So fügen Sie die Bedingung hinzu und passen den Prompt an, wenn ein Nutzer „Kompass“ auswählt:
- Klicken Sie neben Bedingung auf das + (Pluszeichen).
- Fügen Sie
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"in das Textfeld else if ein. - Wählen Sie Prompts senden aus.
- 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.
- 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:
- Klicken Sie in der Navigationsleiste auf Test.
- Geben Sie
Talk to my test appin das Feld Eingabe ein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Klicken, tippen oder sagen Sie
Translator.

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:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie unter Szenen auf das Pluszeichen (+).
- Geben Sie
Againein und drücken SieEnter. - Klicken Sie in der Navigationsleiste auf die Szene
Again. - Klicken Sie neben Beim Aufrufen auf das + (Pluszeichen).
- 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'
- 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:
- Klicken Sie auf die Szene Fortune (Glück).
- Klicken Sie auf die erste Bedingung (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"), um das Optionsfenster zu öffnen. - Scrollen Sie unter Übergang zu
Againund wählen Sie die Option aus. - Klicken Sie auf Speichern.
- Klicken Sie auf die zweite Bedingung, um das Optionsfenster zu öffnen.
- Scrollen Sie unter Übergang zu
Againund wählen Sie die Option aus. - Klicken Sie auf Speichern.
- Klicken Sie auf die dritte Bedingung, um das Optionsfenster zu öffnen.
- Scrollen Sie unter Übergang zu
Againund wählen Sie die Option aus. - 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:
- Klicken Sie in der Navigationsleiste auf Test.
- Geben Sie
Talk to my test appin das Feld Eingabe ein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Klicken, tippen oder sagen Sie
dragon.

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:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf die Szene
Again. - Klicken Sie neben User intent handling auf das + (Pluszeichen).
- Wählen Sie im Drop-down-Menü für die Intention Ja aus.
- Wählen Sie im Drop-down-Menü Übergang die Option
Fortuneaus. - Klicken Sie auf Speichern.

- Klicken Sie neben User intent handling auf das + (Pluszeichen).
- Wählen Sie im Drop-down-Menü für die Intention Nein aus.
- Wählen Sie im Drop-down-Menü Übergang die Option Unterhaltung beenden aus.
- 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.
- 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:
- Klicken Sie in der Navigationsleiste auf Test.
- Geben Sie
Talk to my test appin das Feld Eingabe ein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Klicken Sie auf eine der Optionen, geben Sie sie ein oder sprechen Sie sie aus.
- Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter.

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:
- Klicken Sie auf eine der Optionen, geben Sie sie ein oder sprechen Sie sie aus.
- Geben Sie
Noin das Eingabefeld ein und drücken SieEnter.
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:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie unter Typen auf das + (Pluszeichen).
- Geben Sie
unavailable_optionsein und drücken SieEnter. - Klicken Sie auf
unavailable_options, um die Optionen zu öffnen. - Geben Sie im Abschnitt Einträge hinzufügen die folgenden Einträge und entsprechenden Werte ein:
|
|
|
|
|
|
|
|
Ihre Schlüssel/Wert-Tabelle sollte so aussehen:

- 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:
- Klicken Sie unter Benutzerdefinierte Intents auf das + (Pluszeichen).
- Geben Sie
other_optionein und drücken SieEnter. - Klicken Sie auf
other_option, um das Fenster zu öffnen. - Fügen Sie die folgenden Trainingsformulierungen hinzu und drücken Sie nach jeder Eingabe die Taste
Enter:
I want to use spellsI really really want to use a phonemagic!cashI want to ride a horse
- Aktualisieren Sie im Abschnitt Absichtsparameter hinzufügen den Parameternamen zu
chosenUnavailableOption. - 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.

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:
- Klicken Sie auf die Szene Fortune (Glück).
- Klicken Sie neben User intent handling auf das + (Pluszeichen).
- Wählen Sie im Drop-down-Menü für Intents
other_optionaus. - 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.
- Klicken Sie auf Speichern.

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:
- Klicken Sie in der Navigationsleiste auf Test.
- Geben Sie
Talk to my test appin das Feld Eingabe ein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Geben Sie
magicin das Feld Eingabe ein und drücken SieEnter.

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:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf die Szene
Fortune. - Klicken Sie unter User intent handling (Umgang mit Nutzerabsicht) auf When other_option is matched (Wenn „other_option“ übereinstimmt), um das Fenster zu öffnen.
- Entfernen Sie das Häkchen aus dem Kästchen Prompts senden.
- Klicken Sie das Kästchen Webhook aufrufen an.
- Geben Sie in das Textfeld für den Ereignishandler
unavailable_optionsein.

- 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:
- Klicken Sie in der Navigationsleiste auf Webhook.
- 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);
});
- Fügen Sie den folgenden Code unter
const app = conversation();ein:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Klicken Sie auf Bestellung speichern.
- 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 demconv-Objekt ab und weistoptionderoriginal-Property zu, die die Rohdaten der Nutzereingabe enthält. - Weist
optionKeydem Attributresolvedzu, dem Schlüssel für den Typunavailable_options. - Prüft, ob
optionKeyeine 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:
- Klicken Sie in der Navigationsleiste auf Test.
- Klicken Sie auf das Feld Eingabe oder geben Sie
Talk to my test appein und drücken SieEnter. - Geben Sie
Yesin das Feld Eingabe ein und drücken SieEnter. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Geben Sie
magicin das Feld Eingabe ein und drücken SieEnter. - Geben Sie
horsein das Feld Eingabe ein und drücken SieEnter.

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:
- Führen Sie die Schritte im Abschnitt Projekte beenden (löschen) aus, um das Cloud-Projekt und die Ressourcen zu löschen.
- 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:
- Dokumentation für die Entwicklung von Actions für Google Assistant
- Actions on Google-GitHub-Seite mit Beispielcode und Bibliotheken
- Die offizielle Reddit-Community für Entwickler, die mit Google Assistant arbeiten
- Richtlinien für das Konversationsdesign mit Best Practices und Richtlinien für Conversational Actions
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.