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
Fortune
ein. - Klicken Sie auf Hinzufügen. Dadurch wird eine neue Szene mit dem Namen
Fortune
erstellt. 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_options
ein 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
dragon
ein und drücken SieEnter
. Dadurch wird eindragon
-Schlüssel erstellt. - Geben Sie
hydra
in 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
,translate
compass | 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
Fortune
auf das Pluszeichen (+) für Slot-Filling. - Geben Sie im Feld Slot-Name eingeben
chosenOptions
als Slot-Name ein. - Wählen Sie in der Drop-down-Liste Typ auswählen den Slot-Typ
available_options
aus. - 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 app
ein und drücken SieEnter
. - Geben Sie
Yes
in 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 app
in das Feld Eingabe ein und drücken SieEnter
. - Geben Sie
Yes
in 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
Again
ein 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
Again
und 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
Again
und 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
Again
und 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 app
in das Feld Eingabe ein und drücken SieEnter
. - Geben Sie
Yes
in 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
Fortune
aus. - 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 app
in das Feld Eingabe ein und drücken SieEnter
. - Geben Sie
Yes
in 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
Yes
in 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
No
in 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_options
ein 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_option
ein 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 spells
I really really want to use a phone
magic!
cash
I 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_option
aus. - 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 app
in das Feld Eingabe ein und drücken SieEnter
. - Geben Sie
Yes
in das Feld Eingabe ein und drücken SieEnter
. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Geben Sie
magic
in 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_options
ein.
- 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 weistoption
deroriginal
-Property zu, die die Rohdaten der Nutzereingabe enthält. - Weist
optionKey
dem Attributresolved
zu, dem Schlüssel für den Typunavailable_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:
- Klicken Sie in der Navigationsleiste auf Test.
- Klicken Sie auf das Feld Eingabe oder geben Sie
Talk to my test app
ein und drücken SieEnter
. - Geben Sie
Yes
in das Feld Eingabe ein und drücken SieEnter
. Alternativ können Sie auf den Vorschlagschip Ja klicken. - Geben Sie
magic
in das Feld Eingabe ein und drücken SieEnter
. - Geben Sie
horse
in 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.