1. Übersicht
Mit der Google Assistant-Entwicklerplattform können Sie Software erweitern, um die Funktionalität von Google Assistant, einem virtuellen persönlichen Assistenten, auf mehr als einer Milliarde Geräten zu erweitern, einschließlich intelligenter Lautsprecher, 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 verwenden, um einfach ansprechende und effektive Unterhaltungen zwischen Nutzern und Ihrem eigenen Auftragsausführungsdienst zu erstellen und zu verwalten.
Dieses Codelab umfasst Konzepte der Fortgeschrittenenstufe für die Entwicklung mit Google Assistant und baut auf der im Level 1 erstellten Codelab auf. Es wird dringend empfohlen, dass Sie das Codelab für Stufe 1 abschließen, bevor Sie mit diesem beginnen.
Die Aktion, die du in diesem Codelab entwickelst, zeigt den Nutzern, wie erfolgreich sie sich in einem mythischen Land, Gryffinberg, aufhalten.
Aufgaben
In diesem Codelab erstellen Sie eine anspruchsvolle Konversationsaktion mit den folgenden Funktionen:
- Erfasst Daten des Nutzers und ändert je nach Wert die Eingabeaufforderungen
- Antwortet mit weiteren Fragen, um die Unterhaltung weiter voranzutreiben
- Erstellt eine Spielschleife, damit ein Nutzer noch einmal mit der Aktion interagieren kann, nachdem er ein Vermögen erhalten hat
Bevor du mit dem Erstellen beginnst, kannst du auf deinem Gerät mit integriertem Google Assistant die Live-Aktion nutzen. Sag dazu &Hey Google, sprich mit Schicksal und Vermögen. Der Standardpfad für 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
- Untermauernden Pfad hinzufügen
Voraussetzungen
Für dieses Codelab gelten folgende Voraussetzungen:
- Ein Webbrowser, z. B. Google Chrome
- Abgeschlossenes Codelab-Projekt der Stufe 1 ( Aktionen für Google Assistant mit Level 1 erstellen)
Es wird dringend empfohlen, dass Sie mit JavaScript (ES6) vertraut sind. Es wird aber nicht empfohlen, den Code für die Auftragsausführung in diesem Codelab zu verstehen.
2. Dialogschnittstelle erstellen
Im ersten Codelab hast du eine einfache Konversationsaktion mit der folgenden Szene erstellt: Start
.
In diesem Codelab verlängern Sie Ihre Unterhaltung. In den folgenden Abschnitten konfigurieren Sie die Aktion so:
- Wechsel zu einer neuen
Fortune
-Szene, wenn der Nutzer sein Vermögen hören möchte - Frage den Nutzer, welches Hilfsmittel er sich für seine Reise besser entscheiden möchte
- Personalisiertes Vermögen basierend auf der Auswahl des Nutzers anbieten
Fortune
-Szene erstellen
In diesem Abschnitt erstellen Sie die Szene Fortune
und definieren, wie der Nutzer dorthin während der Unterhaltung wechselt.
So erstellen Sie eine neue Szene mit dem Namen Fortune
:
- Öffnen Sie Ihr Codelab-Projekt der Ebene 1.
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie unter Szenen auf Start.
- Klicken Sie auf den Intent yes, um die Optionen zu öffnen. Wenn ja, wählen Sie das Kästchen If yes is match aus.
- Entfernen Sie die Aufforderung Aufforderungen senden, um die Aufforderung zu entfernen.
- Klicken Sie im Abschnitt Ü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 fügt sie einen Übergang von der SzeneStart
zurFortune
-Szene hinzu, wenn der Nutzer sein Vermögen hören möchte.
Dialoglogik für Fortune
-Szene definieren
In diesem Codelab konfigurierst du deine Fortune
-Szene, um den Nutzer zu fragen: Was möchtest du dir bei deiner Aufgabenreihe, einem Drachen, einem Übersetzer oder einem Kompass helfen? Mit der Funktion Slot-Füllung können Sie die vom Nutzer benötigten Informationen abrufen, bevor Sie fortfahren.
Deine Aktion bietet Vermögen für drei Hilfsmittel: einen Drachen, einen Übersetzer und einen Kompass. Um diese Aktion zu konfigurieren, um diese drei Optionen in einer Nutzereingabe zu identifizieren, müssen Sie einen neuen Typ erstellen.
Mithilfe von Typen innerhalb der Füllung einer Szene können Sie festlegen, welche Informationen der Nutzer erhalten soll. Wenn die NLU-Engine in der Nutzereingabe eine Slot-Übereinstimmung erkennt, extrahiert sie die Anzeigenfläche als typisierten Parameter, sodass Sie sie in einer Szene mit Logik ausführen können.
Typ available_options
erstellen
In diesem Abschnitt erstellen Sie einen neuen Typ mit dem Namen available_options
. Damit geben Sie die drei Optionen an, die die Nutzer als Antwort auf die Aufforderung auswählen können (Wagen, Übersetzer und Kompass). Sie definieren auch einige Synonyme für diese Optionen, falls ein Nutzer etwas Ähnliches sagt. In einem späteren Abschnitt fügen Sie den Typ available_options
zu einer Anzeigenfläche hinzu, um anzugeben, dass Sie die Auswahl des Nutzers erhalten möchten.
So erstellst du den available_options
-Typ:
- Klicken Sie in der Navigationsleiste auf Typen.
- Klicken Sie auf + (Pluszeichen), geben Sie
available_options
ein und drücken SieEnter
. - Klicken Sie auf
available_options
, um die Optionen zu öffnen.
Typen werden als Schlüssel/Wert-Paare konfiguriert, wobei Schlüssel der Name des Typs und Werte ein Synonym 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 AddAdd (Einträge hinzufügen).
- Geben Sie in das Feld Neuer Eintrag
dragon
ein und drücken SieEnter
. Durch diese Aktion wird eindragon
-Schlüssel erstellt. - Geben Sie
hydra
in das Feld Werte hinzufügen ein und drücken SieEnter
, um ihn als Wert (Synonym) hinzuzufügen. Wiederholen Sie dann diesen Schritt 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.
Deine Aktion hat verstanden, dass die available_options
Drachen, Übersetzer und Kompass sind, und kann auch einige entsprechende Synonyme erkennen.
Slot-Füllung konfigurieren
Als Nächstes musst du die Slot-Füllung für die Szene „Fortune
“ konfigurieren. So konfigurieren Sie die Logik für die Slot-Füllung:
- Klicken Sie in der Navigationsleiste unter Szenen auf Fortune.
- Klicken Sie in der
Fortune
-Szene auf das + (Pluszeichen) für die Slot-Füllung. - Fügen Sie im Feld Name der Anzeigenfläche eingeben
chosenOptions
als Namen der Anzeigenfläche hinzu. - Wählen Sie in der Drop-down-Liste Typ auswählen den Typ
available_options
als Slottyp aus. - Klicken Sie das Kästchen Dieser Slot ist erforderlich an.
- Wählen Sie Aufforderungen senden aus und fügen Sie die folgenden Nachrichten und Chips 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 jetzt den Typ available_options
zur Anzeigenfläche hinzugefügt. Damit werden die Informationen erfasst, die Sie vom Nutzer selbst eingeben müssen, bevor er fortfährt. Sie haben auch eine Aufforderung innerhalb der Anzeigenfläche konfiguriert, die der Aufforderungswarteschlange hinzugefügt wird, wenn der Nutzer die Slot-Ausführungsphase der Szene erreicht.
Hinweis: Wenn Sie die Anzeigenfläche chosenOptions
nennen, wird das Feld Schreibzugriff auf den Slotwert anpassen mit diesem Namen ($session.params.chosenOptions
) aktualisiert. Sie können auf diesen Parameter in Actions Builder und in der Auftragsausführung über die Clientbibliothek zugreifen.
Bedingung scene.slots.status == "FINAL"
konfigurieren
Wenn Sie eine Anzeigenfläche hinzufügen, wird die Bedingung scene.slots.status == "FINAL"
automatisch der Bedingungsliste hinzugefügt.
Die Bedingung scene.slots.status == "FINAL"
prüft, ob die Slot-Füllung abgeschlossen ist. Wenn alle Anzeigenflächen gefüllt sind, kann die Bedingung einen Webhook auslösen, zu einer neuen Szene wechseln oder Aufforderungen in die Eingabeaufforderung aufnehmen.
In diesem Abschnitt konfigurieren Sie scene.slots.status == "FINAL"
, um der Aufforderungswarteschlange eine Aufforderung hinzuzufügen, sobald die Slots gefüllt sind.
So fügen Sie diese Aufforderung in die Bedingung FINAL
ein:
- Klicken Sie auf
scene.slots.status == "FINAL"
, um das Optionsfenster zu öffnen. - Wählen Sie Aufforderungen senden aus und fügen Sie die folgende Aufforderung hinzu:
candidates:
- first_simple:
variants:
- speech: You picked $session.params.chosenOptions.
- Klicken Sie auf Speichern.
Führen Sie Ihre Aktionen im Simulator aus.
Sie haben bereits definiert, welche Optionen der Nutzer für die Anzeigenfläche ausführen soll. Nachdem du diese Informationen vom Nutzer erhalten hast, sollte deine Aktion eine Aufforderung mit einem Verweis auf die jeweilige Option anzeigen.
So testest du deine Aktion:
- Klicken Sie in der Navigationsleiste auf Testen.
- Klicken oder 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 auch den Chip Ja auswählen.
- Klicken, eingeben oder
dragon
sagen. Sie sollten die Aufforderung "You pickdraon." erhalten.
Im nächsten Abschnitt passen Sie die Aufforderungen für jedes Hilfsmittel an, das der Nutzer auswählen kann.
Aufforderungen mithilfe von Bedingungen anpassen
In diesem Abschnitt fügen Sie Bedingungen für jede Option hinzu, die der Nutzer auswählen kann, und fügen eine benutzerdefinierte Aufforderung für jede Bedingung hinzu.
Das Vermögen der dragon
anpassen
Gehen Sie so vor, um die Bedingung zu aktualisieren und die Aufforderung anzupassen, wenn ein Nutzer auf „Ziehen“ klickt:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie in der Navigationsleiste auf die Fortune-Szene.
- Klicken Sie auf
scene.slots.status == "FINAL"
, um das Optionsfenster zu öffnen. - Aktualisieren Sie die Bedingungsanweisung in:
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
- Wählen Sie Aufforderungen senden aus.
- Aktualisieren Sie die Aufforderung im Codeeditor mit dem folgenden Hinweis:
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 "dragon" oder etwas Ähnliches sagt, wird aufgrund deiner Auswahl ein Vermögen bereitgestellt. Anschließend fügen Sie die restlichen beiden Optionen hinzu.
Das Vermögen der translator
anpassen
So fügen Sie die Bedingung hinzu und passen die Aufforderung an, wenn ein Nutzer „Übersetzung“ auswählt:
- Klicke auf das + (Pluszeichen) neben Bedingung.
- Fügen Sie dem Feld else if
scene.slots.status == "FINAL" && session.params.chosenOptions == "translator"
hinzu. - Wählen Sie Aufforderungen senden aus.
- Fügen Sie im Code-Editor die folgende Aufforderung 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.
Das Vermögen der compass
anpassen
So fügen Sie die Bedingung hinzu und passen die Aufforderung an, wenn ein Nutzer „Kompass“ auswählt:
- Klicke auf das + (Pluszeichen) neben Bedingung.
- Fügen Sie
scene.slots.status == "FINAL" && session.params.chosenOptions == "compass"
in das Textfeld else if ein. - Wählen Sie Aufforderungen senden aus.
- Fügen Sie im Code-Editor die folgende Aufforderung 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.
Führen Sie Ihre Aktionen im Simulator aus.
Ihre Aktion sollte je nach ausgewählter Option ein maßgeschneidertes Vermögen für den Nutzer bieten.
So testest du deine Aktion:
- Klicken Sie in der Navigationsleiste auf Testen.
- 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 auch auf den Chip Ja klicken. - Klicken, eingeben oder
Translator
sagen.
Für die Option „Übersetzer“ sollten Sie die richtige Verfassung auswählen.
3. Spielschleife hinzufügen
In diesem Abschnitt konfigurieren Sie die Aktion so, dass der Nutzer nach der Auswahl eine andere Option auswählen und ein anderes Glück hören kann. Diese Änderung ähnelt der Nachricht "Do you want to play CDNquo am Ende eines Spiels. Zum Erstellen dieser Schleife können Sie die zuvor erstellten yes
- und no
-Intents wiederverwenden und einer neuen Szene mit dem Namen Again
hinzufügen.
Again
-Szene erstellen
In diesem Abschnitt erstellen Sie eine neue Again
-Szene und fügen eine Aufforderung hinzu, in der der Nutzer gefragt wird, ob er eine andere Option auswählen möchte.
So erstellst du die Again
-Szene:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf das Pluszeichen (+) unter Szenen.
- Geben Sie
Again
ein und drücken SieEnter
. - Klicken Sie in der Navigationsleiste auf die Szene
Again
. - Klicke auf das + (Pluszeichen) neben bei der Eingabe.
- Wählen Sie Aufforderungen senden aus und fügen Sie die folgenden Aufforderungen und 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 „Fortune
“ zu „Again
“ hinzufügen
Nachdem der Nutzer sein Vermögen erhalten hat, muss die Unterhaltung in die neue Again
-Szene übergehen.
So fügen Sie einen Übergang von der Szene Fortune
zur Szene Again
hinzu:
- Klicken Sie auf die Fortune-Szene.
- Klicken Sie auf die erste Bedingung (
scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
), um das Optionsfenster zu öffnen. - Scrollen Sie unter Übergang
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
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
Again
und wählen Sie die Option aus. - Klicken Sie auf Speichern.
Führen Sie Ihre Aktionen im Simulator aus.
Jetzt sollte deine Aktion dem Nutzer folgende Aufforderung anzeigen, nachdem er sein Vermögen erhalten hat: "Das ist das, was ich für dich sehe. Möchten Sie eine andere Option auswählen und in einer anderen Zukunft stöbern?
So testest du deine Aktion:
- Klicken Sie in der Navigationsleiste auf Testen.
- 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 auch auf den Chip Ja klicken. - Klicken, eingeben oder
dragon
sagen.
Sie sollten für die Drachenoption und die Aufforderung Again
aufgefordert werden.
Intents hinzufügen und zu Again
Szene wechseln
In diesem Abschnitt fügen Sie der Again
-Szene yes
- und no
-Intents hinzu, damit Ihre Aktion weiß, ob der Nutzer eine neue Option auswählen möchte oder nicht. Fügen Sie außerdem die entsprechenden Übergänge für die Intents yes
und no
hinzu. Der Intent yes
wechselt in die Fortune
-Szene, während der Intent no
in die Systemszene End conversation
übergeht.
So fügen Sie Intents und Übergänge zur Again
-Szene hinzu:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf die Szene
Again
. - Klicken Sie auf das + (Pluszeichen) neben Verarbeitung von Intents.
- Wählen Sie im Drop-down-Menü für den Intent die Option Ja aus.
- Wählen Sie im Drop-down-Menü Übergang
Fortune
aus. - Klicken Sie auf Speichern.
- Klicken Sie auf das + (Pluszeichen) neben Verarbeitung von Intents.
- Wählen Sie im Drop-down-Menü für den Intent Nein aus.
- Wählen Sie im Drop-down-Menü Übergang die Option Unterhaltung beenden aus.
- Wählen Sie Aufforderungen senden aus und fügen Sie im Code-Editor die folgende Aufforderung hinzu:
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.
Führen Sie Ihre Aktionen im Simulator aus.
Deine Aktion sollte jetzt verstehen, ob der Nutzer eine neue Option auswählen oder die Unterhaltung beenden möchte.
So testest du den Intent yes
:
- Klicken Sie in der Navigationsleiste auf Testen.
- 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 auch auf den Chip Ja klicken. - Klicken, klicken oder sagen Sie eine der Optionen.
- Geben Sie
Yes
in das Feld Eingabe ein und drücken SieEnter
.
Sie sollten eine Aufforderung erhalten, "Was wünschen Sie sich bei Ihrer Aufgabenreihe, einem Drachen, einem Übersetzer oder einem Kompass?
So testest du den Intent no
:
- Klicken, klicken oder sagen Sie eine der Optionen.
- Geben Sie
No
in das Eingabefeld ein und drücken SieEnter
.
Du solltest die Aufforderung für End conversation
erhalten: "Es freut mich, dass du mit deiner Auswahl zufrieden bist. Viel Glück bei Ihrer Mission. Abschied.
4. Unterstützenden Pfad hinzufügen
Du hast nun den Hauptpfad erstellt, den die meisten Nutzer in deiner Aktion gehen. Der Nutzer könnte aber auf die Aufforderung aus der Szene „Fortune
“ reagieren. Wie entscheiden Sie sich für Ihre Mission, einen Drachen, einen Übersetzer oder einen Kompass? Eine Antwort, die nicht zu den bereitgestellten Optionen gehört.
In diesem Abschnitt konfigurieren Sie Ihre Aktion, um zu verstehen, wann ein Nutzer „Magisch“ & „Magisch“, „Geld“ und „Smartphone“ auswählt. Außerdem wird dem Nutzer mitgeteilt, dass er eine von drei ursprünglichen Optionen wählen kann, wenn er eine dieser Optionen auswählt. Zum Konfigurieren dieser Logik müssen Sie eine neue type
erstellen, die diese anderen Optionen enthält, und einen neuen Intent (other_option
), der zugeordnet wird, wenn ein Nutzer eine dieser Optionen sagt. Außerdem musst du Trainingssätze innerhalb des other_option
Intents annotieren, um die Intent-Parameter zu identifizieren und zu extrahieren.
Wenn die Engine für die Sprachverarbeitung (NLU) von Assistant eine Parameterübereinstimmung in der Nutzereingabe erkennt, wird der Wert als typisierter Parameter extrahiert, damit du in einer Szene damit Logik ausführen kannst. In diesem Codelab konfigurieren Sie Ihre Aktion so, dass die vom Nutzer ausgewählte Hilfe extrahiert und in einer Aufforderung auf diese Auswahl verwiesen wird.
Typ unavailable_options
erstellen
Du kannst jetzt einen unavailable_options
-Typ erstellen, der verschiedene Optionen enthält, damit deine Aktion diese Daten in einer Nutzereingabe identifizieren kann.
So erstellst du den unavailable_options
-Typ:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf das Pluszeichen (+) unter Typen.
- Geben Sie
unavailable_options
ein und drücken SieEnter
. - Klicken Sie auf
unavailable_options
, um die Optionen zu öffnen. - Geben Sie im Abschnitt AddAdd (Einträge hinzufügen) die folgenden Einträge und die entsprechenden Werte ein:
|
|
|
|
|
|
|
|
Die Schlüssel/Wert-Paartabelle sollte folgendermaßen 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 des Typs unavailable_options
enthalten. Dieser Intent wird zugeordnet, wenn der Nutzer eine Auswahl im Typ unavailable_options
auswählt.
So erstellen und konfigurieren Sie den Intent other_option
:
- Klicken Sie auf das Pluszeichen (+) unter Benutzerdefinierte Intents.
- Geben Sie
other_option
ein und drücken SieEnter
. - Klicken Sie auf
other_option
, um das Fenster zu öffnen. - Fügen Sie die folgenden Trainingssätze hinzu und drücken Sie jeweils
Enter
:
I want to use spells
I really really want to use a phone
magic!
cash
I want to ride a horse
- Ändern Sie im Bereich Intent-Parameter hinzufügen den Parameternamen in
chosenUnavailableOption
. - Klicken Sie auf Speichern.
Während Sie die Trainingsformulierungen eingeben, erkennt Actions Builder spells
, phone
, magic
, cash
und horse
vom Typ unavailable_options
und markiert diese Wörter automatisch (mit Anmerkungen). Actions Builder fügt im Abschnitt Intent-Parameter hinzufügen automatisch einen Intent-Parameter hinzu, wie in der folgenden Abbildung dargestellt.
Mit dem Intent-Parameter können Sie den Namen der Option extrahieren und sie in einer Aufforderung verwenden.
other_option
Intent zu Fortune
Szene hinzufügen
Sie haben jetzt einen Intent (other_option
), der einen Nutzer verarbeiten kann, der eine Option angibt, die nicht zu den ursprünglichen Optionen gehört. In diesem Abschnitt fügen Sie der Fortune
-Szene den Intent other_option
hinzu. Mit dem Intent-Parameter können Sie die Aufforderung je nach Nutzereingabe anpassen.
So fügen Sie den other_option
-Intent der Fortune
-Szene hinzu:
- Klicken Sie auf die Fortune-Szene.
- Klicken Sie auf das + (Pluszeichen) neben Verarbeitung von Intents.
- Wählen Sie im Drop-down-Menü „Intent“
other_option
aus. - Wählen Sie Aufforderungen senden aus und fügen Sie die folgende Aufforderung 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. original property
bezieht sich auf die Roheingabe, die der Nutzer angibt.
- Klicken Sie auf Speichern.
Wenn ein Nutzer während des Fortune
-Szenes eine Option angibt, die im Typ unavailable_options
aufgeführt ist, wird der Intent other_option
zugeordnet und der Aufforderung in der Warteschlange eine Aufforderung hinzugefügt. Da kein Übergang angegeben ist, wird die Bedingungsausführungsschleife fortgesetzt, um die Bedingungsphase neu zu bewerten. Die Anfrage chosenOptions
wird dann der Aufforderung in die Warteschlange gestellt und diese wird dem Nutzer angezeigt.
Führen Sie Ihre Aktionen im Simulator aus.
Deine Aktion sollte jetzt entsprechend reagieren, wenn ein Nutzer eine der im Typ unavailable_options
aufgeführten Optionen auswählt und angeben, welche Hilfe der Nutzer ausgewählt hat. Der Nutzer sollte dann aufgefordert werden, eine der ursprünglichen Optionen auszuwählen, z. B. einen Drachen, einen Übersetzer oder einen Kompass.
So testen Sie Ihre Aktion im Simulator:
- Klicken Sie in der Navigationsleiste auf Testen.
- 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 auch auf den Chip Ja klicken. - Geben Sie
magic
in das Feld Eingabe ein und drücken SieEnter
.
Möglicherweise stellen Sie fest, dass die Aufforderung aufgrund des ausgewähltes Artikels nicht richtig klingt. Sie beheben dieses Problem in den folgenden Abschnitten.
unavailable_options
-Handler hinzufügen
Um den Artikel vor den entsprechenden Auswahlmöglichkeiten des Typs unavailable_options
zu platzieren, können Sie einen Ereignis-Handler in der Auftragsausführungslogik konfigurieren, um zu prüfen, ob die vom Nutzer ausgewählte Option vor dem Parameter „&“ erforderlich ist. Zuerst müssen Sie Ihre Aktion so konfigurieren, dass der Handler in der Konsole aufgerufen wird.
So fügst du den unavailable_options
-Handler hinzu:
- Klicken Sie in der Navigationsleiste auf Entwickeln.
- Klicken Sie auf die Szene
Fortune
. - Klicken Sie unter Verarbeitung von Nutzerabsichten auf Wenn andere_Optionen zugeordnet sind, um das Fenster zu öffnen.
- Entfernen Sie das Häkchen im Kästchen Aufforderungen senden.
- Klicken Sie das Kästchen Webhook aufrufen an.
- Geben Sie in das Textfeld für den Ereignis-Handler
unavailable_options
ein.
- Klicken Sie auf Speichern.
Auftragsausführung aktualisieren und bereitstellen
Nachdem Sie die Aktion konfiguriert haben, um den Ereignis-Handler unavailable_options
aufzurufen, können Sie den Handler in Ihrer Auftragsausführung aktualisieren und bereitstellen.
Gehen Sie so vor, um die Auftragsausführung zu aktualisieren:
- Klicken Sie in der Navigationsleiste auf Webhook.
- Füge unter dem Handler
greeting
den folgenden Code 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 unter
const app = conversation();
den folgenden Code hinzu:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
- Klicken Sie auf Auftragsausführung speichern.
- Klicken Sie auf Fulfillment Fulfillment (Auftragsausführung 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 Folgendes aus:
- Ruft
option
-Daten vomconv
-Objekt ab und weistoption
der Propertyoriginal
zu. Diese ist die Roheingabe vom Nutzer. - Weist der Property
resolved
optionKey
zu, die dem Schlüssel für den Typunavailable_options
entspricht - Prüft, ob
optionKey
eine der Optionen ist, die „&“ erfordert, erstellt die Nachricht mit einem hinzugefügten & - Die Nachricht wird über
conv.add(message)
hinzugefügt
Führen Sie Ihre Aktionen im Simulator aus.
Ihre Aktion sollte jetzt entsprechend der Aufforderung anpassen, die dem Nutzer vom unavailable_options
-Typ angezeigt wird.
So testest du deine Aktion:
- Klicken Sie in der Navigationsleiste auf Testen.
- Klicken oder 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 auch auf den Chip 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 vor dem Auswahlfeld für „Pferde“ einen Artikel hinzufügen, während die Aufforderung ohne diesen Befehl erstellt wird.
Projekt bereinigen [empfohlen]
Es wird empfohlen, Projekte zu entfernen, die Sie nicht verwenden möchten. So vermeiden Sie mögliche Kosten. 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: Informationen zum sofortigen Entfernen Ihres Projekts aus der Actions Console finden Sie unter Projekt löschen. Wenn Sie diesen Schritt nicht ausführen, wird Ihr Projekt nach etwa 30 Tagen automatisch entfernt.
5. Glückwunsch!
Du hast nun die Fortgeschrittenenkenntnisse zu Actions for Google Assistant erworben.
Themen
- Conversational Actions mit der Node.js-Ausführungsbibliothek entwickeln
- Slots verwenden, um Daten zu erheben
- Bedingungen verwenden, um Logik zur Szene hinzuzufügen
- Spielschleife hinzufügen
- Untermauernden Pfad hinzufügen
Weitere Informationen
Weitere Informationen zum Erstellen von Aktionen für Google Assistant finden Sie in den folgenden Ressourcen:
- Dokumentation zum Entwickeln von Actions for Google Assistant
- Aktionen auf Google GitHub-Seite für Beispielcode und Bibliotheken
- Die offizielle Reddit-Community für Entwickler, die mit Google Assistant arbeiten
- Best Practices und Richtlinien für Konversationsaktionen
Folgen Sie @ActionsOnGoogle auf Twitter, um über die neuesten Ankündigungen auf dem Laufenden zu bleiben, und twittern Sie an #AoGDevs, um uns mitzuteilen, was Sie erstellt haben!
Feedback-Umfrage
Wir würden uns freuen, wenn Sie an einer kurzen Umfrage teilnehmen.