Rechtschreibprüfung mit Google Assistant und Cloud Firestore

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äten 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, Cloud Functions und Cloud Firestore behandelt. In diesem Codelab erstellen Sie das Spiel „Rechtschreibübung“, in dem Google Assistant Nutzer auffordert, Wörter zu buchstabieren.

Umfang

In diesem Codelab entwickeln Sie ein anspruchsvolles Spiel mit den folgenden Funktionen:

  • Empfängt Rechtschreibantworten vom Nutzer und ändert je nach Wert die Konversationsaufforderungen.
  • Antwortet mit Hinweisen zur Schreibweise des Wortes, z. B. mit der Definition oder durch Wiederholung des Wortes
  • Erstellt eine Spielschleife, damit ein Nutzer nach dem Buchstabieren des Wortes wieder mit Assistant 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 Spelling Practice“ sagen. Der Standardpfad durch diese Aktion für einen wiederkehrenden Nutzer sieht so aus:

Wenn Sie dieses Codelab abgeschlossen haben, hat Ihre fertige Aktion den folgenden Konversationsablauf:

2e9f94dc0ceafc96.png

Lerninhalte

  • Mit Cloud Firestore interagieren
  • Slots verwenden, um Daten vom Nutzer zu erheben
  • Nutzereingaben verarbeiten und eine Antwort zurückgeben
  • Bedingungen verwenden, um einer Szene Logik hinzuzufügen
  • Spielschleife hinzufügen

Voraussetzungen

Für dieses Codelab sind folgende Voraussetzungen erforderlich:

  • Ein Webbrowser wie Google Chrome
  • Eine IDE zum Schreiben von Cloud Functions-Funktionen.
  • Eine Zahlungsmethode In diesem Codelab wird Cloud Functions for Firebase verwendet. Dazu muss für Ihr Projekt der Firebase-Tarif „Blaze“ aktiviert sein ( weitere Informationen).
  • Ein Terminal zum Ausführen von Shell-Befehlen
  • Node.js 10 oder höher

2. Funktionscode abrufen

Klonen Sie das GitHub-Repository über die Befehlszeile:

$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore

3. Firebase-Projekt erstellen und App einrichten

Firebase-Projekt erstellen

  1. Melden Sie sich in Firebase an.
  2. Klicken Sie in der Firebase Console auf Projekt hinzufügen (oder Projekt erstellen) und geben Sie dann Spelling-Practice als Namen für Ihr Firebase-Projekt ein.

66ae8d1894f4477.png

  1. Klicken Sie sich durch die Optionen zur Projekterstellung. Akzeptieren Sie die Firebase-Nutzungsbedingungen, wenn Sie dazu aufgefordert werden. Überspringen Sie die Einrichtung von Google Analytics, da Sie Analytics für diese App nicht verwenden werden.

Weitere Informationen zu Firebase-Projekten

Upgrade auf den Blaze-Tarif durchführen

Wenn Sie Cloud Functions for Firebase verwenden möchten, müssen Sie ein Upgrade Ihres Firebase-Projekts auf den Blaze-Tarif durchführen. Das bedeutet, dass Sie Ihrem Projekt ein Google Cloud-Rechnungskonto zuweisen. Dazu müssen Sie eine Kreditkarte oder eine andere Zahlungsmethode angeben.

Alle Firebase-Projekte, auch solche mit dem Blaze-Tarif, haben weiterhin Zugriff auf die kostenlosen Nutzungskontingente für Cloud Functions. Die in diesem Codelab beschriebenen Schritte fallen unter die kostenlosen Nutzungslimits. Es fallen jedoch geringe Gebühren ( ca.0, 03 $) für Cloud Storage an, das zum Hosten Ihrer Cloud Functions-Build-Images verwendet wird.

4. Firebase CLI installieren

Mit der Firebase CLI (Befehlszeile) können Sie Ihre Cloud Functions bereitstellen.

Je nach Betriebssystem und Anwendungsfall gibt es verschiedene Optionen für die Installation der Firebase CLI. In den folgenden Schritten wird die häufigste Option beschrieben, wenn Sie auch Cloud Functions verwenden.

  1. Achten Sie darauf, dass Sie npm installiert haben. Das ist in der Regel bei Node.js der Fall.
  2. Installieren oder aktualisieren Sie die CLI mit dem folgenden npm-Befehl:
$ npm -g install firebase-tools
  1. Prüfen Sie mit folgendem Befehl, ob die Befehlszeile korrekt installiert wurde:
$ firebase --version

Die Version der Firebase-CLI muss 9.0.0 oder höher sein, damit alle neuen Funktionen für Cloud Functions verfügbar sind. Falls nicht, führen Sie „npm install -g firebase-tools“ aus, um ein Upgrade durchzuführen (siehe oben).

  1. Autorisieren Sie die Firebase CLI, indem Sie Folgendes ausführen:
$ firebase login
  1. Richten Sie im Verzeichnis „spelling-functions-start“ die Firebase CLI für die Verwendung Ihres Firebase-Projekts ein. Führen Sie den folgenden Befehl aus, wählen Sie Ihre Projekt-ID aus und folgen Sie der Anleitung. Wenn Sie dazu aufgefordert werden, können Sie einen beliebigen Alias auswählen, z. B. codelab.
$ firebase use --add

5. Das Funktionsverzeichnis

Als Nächstes fügen Sie mithilfe des Firebase SDK for Cloud Functions Funktionen hinzu, um das Backend für das Spiel Spelling Practice zu erstellen.

Mit Cloud Functions können Sie Code in der Cloud ausführen, ohne einen Server einrichten zu müssen. In diesem Codelab erfahren Sie, wie Sie Funktionen erstellen, die auf Firebase Authentication-, Cloud Storage- und Firebase Realtime Database-Ereignisse reagieren. Beginnen wir mit der Authentifizierung.

Wenn Sie das Firebase SDK for Cloud Functions verwenden, befindet sich Ihr Functions-Code standardmäßig im Verzeichnis functions. Um Ihnen die Arbeit zu erleichtern, haben wir bereits die Datei functions/index.js erstellt, in die Ihr Code eingefügt wird. Sie können das Verzeichnis functions gerne überprüfen, bevor Sie fortfahren.

$ cd functions
$ ls

Der Functions-Code ist auch eine Node.js-App. Daher ist eine package.json-Datei mit Angaben zu Ihrer App und einer Liste der Abhängigkeiten erforderlich.

Wenn Sie sich nicht mit Node.js auskennen, sollten Sie sich vor dem Fortfahren mit dem Codelab näher damit vertraut machen.

In der Datei package.json sind bereits zwei erforderliche Abhängigkeiten aufgeführt: das Firebase SDK for Cloud Functions und das Firebase Admin SDK. Wenn Sie sie lokal installieren möchten, führen Sie npm install im Verzeichnis functions aus:

$ npm install

Sehen wir uns nun die Datei index.js an:

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */
// TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here.
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Zuerst importieren Sie die erforderlichen Module und schreiben dann vier Funktionen anstelle der TODOs. Fahren Sie mit dem nächsten Schritt des Codelabs fort, um die Module zu importieren.

6. Erforderliche Module importieren

Für dieses Codelab sind drei Module erforderlich.

  • Mit dem Modul firebase-functions können wir die Trigger für unsere Cloud Functions schreiben.
  • Mit dem Modul firebase-admin können wir die Firebase-Plattform auf einem Server mit Administratorzugriff verwenden, z. B. um in Cloud Firestore zu schreiben.
  • Die Actions SDK Node.js Fulfillment Library erfüllt Actions SDK-Handler für Google Assistant.
  1. Installieren Sie das Actions SDK mit dem folgenden npm-Befehl:
$ npm install @assistant/conversation
  1. Ersetzen Sie in der Datei index.js den ersten TODO-Eintrag durch Folgendes.

Durch diese Änderungen werden alle erforderlichen Module importiert.

Außerdem kann das Firebase Admin SDK automatisch konfiguriert werden, wenn es in einer Cloud Functions-Umgebung oder in einem anderen Google Cloud-Container bereitgestellt wird. Das passiert, wenn wir admin.initializeApp(); in den Änderungen unten aufrufen.

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});

// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Fügen wir nun Geschäftslogik mit Funktionen hinzu, um Assistant-Aktionen zu unterstützen.

7. Funktionen erstellen

Wortdefinitionen abrufen und in Cloud Firestore schreiben

Sie verwenden die öffentliche API von dictionaryapi.dev, um die Wortdefinitionen abzurufen.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für getWordDetailsFromDictionaryAPI durch Folgendes:

index.js

// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
  let responseData="";
  let req = https.request({
    host: 'api.dictionaryapi.dev',
    port: 443,
    path:'/api/v2/entries/en/' + word,
    method:'GET'
  }, (res) => {
    res.setEncoding('utf8');
    res.on('data', d => {
        responseData+=d;
    })
    res.on('end',function(){
        let object = JSON.parse(responseData)
        const wordListRef = db.collection('wordlist');
        wordListRef.doc(object[0].word).set(
          object[0]
        );
       return responseData;
     });
  });
  req.end();
}

Cloud Firestore-Trigger hinzufügen

Als Nächstes erstellen Sie eine Cloud Functions-Funktion, die immer dann ausgelöst wird, wenn in Cloud Firestore ein neues Dokument erstellt wird. Dazu wird die dictionaryapi.dev API aufgerufen, um Wortdefinitionen über die getWordDetailsFromDictionaryAPI-Funktion abzurufen, die wir gerade oben geschrieben haben.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für createSpellingPracticeWord durch Folgendes:

index.js

// Firestore-Trigger, der für jedes neue Firestore-Dokument Wortdefinitionen über getWordDetailsFromDictionaryAPI abruft

exports.createSpellingPracticeWord = functions.firestore
  .document('wordlist/{word}')
  .onCreate((snap, context) => {
    const newValue = snap.data();
    const word = newValue.word;
    getWordDetailsFromDictionaryAPI(word);
});

Eine Liste mit Wörtern für das Spiel abrufen

Sie können eine Cloud Functions-Funktion schreiben, die eine Liste von Rechtschreibübungen aus Cloud Firestore für den Assistant abruft. Dazu verwenden wir den App-Handler.

Ersetzen Sie in der Datei index.js den TODO-Kommentar für getSpellingWordList durch Folgendes.

Dadurch, dass diese Funktion dem spezifischen Objekt app.handle hinzugefügt wird, kann über Assistant darauf zugegriffen werden.

index.js

// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
  const wordListRef = db.collection('wordlist').limit(50);
  const snapshot = wordListRef;

  if (snapshot.empty) {
    console.log('No matching documents.');
    return;
  }
  VocabularyList = []

  return snapshot.get().then(snapshot => {
    snapshot.forEach(doc => {
      if (doc.data().word) {
          let definition = 'unknown';
          let audio = 'unknown';
          try {
            if(doc.data().hasOwnProperty('meanings')) {
              if(doc.data().meanings[0].hasOwnProperty('definitions')) {
                  definition = doc.data().meanings[0].definitions[0].definition;
              }
            }
            if(doc.data().hasOwnProperty('phonetics')) {
              if(doc.data().phonetics.length > 0)
                audio = doc.data().phonetics[0].audio;
            }
          } catch (error) {
            console.log(error);
          }

          let obj = {
            word: doc.data().word,
            answer: doc.data().word.split("").join(" "),
            definition: definition,
            audio: audio
          }
          VocabularyList.push(obj);
      }
      // Shuffle the array
      let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
      while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = VocabularyList[currentIndex];
        VocabularyList[currentIndex] = VocabularyList[randomIndex];
        VocabularyList[randomIndex] = temporaryValue;
      }
      conv.session.params.vocabWord = VocabularyList;
      conv.session.params.vocabWordIndex = 0;
    });
  });
})

Ein Wort aus einer Assistant-Sitzung abrufen

Sie können eine Cloud Functions-Funktion schreiben, die das nächste Rechtschreibwort aus der Wortliste zurückgibt.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für getSpellingWord durch Folgendes:

index.js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Das Spiel soll das Wort wiederholen

Sie können eine Cloud Functions-Funktion schreiben, die das aktuelle Wort für das Spiel wiederholt.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für repeatSpellingWord durch Folgendes:

index.js

// Returns current spelling word
app.handle('repeatSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Definition des Wortes abrufen

Sie können eine Cloud Functions-Funktion schreiben, die die Definition des aktuellen Wortes für das Spiel bereitstellt.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für definitionOfSpellingWord durch Folgendes:

index.js

// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord',  conv => {
  conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});

Rechtschreibantwort des Nutzers prüfen

Sie können eine Cloud Functions-Funktion schreiben, die die Antwort des Nutzers darauf überprüft, wie das aktuelle Wort für das Spiel geschrieben wird.

Ersetzen Sie in der Datei index.js den TODO-Eintrag für verifySpellingWord durch Folgendes:

index.js

// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
  try {
    userResponse = conv.intent.params.userresponse.resolved.join("");
    if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
      conv.add('You are correct. Say next to continue.');
    }
    else {
      conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
    }
  } catch (error) {
    conv.add('Sorry. I did not understand your response' );
  }
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

Alle Funktionen bereitstellen

Ihre Cloud Functions sind erst aktiv, nachdem Sie sie in Firebase bereitgestellt haben.

Führen Sie im Stammverzeichnis des Verzeichnisses spelling-functions-start den folgenden Befehl aus:

$ firebase deploy --only functions

Die Ausgabe der Konsole sollte so aussehen:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

Notieren Sie sich die HTTP-Endpunkt-URL der Funktion „ActionsOnGoogleFulfillment“ für die spätere Verwendung. Um den Endpunkt zu erhalten, öffnen Sie die Firebase Console und klicken Sie dann auf das Projekt spelling-practice. Öffnen Sie das Functions-Dashboard, um den Funktionsendpunkt aufzurufen.

332cb0437411a242.png

Sie haben alle erforderlichen Funktionen hinzugefügt. Kommen wir nun zur Einrichtung von Cloud Firestore.

8. Cloud Firestore aktivieren

Sie müssen Cloud Firestore aktivieren.

Klicken Sie in der Firebase Console im Abschnitt Build auf Firestore. Klicken Sie dann auf Datenbank erstellen.

5c0b4abf4410ffcf.png

Der Zugriff auf Daten in Cloud Firestore wird durch Sicherheitsregeln gesteuert. Zuerst müssen Sie einige grundlegende Regeln für die Daten festlegen. Klicken Sie auf Firestore und fügen Sie dann auf dem Tab „Regeln“ der Firebase Console die folgenden Regeln hinzu. Klicken Sie anschließend auf Veröffentlichen.

Die folgenden Regeln beschränken den Datenzugriff auf angemeldete Nutzer. Dadurch wird verhindert, dass nicht authentifizierte Nutzer Daten lesen oder schreiben können.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      //
      // WARNING: These rules are insecure! We will replace them with
      // more secure rules later in the codelab
      //
      allow read, write: if request.auth != null;
    }
  }
}

9. Rechtschreibwörterdaten zu Cloud Firestore hinzufügen

In diesem Schritt schreiben Sie Daten zu Rechtschreibwörtern in Cloud Firestore, damit Sie eine Liste von Wörtern für den Assistant (und das Spiel) generieren können.

Cloud Firestore-Daten sind in Sammlungen, Dokumente, Felder und Untersammlungen strukturiert. Jedes Wort für das Spiel wird als eigenes Dokument in einer Sammlung auf oberster Ebene namens wordlist gespeichert. Für jedes neue Dokument in der Firestore-Sammlung wird die Funktion createSpellingPracticeWord ausgelöst, um die Wortdetails aus dem Dictionary API-Dienst abzurufen.

Cloud Firestore-Sammlung erstellen

  1. Rufen Sie in der Firebase Console den Abschnitt „Cloud Firestore“ auf.
  2. Klicken Sie auf + Sammlung starten.
  3. Geben Sie im Textfeld Sammlungs-ID wordlist ein und klicken Sie auf Weiter.

1b4ccadb90f52f02.png

Als Nächstes erstellen wir ein Dokument für das Wort Vereinbarung.

  1. Geben Sie im Textfeld Dokument-ID den Wert agreement ein.
  2. Geben Sie in das Textfeld Feld den Wert word und in das Textfeld Wert den Wert agreement ein.
  3. Klicken Sie auf Speichern.

379037e011e8511e.png

Wenn Sie dieses Dokument Cloud Firestore hinzufügen, wird die Funktion createSpellingPracticeWord ausgelöst, um die Definitionsdetails für das Wort abzurufen. Fügen Sie weitere Wörter hinzu (z. B. „Ehrfurcht“, „Auto“, „wahr“, „erzählen“, „besser“, „Pendeln“), indem Sie für jedes Wort ein neues Dokument erstellen.

10. Google Assistant einrichten

In den folgenden Abschnitten wird beschrieben, wie Sie Ihre Google Assistant-Entwicklungsumgebung einrichten und Ihr Actions-Projekt erstellen.

Google-Berechtigungseinstellungen prüfen

Um die Aktion zu testen, die Sie in diesem Codelab erstellen, müssen Sie die erforderlichen Berechtigungen aktivieren, damit der Simulator auf Ihre Aktion zugreifen kann. So aktivieren Sie Berechtigungen:

  1. Rufen Sie die Seite Aktivitätseinstellungen auf.
  2. Melden Sie sich mit Ihrem Google-Konto an, falls Sie das noch nicht getan haben.
  3. Aktivieren Sie die folgenden Berechtigungen:
  • Web- & App-Aktivitäten
  • Setzen Sie unter Web- & App-Aktivitäten ein Häkchen neben Auch den Chrome-Verlauf sowie Aktivitäten auf Websites, in Apps und auf Geräten berücksichtigen, die Google-Dienste nutzen.

c988e1e639e6d6e1.png

Actions-Projekt erstellen

Ihr Actions-Projekt ist ein Container für Ihre Aktion. So erstellen Sie Ihr Actions-Projekt für dieses Codelab:

  1. Öffnen Sie die Actions Console.
  2. Klicken Sie auf Neues Projekt.
  3. Nutzungsbedingungen akzeptieren

b174d45710b8086b.png

  1. Geben Sie spelling-practice-codelab ein oder wählen Sie es aus. Sie haben es mit der Firebase Console erstellt. Der Name dient nur zu Ihrer internen Referenz. Später können Sie einen externen Namen für Ihr Projekt festlegen.)

a2951de5d2001fac.png

  1. Klicken Sie auf Projekt importieren.
  2. Wählen Sie auf dem Bildschirm What kind of Action do you want to build? (Welche Art von Action möchten Sie erstellen?) die Karte Custom (Benutzerdefiniert) aus.
  3. Klicken Sie auf Weiter.
  4. Wählen Sie die Karte Leeres Projekt aus.
  5. Klicken Sie auf Start building (Erstellen starten).
  6. Geben Sie Rechtschreibübung als Anzeigenamen ein und klicken Sie auf „Speichern“.

Nutzer starten die Unterhaltung mit Ihrer Aktion über die Invocation. Nutzer können Ihre Aktion beispielsweise mit einem Satz wie Hey Google, sprich mit Rechtschreibübung aufrufen. Rechtschreibübung ist dabei der Anzeigename.

Ihre Aktion muss einen Anzeigenamen haben, wenn Sie sie in der Produktion bereitstellen möchten. Zum Testen Ihrer Aktion müssen Sie den Anzeigenamen jedoch nicht definieren. Stattdessen können Sie im Simulator den Satz Talk to my test app verwenden, um Ihre Aktion aufzurufen.

Auftragsausführung konfigurieren

Sie müssen die Ereignishandler für die Cloud Functions, die Sie zuvor in diesem Codelab geschrieben und bereitgestellt haben, mit Assistant verbinden.

So konfigurieren Sie die Auftragsausführung:

  1. Klicken Sie in der Seitenleiste auf Webhook.
  2. Wählen Sie HTTPS-Endpunkt als Erfüllungsoption aus:

d523bf003e96e66f.png

  1. Geben Sie die URL des Endpunkts Ihrer Funktion in das Textfeld HTTPS-Endpunkt ein und klicken Sie auf Speichern.

be53e2cd0d914d54.png

Im nächsten Abschnitt passen Sie den Prompt für Ihren Hauptaufruf in der Actions Console an.

Hauptaufruf einrichten

Sie müssen den Hauptaufruf bearbeiten, um festzulegen, was passiert, nachdem ein Nutzer Ihre Action aufgerufen hat.

Standardmäßig stellt Actions Builder einen generischen Prompt bereit, wenn Ihr Aufruf ausgelöst wird („Beginnen Sie mit der Entwicklung Ihrer Aktion, indem Sie den Hauptaufruf definieren.“).

So ändern Sie den Prompt, den Ihre Aktion an den Nutzer zurücksendet, wenn er Ihre Aktion aufruft:

  1. Klicken Sie in der Navigation auf Hauptaufruf.

9ff088c04c995cde.png

  1. Klicken Sie das Kästchen Call your webhook an und fügen Sie den Namen des Event-Handlers getSpellingWordList in das Textfeld ein.
  2. Ersetzen Sie im Code-Editor den Text im Feld speech durch die folgende Willkommensnachricht: Welcome to Spelling Practice

Hinweis:Sie können Ihre Prompts entweder im YAML- oder im JSON-Format bearbeiten.

  1. Klicken Sie auf Speichern.

Hauptaufruf im Simulator testen

Die Actions-Konsole bietet ein Webtool zum Testen Ihrer Action, den Simulator. Die Benutzeroberfläche simuliert Hardwaregeräte und ihre Einstellungen, sodass Sie mit Ihrer Action interagieren können, als würde sie auf einem Smart Display, Smartphone, Lautsprecher oder KaiOS ausgeführt.

So testen Sie den Hauptaufruf Ihrer Action im Simulator:

  1. Klicken Sie in der oberen Navigationsleiste auf Testen, um zum Simulator zu gelangen.
  2. Um Ihre Aktion im Simulator aufzurufen, geben Sie links oben im Eingabefeld Talk to Spelling Practice ein und drücken Sie dann die Eingabetaste auf Ihrer Tastatur.

651fc8da1ac9aa0a.png

Wenn Sie den Hauptaufruf Ihrer Aktion auslösen, antwortet Assistant mit Ihrer benutzerdefinierten Begrüßungsnachricht. An diesem Punkt endet die Unterhaltung, nachdem der Assistant mit einer Begrüßung geantwortet hat.

Ereignisprotokolle ansehen

Wenn Sie sich auf dem Tab Test befinden, wird im Bereich rechts das Ereignisprotokoll angezeigt, in dem der Unterhaltungsverlauf als Ereignisprotokoll dargestellt wird. In jedem Ereignisprotokoll werden die Ereignisse angezeigt, die während dieser Unterhaltungsrunde stattfinden. Wenn Sie das Ereignisprotokoll aufrufen möchten, klicken Sie auf das graue Symbol vor dem Ereignis.

Ihre Action hat derzeit ein Ereignisprotokoll, in dem sowohl die Eingabe des Nutzers („Talk to Spelling Practice“) als auch die Antwort Ihrer Action angezeigt werden. Der folgende Screenshot zeigt das Ereignisprotokoll Ihrer Aktion:

a6fb192f94426824.png

11. Konversation für Rechtschreibübungen erstellen

Nachdem Sie definiert haben, was passiert, nachdem ein Nutzer Ihre Aktion aufgerufen hat, können Sie den Rest der Unterhaltung Ihrer Aktion erstellen. Rechtschreibübung hat vier Szenen, die Sie jeweils aktivieren müssen, bevor sie ausgeführt werden können. Die häufigste Methode zum Aktivieren einer Szene besteht darin, Ihre Aktion so zu konfigurieren, dass ein Nutzer-Intent in einer Szene den Übergang zu einer anderen Szene auslöst und diese aktiviert.

Übergang vom Hauptaufruf zur Startszene

In diesem Abschnitt erstellen Sie eine neue Szene mit dem Namen Start, in der der Nutzer gefragt wird, ob er Spelling Practice spielen möchte. Außerdem fügen Sie einen Übergang vom Hauptaufruf zur neuen Szene Start hinzu.

So erstellen Sie diese Szene und fügen ihr eine Übergangsblende hinzu:

  1. Klicken Sie oben in der Navigationsleiste auf Entwickeln. Klicken Sie dann links im Navigationsbereich auf Hauptaufruf.
  2. Klicken Sie rechts im Bereich Übergang auf das Drop-down-Menü und geben Sie dann Start in das Textfeld ein.

dd4f1807a57f794d.png

  1. Klicken Sie auf Hinzufügen. Dadurch wird eine Szene mit dem Namen Start erstellt und der Action wird mitgeteilt, dass nach der Bereitstellung des Begrüßungsprompts für den Nutzer zur Szene Start gewechselt werden soll.
  2. Klicken Sie in der linken Navigationsleiste auf Szenen, um die Liste der Szenen aufzurufen.
  3. Klicken Sie unter Szenen auf Starten, um die Szene Start aufzurufen.
  4. Klicken Sie im Abschnitt Bei Eingabe der Szene Start auf +.
  5. Wählen Sie Prompts senden aus.
  6. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch eine Frage an den Nutzer: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Vorschlagschips bieten dem Nutzer anklickbare Vorschläge, die von Ihrer Action als Nutzereingabe verarbeitet werden. In diesem Abschnitt fügen Sie Vorschlags-Chips hinzu, die unter dem gerade konfigurierten Prompt angezeigt werden (Do you want to play

Spelling Practice

?), um Nutzer auf Geräten mit Displays zu unterstützen.

So fügen Sie dem Prompt der Szene Start Vorschlagschips hinzu:

  1. Klicken Sie in der Szene Start unter dem Code-Editor auf Vorschläge. Dadurch wird ein einzelner Vorschlags-Chip hinzugefügt.
  2. Ersetzen Sie im Feld title Suggested Response durch 'Yes'.
  3. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'No' und 'Help with Phonetics' hinzu. Verwenden Sie dabei dieselbe Formatierung. Ihr Code sollte so aussehen:
  4. Klicken Sie auf Speichern.

5ff2ecdc56801b91.png

Aktion im Simulator testen

An diesem Punkt sollte Ihre Aktion vom Hauptaufruf zur Szene Start übergehen und den Nutzer fragen, ob er fortfahren möchte. Außerdem sollten Vorschlagschips auf dem simulierten Display angezeigt werden.

So testen Sie Ihre Action im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Testen, um den Simulator aufzurufen.
  2. Wenn Sie Ihre Aktion im Simulator testen möchten, geben Sie Talk to Spelling Practice in das Eingabefeld ein.
  3. Drücken Sie die Eingabetaste. Ihre Aktion sollte mit dem Prompt Main invocation und dem hinzugefügten Szenen-Prompt Start antworten, „Willkommen beim Buchstabieren. Buchstabieren Sie das Wort mithilfe des phonetischen Alphabets. Zum Beispiel „alpha“ für „a“, „bravo“ für „b“, „charlie“ für „c“ usw. Möchten Sie fortfahren?“

Der folgende Screenshot zeigt diese Interaktion:

338c9570b02a618e.png

  1. Klicken Sie auf den Vorschlagschip Yes, No oder Help with Phonetics, um auf den Prompt zu reagieren. Sie können auch Ja, Nein oder Hilfe bei der Phonetik sagen oder Yes, No oder Help with Phonetics in das Feld Eingabe eingeben.

Wenn Sie auf den Prompt antworten, antwortet Ihr Action mit einer Meldung, dass es Ihre Eingabe nicht versteht: „Das habe ich nicht verstanden. Kannst du es noch einmal versuchen?“ Da Sie Ihre Aktion noch nicht so konfiguriert haben, dass sie die Eingaben „Ja“ oder „Nein“ versteht und darauf reagiert, wird Ihre Eingabe einem NO_MATCH-Intent zugeordnet.

Standardmäßig werden mit dem System-Intent NO_MATCH allgemeine Antworten bereitgestellt. Sie können diese Antworten jedoch anpassen, um dem Nutzer mitzuteilen, dass Sie seine Eingabe nicht verstanden haben. Assistant beendet die Unterhaltung des Nutzers mit Ihrer Aktion, wenn die Nutzereingabe dreimal nicht zugeordnet werden kann.

„Nein“- und phonetische Intentionen hinzufügen

Da Nutzer jetzt auf die Frage Ihrer Action antworten können, können Sie Ihre Action so konfigurieren, dass sie die Antworten der Nutzer versteht (Ja, Nein oder Hilfe bei der Aussprache). In den folgenden Abschnitten erstellen Sie Nutzer-Intents, die abgeglichen werden, wenn der Nutzer Ja, Nein oder „Hilfe bei der Aussprache“ sagt, und fügen diese Intents der Szene Start hinzu. Wir verwenden den System-Intent yes und erstellen weitere Intents.

no-Intent erstellen

Jetzt müssen Sie den Intent no erstellen, damit der Nutzer verstanden wird und Sie ihm antworten können, wenn er das Spiel nicht spielen möchte. So erstellen Sie diesen Intent:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie dem neuen Intent den Namen no und drücken Sie die Eingabetaste.
  4. Klicken Sie auf Nein, um die Intent-Seite no zu öffnen.
  5. Klicken Sie im Abschnitt Trainingsformulierungen hinzufügen in das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. Klicken Sie auf Speichern.

no-Absicht zur Start-Szene hinzufügen

Die Action kann jetzt verstehen, wenn ein Nutzer „Nein“ oder etwas Ähnliches wie „Nein“ sagt, z. B. „Nee“. Sie müssen der Start-Szene die Nutzerabsicht no hinzufügen, da der Nutzer auf den Start-Prompt („Willkommen beim Rechtschreibtraining. Buchstabieren Sie das Wort mithilfe des phonetischen Alphabets. Zum Beispiel „alpha“ für „a“, „bravo“ für „b“, „charlie“ für „c“ usw. Möchten Sie fortfahren?“).

So fügen Sie diesen Intent für die Szene Start hinzu:

  1. Klicken Sie in der Navigation auf die Szene Start.
  2. Klicken Sie in der Szene Start neben „Nutzerabsicht verarbeiten“ auf das Pluszeichen (+).
  3. Wählen Sie im Abschnitt Intent im Drop-down-Menü die Option Nein aus.

51f752e78c8b4942.png

  1. Klicken Sie auf Prompts senden und aktualisieren Sie das Feld speech mit dem folgenden Text: Good Bye.

Der Code in Ihrem Editor sollte so aussehen:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. Wählen Sie im Bereich Übergang im Drop-down-Menü die Option Unterhaltung beenden aus.
  2. Klicken Sie auf Speichern.

no-Intent im Simulator testen

An diesem Punkt versteht Ihre Aktion, wenn der Nutzer das Spiel nicht spielen möchte, und gibt die entsprechende Antwort zurück.

So testen Sie diesen Intent im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Geben Sie Talk to Spelling Practice in das Eingabefeld ein und drücken Sie Enter.
  3. Geben Sie No in das Feld Eingabe ein und drücken Sie die Eingabetaste. Alternativ können Sie auf den Chip „Kein Vorschlag“ klicken.

7727a456b522f31b.png

Der Szene Start den System-Intent YES hinzufügen

Jetzt fügen wir der Szene Start den SYSTEM-Intent YES hinzu, da der Nutzer mit „Ja“ auf den Prompt Start („Willkommen beim Buchstabiertraining. Buchstabieren Sie das Wort mithilfe des phonetischen Alphabets. Zum Beispiel „alpha“ für „a“, „bravo“ für „b“, „charlie“ für „c“ usw. Möchten Sie fortfahren?“).

So fügen Sie diesen Nutzer-Intent der Szene Start hinzu:

  1. Klicken Sie in der Navigation auf die Szene Start.
  2. Klicken Sie in der Szene Start neben User intent handling (Umgang mit Nutzerabsichten) auf das + (Pluszeichen).
  3. Wählen Sie unter „Alle System-Intents“ im Drop-down-Menü für Intents YES aus.

f6cbe789cde49e8f.png

  1. Klicken Sie auf Webhook aufrufen und aktualisieren Sie das Textfeld event handler mit der Funktion, die Sie zuvor erstellt haben: getSpellingWordList.
  2. Klicken Sie im Abschnitt Übergang auf das Drop-down-Menü und wählen Sie Unterhaltung beenden aus.
  3. Klicken Sie auf Speichern.

YES-Intent im Simulator testen

An diesem Punkt versteht Ihre Aktion, wann der Nutzer das Spiel spielen möchte, und gibt die entsprechende Antwort zurück.

So testen Sie diesen Intent im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Test.
  2. Wenn Sie Ihre Aktion im Simulator testen möchten, geben Sie im Feld Eingabe Talk to Spelling Practice ein und drücken Sie die Eingabetaste.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie die Eingabetaste. Alternativ können Sie auch auf den Vorschlagschip Yes klicken.

Ihre Aktion ruft eine Liste aller Rechtschreibübungsbegriffe ab und speichert sie in der Sitzung. Ihre Aktion beendet dann die Sitzung, da Sie den Übergang End conversation für die Intention YES ausgewählt haben.

Phonetics-Intent erstellen

So erstellen Sie den Intent Phonetics:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie einen Namen für den neuen Intent ein phonetics und drücken Sie die Eingabetaste.Enter
  4. Klicken Sie auf den Intent phonetics, um die Seite für den Intent phonetics zu öffnen.
  5. Klicken Sie im Abschnitt „Trainingsformulierungen hinzufügen“ auf das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Klicken Sie auf Speichern.

phonetics-Absicht zur Start-Szene hinzufügen

Die Aktion kann jetzt erkennen, wenn ein Nutzer den Intent phonetics (Phonetik) äußert. Sie können den Nutzer-Intent phonetics der Szene Start hinzufügen, da der Nutzer auf den Prompt Start („Willkommen beim Rechtschreibtraining. Buchstabieren Sie das Wort mithilfe des phonetischen Alphabets. Zum Beispiel „alpha“ für „a“, „bravo“ für „b“, „charlie“ für „c“ usw. Möchten Sie fortfahren?“).

So fügen Sie diesen Nutzer-Intent der Szene Start hinzu:

  1. Klicken Sie in der Navigation auf die Szene Start.
  2. Klicken Sie in der Szene Start neben „User intent handling“ (Nutzerabsicht verarbeiten) auf das Pluszeichen (+).
  3. Wählen Sie im Drop-down-Menü für Intentionen phonetics aus.

67ee2e08000b2aee.png

  1. Klicken Sie im Abschnitt Übergang auf das Drop-down-Menü und wählen Sie Unterhaltung beenden aus.
  2. Klicken Sie auf Speichern.

Von der Startszene zur Rechtschreibszene wechseln

In diesem Abschnitt erstellen Sie eine neue Szene namens Spelling, in der der Nutzer aufgefordert wird, das Wort mithilfe des phonetischen Alphabets zu buchstabieren.

So erstellen Sie diese Szene und fügen ihr eine Übergangsblende hinzu:

  1. Klicken Sie oben in der Navigationsleiste auf Entwickeln. Klicken Sie dann links im Navigationsbereich auf Szene starten.
  2. Klicken Sie im Bereich User intent handling (Umgang mit Nutzerabsicht) auf when actions.intent.YES is matched und dann rechts im Bereich transition (Übergang) auf das Drop-down-Menü. Geben Sie Spelling in das Textfeld ein.
  3. Klicken Sie auf Hinzufügen. Dadurch wird eine Szene mit dem Namen Spelling erstellt und die Aktion wird angewiesen, nach der Übereinstimmung mit dem YES-Intent zur Szene Spelling zu wechseln.
  4. Maximieren Sie in der linken Navigationsleiste Szenen, um die Liste der Szenen aufzurufen.
  5. Klicken Sie unter Szenen auf „Rechtschreibung“, um die Szene Spelling aufzurufen.
  6. Klicken Sie im Abschnitt Bei Eingabe der Szene Spelling auf +.
  7. Klicken Sie auf Webhook aufrufen und geben Sie getSpellingWord in das Textfeld für den Ereignishandler ein.
  8. Wählen Sie Prompts senden aus.
  9. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch {}. Der tatsächliche Prompt wird per Webhook eingefügt.

Vorschlagschips bieten dem Nutzer anklickbare Vorschläge, die von Ihrer Action als Nutzereingabe verarbeitet werden.

So fügen Sie dem Prompt der Szene Spelling Vorschlagschips hinzu:

  1. Klicken Sie in der Szene Spelling unter dem Code-Editor auf Vorschläge. Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title Suggested Response durch 'Repeat'.
  3. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'Skip' hinzu und verwenden Sie dabei dieselbe Formatierung.
  4. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu und verwenden Sie dabei dieselbe Formatierung. Ihr Code sollte so aussehen:
  5. Klicken Sie auf Speichern.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Repeat-Intent erstellen

So erstellen Sie den Intent repeat:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie einen Namen für den neuen Intent ein repeat und drücken Sie die Eingabetaste.Enter
  4. Klicken Sie auf den Intent repeat, um die Intent-Seite definition zu öffnen.
  5. Klicken Sie im Abschnitt Trainingsformulierungen hinzufügen auf das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. Klicken Sie auf Speichern.

repeat-Absicht zur Spelling-Szene hinzufügen

Die Action kann jetzt erkennen, wenn ein Nutzer den Intent repeat (wiederholen) äußert. Sie können den Nutzer-Intent repeat der Szene Spelling hinzufügen, da der Nutzer auf den Prompt Spelling („Buchstabieren Sie das Wort mit dem phonetischen Alphabet.“) antwortet.

So fügen Sie diesen Nutzer-Intent der Szene Spelling hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent handling (Umgang mit Nutzerabsichten) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für Intentionen repeat aus.

5cfd623b25bedbed.png

  1. Klicken Sie auf Webhook aufrufen und geben Sie repeatSpellingWord in das Textfeld für den Event-Handler ein, um die Wortdefinition zu erhalten.
  2. Klicken Sie das Kästchen Prompts senden an.
  3. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch „'. Der tatsächliche Prompt wird per Webhook eingefügt.

Vorschlagschips für „Bei Wiederholung“ hinzufügen

  1. Klicken Sie unter „User Intent handling“ (Umgang mit Nutzer-Intents) im Bereich When Repeat is matched (Wenn „Wiederholen“ erkannt wird) unter dem Code-Editor auf suggestions (Vorschläge). Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title Suggested Response durch 'Skip'.
  3. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu. Verwenden Sie dazu dieselbe Formatierung. Ihr Code sollte so aussehen:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Klicken Sie auf Speichern.

definition-Intent erstellen

So erstellen Sie den Intent definition:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie einen Namen für den neuen Intent ein definition und drücken Sie die Eingabetaste.Enter
  4. Klicken Sie auf den Intent definition, um die Seite für den Intent definition zu öffnen.
  5. Klicken Sie im Abschnitt Trainingsformulierungen hinzufügen auf das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

c1b88a9c0b1ac082.png

  1. Klicken Sie auf Speichern.

definition-Absicht zur Spelling-Szene hinzufügen

Die Aktion kann jetzt erkennen, wenn ein Nutzer einen „definition“-Intent äußert. Sie können den Nutzer-Intent definition der Szene Spelling hinzufügen, da der Nutzer auf den Prompt Spelling („Buchstabieren Sie das Wort mit dem phonetischen Alphabet.“) antwortet.

So fügen Sie diesen Nutzer-Intent der Szene Spelling hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent handling (Umgang mit Nutzerabsichten) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für Intentionen Definition aus.

646bdcac3ad3eb0c.png

  1. Aktivieren Sie Webhook aufrufen und geben Sie definitionOfSpellingWord in das Textfeld für den Ereignishandler ein, um die Wortdefinition zu erhalten.
  2. Klicken Sie das Kästchen Prompts senden an.
  3. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch „“. Der tatsächliche Prompt wird per Webhook eingefügt.

Vorschlagschips zur Webhook-Antwort hinzufügen

  1. Klicken Sie in der Szene Start unter dem Code-Editor auf Vorschläge. Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title Suggested Response durch 'Skip'.
  3. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu. Verwenden Sie dazu dieselbe Formatierung. Ihr Code sollte so aussehen:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Klicken Sie auf Speichern.

skip-Intent erstellen

So erstellen Sie den Intent skip:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie einen Namen für den neuen Intent ein skip und drücken Sie die Eingabetaste.Enter
  4. Klicken Sie auf den Intent skip, um die Seite für den Intent skip zu öffnen.
  5. Klicken Sie im Abschnitt Trainingsformulierungen hinzufügen auf das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. Klicken Sie auf Speichern.

Skip-Absicht zur Spelling-Szene hinzufügen

Die Aktion kann jetzt erkennen, wenn ein Nutzer den Intent „skip“ (Überspringen) äußert. Sie können den Nutzer-Intent skip der Szene Spelling hinzufügen, da der Nutzer auf den Prompt Spelling („Buchstabieren Sie das Wort mit dem phonetischen Alphabet.“) antwortet.

So fügen Sie diesen Nutzer-Intent der Szene Spelling hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent handling (Umgang mit Nutzerabsichten) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für Intentionen Überspringen aus.

5465f97542217964.png

  1. Klicken Sie rechts im Bereich Übergang auf das Drop-down-Menü und wählen Sie Spelling aus .

c8072485ca82bd3f.png

  1. Klicken Sie auf Speichern.

quit-Intent erstellen

So erstellen Sie den Intent Quit:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie in der Navigation auf Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste mit den Intentionen auf das Pluszeichen (+). Geben Sie einen Namen für den neuen Intent ein Quit und drücken Sie die Eingabetaste.Enter
  4. Klicken Sie auf die Absicht Quit, um die Seite mit der Absicht Definition zu öffnen.
  5. Klicken Sie im Abschnitt Trainingsformulierungen hinzufügen auf das Textfeld Formulierung eingeben und geben Sie die folgenden Formulierungen ein:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Klicken Sie auf Speichern.

Quit-Absicht zur Spelling-Szene hinzufügen

Die Aktion kann jetzt erkennen, wenn ein Nutzer die Absicht „quit“ (beenden) äußert. Sie können den Nutzer-Intent quit der Szene Spelling hinzufügen, da der Nutzer auf den Prompt Spelling („Buchstabieren Sie das Wort mit dem phonetischen Alphabet.“) antwortet.

So fügen Sie diesen Nutzer-Intent der Szene Spelling hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent handling (Umgang mit Nutzerabsichten) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für Intentionen quit aus.

5f62fb18a3653d66.png

  1. Klicken Sie rechts im Bereich Übergang auf das Drop-down-Menü und wählen Sie End conversation aus . 1ffbe35a7bbbb4b0.png
  2. Klicken Sie auf Speichern.

phonetic_alphabet-Typ erstellen

In diesem Abschnitt erstellen Sie einen neuen Typ namens phonetic_alphabet, der die Optionen für das phonetische Alphabet angibt, die Nutzer zum Buchstabieren des Wortes auswählen können. Sie können auch einige Synonyme für diese Optionen definieren, falls ein Nutzer etwas Ähnliches sagt. In einem späteren Abschnitt fügen Sie einem Slot den Typ phonetic_alphabet hinzu, um anzugeben, dass Sie die Antwort des Nutzers erhalten möchten.

So erstellen Sie den Typ phonetic_alphabet:

  1. Klicken Sie in der Navigation auf Entwickeln.
  2. Klicken Sie unter Typen auf das + (Pluszeichen).
  3. Geben Sie phonetic_alphabet ein und drücken Sie Enter.
  4. Klicken Sie auf phonetic_alphabet, um die Optionen zu öffnen.
  5. Wählen Sie im Abschnitt Welche Art von Werten werden von diesem Typ unterstützt? die Option Wörter und Synonyme aus.
  6. Geben Sie im Abschnitt Einträge hinzufügen die folgenden Einträge und entsprechenden Werte ein:

a

alpha, apple, amsterdam

b

bravo, butter, baltimore

c

charlie, cat, casablanca

d

delta, dog, denmark

e

echo, edward, edison

f

foxtrot, fox, florida

g

golf, george, gallipoli

h

hotel, harry, havana

i

india, ink, italia

j

juliette, johnny, jerusalem

k

Kilo, König, Kilogramm

l

lima, love, london

m

mike, money, madagascar

N

november, new york, nancy

o

oscar, orange, oslo

p

papa, paris, peter

q

quebec, queen

r

romeo, roma, robert

s

sierra, sugar, santiago

t

tango, tommy, tripoli

u

Uniform, Schirm, Onkel

v

victor, vinegar, Valencia (Sieger, Essig, Valencia)

W

whiskey, william, washington

x

Röntgen

y

yankee, yellow, yorker

z

zulu, zebra, zurich

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

5b5a5cd9fa557e1b.png

  1. Klicken Sie auf Speichern.

Slot-Füllung konfigurieren

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

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling für Slot-Filling auf das Pluszeichen (+).
  3. Geben Sie im Feld Slot-Name eingeben userresponse als Slot-Name ein.
  4. Wählen Sie im Drop-down-Menü Typ auswählen die Option phonetic_alphabet als Slot-Typ aus.
  5. Klicken Sie auf This slot accepts a list of values (Dieser Slot akzeptiert eine Liste von Werten).
  6. Klicken Sie das Kästchen This slot is required (Dieser Slot ist erforderlich) an.
  7. Wählen Sie die Option Customize slot value writeback (Rückschreiben von Slot-Werten anpassen) aus und geben Sie „userresponse“ in das Textfeld für den Sitzungsparameter ein.

ba57a419877a07f3.png

  1. Klicken Sie auf Speichern.

Bedingung zum Bildschirm „Spelling“ hinzufügen

So fügen Sie der Szene Spelling eine Bedingung hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben „Bedingung“ auf das Pluszeichen (+).
  3. Geben Sie scene.slots.status == "FINAL" als Bedingung ein.
  4. Klicken Sie auf Call your webhook (Webhook aufrufen) und geben Sie verifySpellingWord in das Textfeld für den Ereignishandler ein, um die Nutzerantwort zu prüfen.
  5. Klicken Sie das Kästchen Prompts senden an.
  6. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch {}. Der tatsächliche Prompt wird per Webhook eingefügt.

Vorschlagschips zur Webhook-Antwort hinzufügen

  1. Klicken Sie in der Szene Start unter dem Code-Editor auf Vorschläge. Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title Suggested Response durch 'Next'.
  3. Fügen Sie manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu. Verwenden Sie dazu dieselbe Formatierung. Ihr Code sollte so aussehen:
suggestions:
      - title: 'Next'
      - title: 'Quit'

ac3d7a9366ebc1b1.png

  1. Klicken Sie auf Speichern.

12. Rechtschreibübung im Simulator testen

So testen Sie Ihre Action im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Testen, um den Simulator aufzurufen.
  2. Wenn Sie Ihre Aktion im Simulator testen möchten, geben Sie Talk to Spelling Practice in das Eingabefeld ein.
  3. Drücken Sie die Eingabetaste. Ihre Aktion sollte mit dem Prompt Main invocation und dem hinzugefügten Szenen-Prompt Start antworten, „Willkommen beim Buchstabieren. Buchstabieren Sie das Wort mithilfe des phonetischen Alphabets. Zum Beispiel „alpha“ für „a“, „bravo“ für „b“, „charlie“ für „c“ usw. Möchten Sie fortfahren?“
  4. Sagen Sie Ja, um fortzufahren.
  5. Der Simulator spielt einen Wortklang ab, der buchstabiert werden soll.
  6. Sie können das Wort mit phonetischen Alphabeten buchstabieren. Sagen oder tippen Sie beispielsweise für besser „bravo echo tango tango echo romeo“.
  7. Der Simulator antwortet entweder mit der richtigen oder der falschen Antwort.
  8. Sagen Sie weiter, um zum nächsten Wort zu gelangen, oder beenden, um die Spielschleife zu verlassen.

13. Glückwunsch

Herzlichen Glückwunsch! Sie haben das Spiel Rechtschreibübung erfolgreich erstellt.

Sie kennen jetzt die wichtigsten Schritte, die zum Erstellen eines Spiels mit Cloud Firestore, Cloud Functions und Google Assistant Action Builder erforderlich sind.

Behandelte Themen

  • Mit Cloud Firestore interagieren
  • Slots verwenden, um Daten vom Nutzer zu erheben
  • Nutzereingaben verarbeiten und eine Antwort zurückgeben
  • Bedingungen verwenden, um einer Szene Logik hinzuzufügen
  • Spielschleife hinzufügen

Zusätzliche Lernressourcen

In diesen Ressourcen finden Sie Informationen zum Erstellen von Aktionen für Google Assistant:

Projekt bereinigen [empfohlen]

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

  1. Wenn Sie Ihr Firebase-Projekt und die zugehörigen Ressourcen löschen möchten, führen Sie die Schritte im Abschnitt Projekte beenden (löschen) aus.

Achtung: Achten Sie darauf, dass Sie auf der Seite Einstellungen der Google Cloud Console das richtige Projekt zum Löschen auswählen.

  1. Optional: Wenn Sie Ihr Projekt sofort aus der Actions Console entfernen möchten, führen Sie die Schritte im Abschnitt Projekt löschen aus. Wenn Sie diesen Schritt nicht ausführen, wird Ihr Projekt nach etwa 30 Tagen automatisch entfernt.

Folgen Sie uns auf Twitter unter @ActionsOnGoogle und @Firebase, um über unsere neuesten Ankündigungen auf dem Laufenden zu bleiben. Wenn Sie Ihre Projekte teilen möchten, können Sie den Hashtag #GoogleIO verwenden.