Actions for Google Assistant mithilfe von Actions Builder erstellen (Stufe 2)

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:

dd6f5c61296b8b50.png

eba043f546aa8c51

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:

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:

  1. Öffnen Sie Ihr Codelab-Projekt der Ebene 1.
  2. Klicken Sie in der Navigationsleiste auf Entwickeln.
  3. Klicken Sie unter Szenen auf Start.
  4. Klicken Sie auf den Intent yes, um die Optionen zu öffnen. Wenn ja, wählen Sie das Kästchen If yes is match aus.
  5. Entfernen Sie die Aufforderung Aufforderungen senden, um die Aufforderung zu entfernen.
  6. Klicken Sie im Abschnitt Ü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 fügt sie einen Übergang von der Szene Start zur Fortune-Szene hinzu, wenn der Nutzer sein Vermögen hören möchte.

56682a0c7459b98c

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:

  1. Klicken Sie in der Navigationsleiste auf Typen.
  2. Klicken Sie auf + (Pluszeichen), geben Sie available_options ein und drücken Sie Enter.
  3. 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:

  1. Scrollen Sie zum Abschnitt AddAdd (Einträge hinzufügen).
  2. Geben Sie in das Feld Neuer Eintrag dragon ein und drücken Sie Enter. Durch diese Aktion wird ein dragon-Schlüssel erstellt.
  3. Geben Sie hydra in das Feld Werte hinzufügen ein und drücken Sie Enter, um ihn als Wert (Synonym) hinzuzufügen. Wiederholen Sie dann diesen Schritt 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.

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:

  1. Klicken Sie in der Navigationsleiste unter Szenen auf Fortune.
  2. Klicken Sie in der Fortune-Szene auf das + (Pluszeichen) für die Slot-Füllung.
  3. Fügen Sie im Feld Name der Anzeigenfläche eingeben chosenOptions als Namen der Anzeigenfläche hinzu.
  4. Wählen Sie in der Drop-down-Liste Typ auswählen den Typ available_options als Slottyp aus.
  5. Klicken Sie das Kästchen Dieser Slot ist erforderlich an.

a461b906476e244.png

  1. 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'
  1. 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:

  1. Klicken Sie auf scene.slots.status == "FINAL", um das Optionsfenster zu öffnen.
  2. Wählen Sie Aufforderungen senden aus und fügen Sie die folgende Aufforderung hinzu:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. 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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  2. Klicken oder 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 auch den Chip Ja auswählen.

a899d45c542668f6

  1. 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:

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

d31767232ad908bd.png

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:

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

c1af65e70dbf3dfe

Das Vermögen der compass anpassen

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

  1. Klicke auf das + (Pluszeichen) neben Bedingung.
  2. Fügen Sie scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" in das Textfeld else if ein.
  3. Wählen Sie Aufforderungen senden aus.
  4. 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.
  1. 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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  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 auch auf den Chip Ja klicken.
  4. Klicken, eingeben oder Translator sagen.

29e17f950bd0dd71

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:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie auf das Pluszeichen (+) unter Szenen.
  3. Geben Sie Again ein und drücken Sie Enter.
  4. Klicken Sie in der Navigationsleiste auf die Szene Again.
  5. Klicke auf das + (Pluszeichen) neben bei der Eingabe.
  6. 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'
  1. 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:

  1. Klicken Sie auf die Fortune-Szene.
  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 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 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 Again und wählen Sie die Option aus.
  10. 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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  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 auch auf den Chip Ja klicken.
  4. Klicken, eingeben oder dragon sagen.

b299e9fed9aedb69_png

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:

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

c2efba35ea881b0d.PNG

  1. Klicken Sie auf das + (Pluszeichen) neben Verarbeitung von Intents.
  2. Wählen Sie im Drop-down-Menü für den Intent Nein aus.
  3. Wählen Sie im Drop-down-Menü Übergang die Option Unterhaltung beenden aus.
  4. 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.
  1. 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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  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 auch auf den Chip Ja klicken.
  4. Klicken, klicken oder sagen Sie eine der Optionen.
  5. Geben Sie Yes in das Feld Eingabe ein und drücken Sie Enter.

5d0690332efe2e29.png

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:

  1. Klicken, klicken oder sagen Sie eine der Optionen.
  2. Geben Sie No in das Eingabefeld ein und drücken Sie Enter.

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_optionIntents 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:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie auf das Pluszeichen (+) unter Typen.
  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 AddAdd (Einträge hinzufügen) die folgenden Einträge und die entsprechenden Werte ein:

horse

horse, stallion, steed

magic

magic, enchanted, spells

money

money, cash, gold

phone

phone, cell, apps

Die Schlüssel/Wert-Paartabelle sollte folgendermaßen 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 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:

  1. Klicken Sie auf das Pluszeichen (+) unter Benutzerdefinierte Intents.
  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 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
  1. Ändern Sie im Bereich Intent-Parameter hinzufügen den Parameternamen in chosenUnavailableOption.
  2. 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.

df61d4489f0910.png

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:

  1. Klicken Sie auf die Fortune-Szene.
  2. Klicken Sie auf das + (Pluszeichen) neben Verarbeitung von Intents.
  3. Wählen Sie im Drop-down-Menü „Intent“ other_option aus.
  4. 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.

  1. Klicken Sie auf Speichern.

4bab1efbe21056aa

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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  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 auch auf den Chip Ja klicken.
  4. Geben Sie magic in das Feld Eingabe ein und drücken Sie Enter.

3a42c33eca435f32.PNG

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:

  1. Klicken Sie in der Navigationsleiste auf Entwickeln.
  2. Klicken Sie auf die Szene Fortune.
  3. Klicken Sie unter Verarbeitung von Nutzerabsichten auf Wenn andere_Optionen zugeordnet sind, um das Fenster zu öffnen.
  4. Entfernen Sie das Häkchen im Kästchen Aufforderungen senden.
  5. Klicken Sie das Kästchen Webhook aufrufen an.
  6. Geben Sie in das Textfeld für den Ereignis-Handler unavailable_options ein.

52a0fba115f1b377

  1. 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:

  1. Klicken Sie in der Navigationsleiste auf Webhook.
  2. 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);
});
  1. Fügen Sie unter const app = conversation(); den folgenden Code hinzu:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Klicken Sie auf Auftragsausführung speichern.
  2. 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 vom conv-Objekt ab und weist option der Property original zu. Diese ist die Roheingabe vom Nutzer.
  • Weist der Property resolved optionKey zu, die dem Schlüssel für den Typ unavailable_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:

  1. Klicken Sie in der Navigationsleiste auf Testen.
  2. Klicken oder 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 auch auf den Chip 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 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:

  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: 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:

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.