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 intelligente Lautsprecher, Smartphones, Autos, Fernseher und Kopfhörer. Nutzer führen Unterhaltungen 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 unkompliziert ansprechende und effektive Unterhaltungen zwischen Nutzern und Ihrem eigenen Drittanbieterdienst für die Auftragsausführung zu erstellen und zu verwalten.

Dieses Codelab behandelt Konzepte für fortgeschrittene Nutzer für die Entwicklung mit Google Assistant, Cloud Functions und Cloud Firestore. In diesem Codelab entwickeln Sie ein Spiel namens „Rechtschreibübung“ bei dem Nutzer mithilfe von Google Assistant aufgefordert werden, Wörter zu buchstabieren.

Inhalt

In diesem Codelab erstellen Sie ein anspruchsvolles Spiel mit folgenden Funktionen:

  • Erhält Antworten des Nutzers zur Rechtschreibung und ändert je nach Wert die Konversationsprompts.
  • Antwortet mit Hinweisen zur Schreibweise des Wortes, z. B. der Definition oder der Wiederholung des Wortes
  • Erstellt eine Spielschleife, über die Nutzer noch einmal mit Assistant interagieren können, nachdem sie das Wort buchstabiert haben

Bevor Sie mit dem Erstellen beginnen, können Sie auf Ihrem Gerät mit integriertem Assistant mit der Live-Aktion interagieren. Sagen Sie dazu einfach „Hey Google, sprich mit Rechtschreibübungen“. Der Standardpfad für diese Aktion für einen wiederkehrenden Nutzer sieht so aus:

Wenn du dieses Codelab abgeschlossen hast, läuft die abgeschlossene Aktion so aus:

2e9f94dc0ceafc96.png

Aufgaben in diesem Lab

  • Mit Cloud Firestore interagieren
  • Slots zum Erheben von Daten vom Nutzer verwenden
  • Eingabe eines Nutzers verarbeiten und eine Antwort zurückgeben
  • So fügen Sie einer Szene mithilfe von Bedingungen Logik hinzu
  • Spielschleife hinzufügen

Voraussetzungen

Für dieses Codelab müssen folgende Voraussetzungen erfüllt sein:

  • Einen Webbrowser wie Google Chrome
  • Eine IDE zum Schreiben von Cloud Functions-Funktionen.
  • Eine Zahlungsmethode In diesem Codelab wird Cloud Functions for Firebase verwendet. Ihr Projekt muss daher den Firebase Blaze-Tarif haben (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 als Namen für Ihr Firebase-Projekt Spelling-Practice 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, weil Sie Analytics für diese App nicht verwenden werden.

Weitere Informationen zu Firebase-Projekten finden Sie unter Firebase-Projekte verstehen.

Upgrade auf den Blaze-Tarif durchführen

Wenn Sie Cloud Functions for Firebase verwenden möchten, müssen Sie Ihr Firebase-Projekt auf den Blaze-Preisplan umstellen. Das bedeutet, dass Sie Ihrem Projekt ein Google Cloud-Rechnungskonto zuweisen müssen. Dazu müssen Sie eine Kreditkarte oder eine andere Zahlungsmethode angeben.

Alle Firebase-Projekte, einschließlich der Projekte mit dem Tarif „Blaze“, 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, in dem Ihre Cloud Functions-Build-Images gehostet werden.

4. Firebase CLI installieren

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

Je nach Betriebssystem und Anwendungsfall gibt es mehrere Möglichkeiten zur Installation der Firebase CLI. In den folgenden Schritten wird die häufigste Option beschrieben, wenn Sie auch Cloud Functions verwenden.

  1. Installieren Sie npm, das normalerweise mit Node.js enthalten ist.
  2. Installieren oder aktualisieren Sie die Befehlszeile mit dem folgenden npm-Befehl:
$ npm -g install firebase-tools
  1. Prüfen Sie mit dem folgenden Befehl, ob die Befehlszeile korrekt installiert wurde:
$ firebase --version

Achten Sie darauf, dass die Version von Firebase CLI 9.0.0 oder höher ist, damit alle neuen Features verwendet werden, die für Cloud Functions erforderlich sind. Falls nicht, führen Sie npm install -g firebase-tools aus, um ein Upgrade durchzuführen, wie oben beschrieben.

  1. Autorisieren Sie die Firebase CLI mit dem folgenden Befehl:
$ firebase login
  1. Richten Sie im Verzeichnis „Spell-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 Functions-Verzeichnis

Fügen Sie nun mithilfe des Firebase SDK for Cloud Functions Funktionen hinzu, um das Back-End für das Spiel Rechtschreibung 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 der Funktionscode standardmäßig im Verzeichnis functions. Um Ihnen das zu erleichtern, haben wir bereits die Datei functions/index.js erstellt, in die Ihr Code eingefügt wird. Sehen Sie sich das Verzeichnis functions an, bevor Sie fortfahren.

$ cd functions
$ ls

Der Funktionscode ist ebenfalls eine Node.js-App. Daher ist ein package.json erforderlich, der Informationen zu Ihrer App und eine Liste der Abhängigkeiten enthält.

Wenn Sie mit Node.js nicht vertraut sind, sollten Sie sich damit vertraut machen, bevor Sie mit dem Codelab fortfahren.

In der Datei package.json sind bereits zwei erforderliche Abhängigkeiten aufgelistet: Firebase SDK for Cloud Functions und Firebase Admin SDK. Führen Sie npm install aus dem Verzeichnis functions aus, um sie lokal zu installieren:

$ 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.

Importieren Sie zuerst die erforderlichen Module und schreiben Sie 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

Dieses Codelab umfasst drei Module.

  • Mit dem Modul firebase-functions können wir die Trigger für unsere Cloud Functions-Funktionen schreiben.
  • Mit dem Modul firebase-admin können wir die Firebase-Plattform auf einem Server mit Administratorzugriff verwenden, um beispielsweise in Cloud Firestore zu schreiben.
  • Die Node.js-Auftragsausführungsbibliothek für Actions SDK führt Actions-SDK-Handler für Google Assistant aus.
  1. Installieren Sie das Actions SDK mit dem folgenden npm-Befehl:
$ npm install @assistant/conversation
  1. Ersetzen Sie in der Datei index.js das erste TODO 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 einem anderen Google Cloud-Container bereitgestellt wird. Das passiert, wenn wir in den folgenden Änderungen admin.initializeApp(); 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 mithilfe von Funktionen hinzu, um Assistant Actions zu unterstützen.

7. Funktionen erstellen

Wortdefinitionen abrufen und in Cloud Firestore schreiben

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

Ersetzen Sie in der Datei index.js das TODO 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 jedes Mal ausgelöst wird, wenn in Cloud Firestore ein neues Dokument erstellt wird. Sie ruft die dictionaryapi.dev API auf, um Wortdefinitionen über die getWordDetailsFromDictionaryAPI-Funktion abzurufen, die wir oben geschrieben haben.

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

index.js

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

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

Liste mit Wörtern für das Spiel abrufen

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

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

Wenn du diese Funktion dem speziellen app.handle hinzufügst, kann Assistant darauf zugreifen.

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;
    });
  });
})

Wort aus 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');
});

Aktivieren Sie die Option, dass das Wort wiederholt werden soll.

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');
});

Erfahre die Definition des Wortes

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

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);
});

Antwort des Nutzers auf die Rechtschreibprüfung prüfen

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

Ersetzen Sie in der Datei index.js das TODO 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 spelling-functions-start-Verzeichnisses 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 ActionsOnGoogleFulfillment-Funktion für später. Öffnen Sie die Firebase Console und klicken Sie auf das Projekt spelling-practice, um den Endpunkt abzurufen. Öffnen Sie das Functions-Dashboard, um den Funktionsendpunkt anzusehen.

332cb0437411a242.png

Sie haben alle erforderlichen Funktionen hinzugefügt. Fahren wir mit der Einrichtung von Cloud Firestore fort.

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. Legen Sie zunächst einige grundlegende Datenregeln fest. Klicken Sie auf „Firestore“. Fügen Sie dann auf dem Tab Regeln der Firebase Console die folgenden Regeln hinzu und klicken Sie auf Veröffentlichen.

Mit den folgenden Regeln wird der Datenzugriff auf Nutzer beschränkt, die angemeldet sind. So 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. Cloud Firestore Daten zu Rechtschreibwörtern hinzufügen

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

Cloud Firestore-Daten sind in Sammlungen, Dokumente, Felder und untergeordnete Sammlungen 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 Bereich „Cloud Firestore“ auf.
  2. Klicken Sie auf + Sammlung starten.
  3. Geben Sie im Textfeld Sammlungs-ID den Wert 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 zu Cloud Firestore hinzufügen, wird die Funktion createSpellingPracticeWord ausgelöst, um die Definitionsdetails für das Wort abzurufen. Sie können weitere Wörter hinzufügen (z. B. „Ewigkeit“, „Auto“, „Wahr“, „Erzählen“, „Besser“, „Verkehr“ usw.), 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

Zum Testen der Aktion, 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 dies noch nicht getan haben.
  3. Aktivieren Sie die folgenden Berechtigungen:
  • Web- & App-Aktivitäten
  • Wählen Sie unter Web- und App-Aktivitäten: Wählen Sie das Kästchen neben Auch den Chrome-Verlauf sowie Aktivitäten auf Websites, in Apps und auf Geräten berücksichtigen, die Google-Dienste nutzen aus.

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, das Sie mit der Firebase Console erstellt haben, oder wählen Sie es aus. Der Name dient nur zu Ihrer internen Information. 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 Welche Art von Aktion möchten Sie erstellen? die Karte Benutzerdefiniert aus.
  3. Klicken Sie auf Weiter.
  4. Wählen Sie die Karte Leeres Projekt aus.
  5. Klicken Sie auf Jetzt erstellen.
  6. Geben Sie Rechtschreibübung als Anzeigenamen ein und klicken Sie auf „Speichern“.

Nutzer starten die Unterhaltung mit Ihrer Aktion über eine Aufrufung. Nutzer können Ihre Aktion beispielsweise mit einer Sprachanfrage wie „Hey Google, sprich mit „Rechtschreibtraining““ aufrufen, wobei „Rechtschreibtraining“ der Anzeigename ist.

Ihre Aktion muss einen Anzeigenamen haben, wenn Sie sie in der Produktion bereitstellen möchten. Wenn Sie sie jedoch testen möchten, müssen Sie den Anzeigenamen nicht definieren. Stattdessen können Sie die Aktion "Talk to my test app" (Mit meiner Test-App sprechen) im Simulator verwenden, um die Aktion aufzurufen.

Auftragsausführung konfigurieren

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

So konfigurieren Sie die Auftragsausführung:

  1. Klicken Sie in der Seitennavigation auf Webhook.
  2. Wählen Sie Https-Endpunkt als Auslieferungsoption aus:

d523bf003e96e66f.png

  1. Geben Sie die URL des Endpunkts der Funktion in das Textfeld HTTP-Endpunkt ein und klicken Sie dann auf Speichern.

be53e2cd0d914d54.png

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

Hauptaufruf einrichten

Du musst den Hauptaufruf bearbeiten, um festzulegen, was passiert, nachdem ein Nutzer deine Aktion aufgerufen hat.

Standardmäßig wird in Actions Builder ein generischer Prompt angezeigt, wenn die Aufrufe ausgelöst werden („Erstellen Sie Ihre Aktion, indem Sie die Hauptaufruf-Funktion definieren.“).

So ändern Sie den Prompt, der von Ihrer Aktion an den Nutzer gesendet wird, 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 Begrüßungsnachricht: Welcome to Spelling Practice

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

  1. Klicken Sie auf Speichern.

Hauptaufruf im Simulator testen

Die Actions Console bietet ein Webtool zum Testen Ihrer Aktion, den Simulator. Die Benutzeroberfläche simuliert Hardwaregeräte und ihre Einstellungen. So kannst du dich mit deiner Aktion so unterhalten, als würde sie auf einem Smart Display, einem Smartphone, einem Lautsprecher oder KaiOS ausgeführt werden.

So testen Sie die Hauptaufrufung Ihrer Aktion im Simulator:

  1. Klicken Sie in der oberen Navigationsleiste auf Testen, um den Simulator aufzurufen.
  2. Wenn Sie die Aktion im Simulator aufrufen möchten, geben Sie links oben im Eingabefeld Talk to Spelling Practice ein und drücken Sie die Eingabetaste.

651fc8da1ac9aa0a.png

Wenn Sie die Hauptauslösung Ihrer Aktion auslösen, antwortet Assistant mit Ihrer benutzerdefinierten Begrüßungsnachricht. An dieser Stelle endet die Unterhaltung, nachdem Assistant mit einer Begrüßung geantwortet hat.

Ereignisprotokolle ansehen

Auf dem Tab Test werden im Bereich rechts die Ereignisprotokolle angezeigt, in denen der Konversationsverlauf als Ereignisprotokolle dargestellt wird. Jedes Ereignisprotokoll enthält die Ereignisse, die während dieser Unterhaltungsrunde stattfinden. Klicken Sie auf das graue Symbol vor dem Ereignis, um das Ereignisprotokoll aufzurufen.

Ihre Aktion hat derzeit ein Ereignisprotokoll, das sowohl die Eingabe des Nutzers („Mit dem Übungstool für die Rechtschreibung sprechen“) als auch die Antwort Ihrer Aktion enthält. Der folgende Screenshot zeigt das Ereignisprotokoll deiner Aktion:

a6fb192f94426824.png

11. Unterhaltung für die Rechtschreibübung erstellen

Nachdem Sie festgelegt haben, was passiert, nachdem ein Nutzer Ihre Aktion aufgerufen hat, können Sie den Rest der Unterhaltung für Ihre Aktion erstellen. Buchstabieren üben enthält vier Szenen, die Sie jeweils aktivieren müssen, bevor sie ausgeführt werden können. Die gängigste Methode zum Aktivieren einer Szene besteht darin, die Aktion so zu konfigurieren, dass, wenn ein Nutzer einem Nutzer-Intent in einer Szene entspricht, dieser Intent den Übergang zu einer anderen Szene auslöst und diese aktiviert.

Übergang vom Hauptaufruf zur Startszene

In diesem Abschnitt erstellen Sie eine neue Szene namens Start, über die der Nutzer gefragt wird, ob er Buchstabierübungen spielen möchte. Sie fügen auch einen Übergang vom Hauptaufruf zur neuen Szene Start hinzu.

Gehen Sie folgendermaßen vor, um diese Szene zu erstellen und einen Übergang hinzuzufügen:

  1. Klicken Sie oben in der Navigationsleiste auf Entwickeln. Klicken Sie dann im linken 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 namens Start erstellt und die Aktion wird angewiesen, zur Szene Start zu wechseln, nachdem die Aktion dem Nutzer den Begrüßungsprompt gesendet hat.
  2. Klicken Sie im linken Navigationsbereich auf Szenen, um die Liste der Szenen aufzurufen.
  3. Klicken Sie unter Szenen auf Starten, um sich die Szene Start anzusehen.
  4. Klicken Sie im Abschnitt Beim Eingang 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?

Vorschlags-Chips bieten anklickbare Vorschläge für den Nutzer, die von Ihrer Aktion 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 Bildschirmen zu unterstützen.

So fügen Sie dem Prompt der Szene Start Vorschlags-Chips 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 den Eintrag Suggested Response durch 'Yes'.
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlags-Chip mit den Namen 'No' und 'Help with Phonetics' hinzu. Der Code sollte wie das folgende Snippet aussehen:
  4. Klicken Sie auf Speichern.

5ff2ecdc56801b91.png

Aktion im Simulator testen

An dieser Stelle sollte deine Aktion vom Hauptaufruf zur Szene Start übergehen und den Nutzer fragen, ob er fortfahren möchte. In der simulierten Anzeige sollten auch Vorschlags-Chips angezeigt werden.

So testen Sie Ihre Aktion im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Testen, um den Simulator aufzurufen.
  2. Um die Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice in das Eingabefeld ein.
  3. Drücken Sie die Eingabetaste. Deine Aktion sollte mit der Aufforderung Main invocation und dem hinzugefügten Szenen-Prompt „Willkommen bei der Rechtschreibprüfung“ in Start antworten. Benutze das phonetische Alphabet, um das Wort zu buchstabieren. 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 Vorschlags-Chip Yes, No oder Help with Phonetics, um auf die Aufforderung zu reagieren. Sie können auch Ja oder Nein oder Hilfe zur Aussprache sagen oder Yes oder No oder Help with Phonetics in das Feld Eingabe eingeben.

Wenn Sie auf den Prompt antworten, antwortet Ihre Aktion mit der Meldung, dass sie Ihre Eingabe nicht verstehen kann: „Tut mir leid, das habe ich nicht verstanden. Können Sie es noch einmal versuchen?“ Da du deine Aktion noch nicht so konfiguriert hast, dass sie die Eingaben „Ja“ oder „Nein“ versteht und darauf reagiert, ordnet deine Aktion deine Eingabe einem NO_MATCH-Intent zu.

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

Nein- und Phonetik-Intents hinzufügen

Da Nutzer jetzt auf die Frage Ihrer Aktion antworten können, können Sie Ihre Aktion 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 zur Phonetik“ sagt. und fügen Sie diese Intents der Szene Start hinzu. Wir verwenden den System-Intent yes und erstellen andere Intents.

no-Intent erstellen

Jetzt müssen Sie den Intent no erstellen, um zu verstehen, wenn der Nutzer das Spiel nicht spielen möchte, und entsprechend zu reagieren. So erstellen Sie diesen Intent:

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

98b0c9a7b67ea9b9.png

  1. Klicken Sie auf Speichern.

Intent no zur Szene Start hinzufügen

Jetzt kann die Aktion erkennen, wenn ein Nutzer „Nein“ oder etwas Ähnliches wie „Nein“ sagt, z. B. „Nein“. Sie müssen der Szene Start die Nutzerabsicht no hinzufügen, da der Nutzer auf den Prompt Start („Willkommen beim Übungsprogramm für die Rechtschreibung. Benutze das phonetische Alphabet, um das Wort zu buchstabieren. Beispiel: Alpha für A, Bravo für B, Charlie für C usw. Möchten Sie fortfahren?“).

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

  1. Klicken Sie in der Navigation auf die Szene Start.
  2. Klicken Sie in der Szene Start neben „Behandlung von Nutzerabsichten“ auf das Pluszeichen.
  3. Wählen Sie im Abschnitt Intent aus dem Drop-down-Menü die Option no (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 dem folgenden Snippet ähneln:

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

no-Intent im Simulator testen

An diesem Punkt versteht deine Aktion, wenn der Benutzer 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 Testen.
  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

System-YES-Intent zu Start-Szene hinzufügen

Fügen Sie der Szene Start den SYSTEM-Intent „JA“ hinzu, da der Nutzer auf den Prompt Start („Willkommen beim Übungsprogramm zum Buchstabieren. Sie buchstabieren das Wort im phonetischen Alphabet. Beispiele: Alpha für a, Bravo für b, Karl für c usw. Möchten Sie fortfahren?“

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

  1. Klicken Sie in der Navigation auf die Szene Start.
  2. Klicken Sie in der Szene Start neben User Intent-Verarbeitung auf das Pluszeichen.
  3. Wählen Sie unter „All System Intents“ im Drop-down-Menü „Intent“ die Option 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 Bereich Übergang auf das Drop-down-Menü und wählen Sie Unterhaltung beenden aus.
  3. Klicken Sie auf Speichern.

Intent „YES“ im Simulator testen

An diesem Punkt weiß 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 Testen.
  2. Um die Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice in das Feld Input (Eingabe) ein und drücken die Eingabetaste.
  3. Geben Sie Yes in das Feld Eingabe ein und drücken Sie die Eingabetaste. Alternativ können Sie auf den Vorschlags-Chip Yes klicken.

Ihre Aktion ruft eine Liste aller Wörter für das Rechtschreibtraining ab und speichert sie in der Sitzung. Ihre Aktion beendet dann die Sitzung, weil Sie den Übergang End conversation für den Intent YES ausgewählt haben.

Phonetics-Intent erstellen

So erstellen Sie den Intent Phonetics:

  1. Klicken Sie im Navigationsbereich auf Entwickeln.
  2. Klicken Sie im Navigationsbereich auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste der Intents auf das Pluszeichen. Geben Sie dem neuen Intent den Namen phonetics und drücken Sie die Taste Enter.
  4. Klicken Sie auf den Intent phonetics, um die Intent-Seite phonetics zu öffnen.
  5. Klicken Sie im Bereich „Trainingsformulierungen hinzufügen“ auf das Textfeld Phrase 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-Intent zur Szene Start hinzufügen

Jetzt kann die Aktion erkennen, wenn ein Nutzer den Intent „phonetics“ ausdrückt. Sie können der Szene Start den Nutzerintent phonetics hinzufügen, da der Nutzer auf den Prompt Start („Willkommen beim Übungsprogramm für die Rechtschreibung. Benutze das phonetische Alphabet, um das Wort zu buchstabieren. Beispiele: Alpha für a, Bravo für b, Karl für c usw. Möchten Sie fortfahren?“

So fügen Sie der Szene Start diesen Nutzerabsicht hinzu:

  1. Klicken Sie in der Navigation auf Szene starten.
  2. Klicken Sie in der Szene Start neben „User-Intent-Verarbeitung“ auf das Pluszeichen (+).
  3. Wählen Sie im Drop-down-Menü für den Intent die Option Phonetik aus.

67ee2e08000b2aee.png

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

Übergang von der Start- zur Schreibszene

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

Gehen Sie folgendermaßen vor, um diese Szene zu erstellen und einen Übergang hinzuzufügen:

  1. Klicken Sie im oberen Navigationsbereich auf Develop. Klicken Sie dann links im Navigationsbereich auf Szene starten.
  2. Klicken Sie im Bereich Behandlung der Nutzerabsicht auf when actions.intent.YES is matched und dann rechts im Bereich Übergang auf das Drop-down-Menü. Geben Sie dann 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 JA-Intent zur Szene Spelling zu wechseln.
  4. Maximieren Sie im linken Navigationsbereich Szenen, um die Liste der Szenen aufzurufen.
  5. Klicken Sie unter Szenen auf „Rechtschreibung“, um die Szene Spelling zu sehen.
  6. Klicken Sie im Abschnitt Beim Eingang der Szene Spelling auf +.
  7. Klicken Sie auf Webhook aufrufen und geben Sie in das Textfeld für den Ereignishandler getSpellingWord 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 eigentliche Prompt wird vom Webhook ausgefüllt.

Vorschlags-Chips bieten anklickbare Vorschläge für den Nutzer, die von Ihrer Aktion als Nutzereingabe verarbeitet werden.

So fügen Sie dem Prompt der Szene Spelling Vorschlags-Chips 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 den Eintrag Suggested Response durch 'Repeat'.
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlags-Chip mit dem Titel 'Skip' hinzu.
  4. Fügen Sie mit derselben Formatierung manuell einen Vorschlags-Chip mit dem Titel 'Quit' hinzu. Der Code sollte wie das folgende Snippet 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 im Navigationsbereich auf Develop.
  2. Klicken Sie im Navigationsbereich auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste der Intents auf das Pluszeichen. Geben Sie dem neuen Intent den Namen repeat und drücken Sie die Taste Enter.
  4. Klicken Sie auf den Intent repeat, um die Intent-Seite definition zu öffnen.
  5. Klicken Sie im Abschnitt Add trainingsformulierungen auf das Textfeld Enter Phrase (Wortgruppe 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-Intent zur Szene Spelling hinzufügen

Jetzt kann die Aktion erkennen, wenn ein Nutzer den Intent Wiederholen ausdrückt. Sie können der Szene Spelling den Nutzerintent repeat hinzufügen, da der Nutzer auf den Prompt Spelling („Wort mit dem phonetischen Alphabet buchstabieren“) reagiert.

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

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent processing (Handhabung der Nutzerabsicht) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für die Absicht wiederholen aus.

5cfd623b25bettbed.png

  1. Klicken Sie das Kästchen Webhook aufrufen an und geben Sie in das Textfeld für den Ereignis-Handler repeatSpellingWord ein, um die Wortdefinition abzurufen.
  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 über den Webhook eingefügt.

Vorschlags-Chips zu „Wenn Wiederholung übereinstimmt“ hinzufügen

  1. In Wenn Wiederholungen zugeordnet werden Klicken Sie unter „Umgang mit Nutzer-Intents“ unter dem Code-Editor auf Vorschläge. Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title den Eintrag Suggested Response durch 'Skip'.
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlags-Chip mit dem Titel 'Quit' hinzu. Ihr Code sollte dann in etwa so aussehen:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Klicken Sie auf Speichern.

Intent definition erstellen

So erstellen Sie den Intent definition:

  1. Klicken Sie im Navigationsbereich auf Develop.
  2. Klicken Sie im Navigationsbereich auf Benutzerdefinierte Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste der Intents auf + (Pluszeichen). Geben Sie dem neuen Intent den Namen definition und drücken Sie die Taste Enter.
  4. Klicken Sie auf den Intent definition, um die Seite definition zu öffnen.
  5. Klicken Sie im Abschnitt Add trainingphrase (Trainingsformulierungen hinzufügen) auf das Textfeld Enter Phrase (Wortgruppe 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-Intent zur Szene Spelling hinzufügen

Jetzt kann die Aktion erkennen, wenn ein Nutzer einen Definition-Intent äußert. Sie können der Szene Spelling den Nutzer-Intent definition hinzufügen, da der Nutzer auf den Spelling-Prompt („Buchstabieren des Wortes mit Lautschrift“) antwortet.

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

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User Intent-Verarbeitung auf das Pluszeichen.
  3. Wählen Sie im Drop-down-Menü für die Absicht Definition aus.

646bdcac3ad3eb0c.png

  1. Klicken Sie das Kästchen Webhook aufrufen an und geben Sie in das Textfeld für den Ereignishandler definitionOfSpellingWord ein, um die Wortdefinition abzurufen.
  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 über den Webhook eingefügt.

Vorschlags-Chips zur Webhook-Antwort hinzufügen

  1. Klicken Sie in der Szene Start unter dem Codeeditor auf Vorschläge. Dadurch werden drei Vorschlags-Chips hinzugefügt.
  2. Ersetzen Sie im Feld title den Eintrag Suggested Response durch 'Skip'.
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlags-Chip mit dem Titel 'Quit' hinzu. Ihr Code sollte dann in etwa 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 im Navigationsbereich auf Develop.
  2. Klicken Sie in der Navigation auf Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste der Intents auf das Pluszeichen. Geben Sie dem neuen Intent den Namen skip und drücken Sie Enter.
  4. Klicken Sie auf den Intent skip, um die Seite skip zu öffnen.
  5. Klicken Sie im Abschnitt Add trainingphrase (Trainingsformulierungen hinzufügen) auf das Textfeld Enter Phrase (Wortgruppe eingeben) und geben Sie die folgenden Formulierungen ein:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. Klicken Sie auf Speichern.

Skip-Intent zur Szene Spelling hinzufügen

Jetzt kann die Aktion verstehen, wenn ein Nutzer den Intent "skip" (Überspringen) ausdrückt. Sie können der Szene Spelling den Nutzerintent skip hinzufügen, da der Nutzer auf den Prompt Spelling („Wort mit dem phonetischen Alphabet buchstabieren“) reagiert.

So fügen Sie der Szene Spelling diesen Nutzerabsicht hinzu:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent handling (Behandlung der Nutzerabsicht) auf das Pluszeichen.
  3. Wählen Sie im Drop-down-Menü „Intent“ die Option Ü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.

Intent quit erstellen

So erstellen Sie den Intent Quit:

  1. Klicken Sie im Navigationsbereich auf Entwickeln.
  2. Klicken Sie in der Navigation auf Intents, um die Liste der Intents zu öffnen.
  3. Klicken Sie am Ende der Liste der Intents auf das Pluszeichen. Geben Sie dem neuen Intent den Namen Quit und drücken Sie Enter.
  4. Klicken Sie auf das Dreipunkt-Menü Quit, um die Seite Definition zu öffnen.
  5. Klicken Sie im Bereich Add training phrases (Trainingsformulierungen hinzufügen) auf das Textfeld Enter Phrase (Phrase eingeben) und geben Sie die folgenden Formulierungen ein:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Klicken Sie auf Speichern.

Quit-Intent zur Szene Spelling hinzufügen

Jetzt kann die Aktion erkennen, wenn ein Nutzer den Intent „quit“ (beenden) ausdrückt. Sie können der Szene Spelling den Nutzerintent quit hinzufügen, da der Nutzer auf den Prompt Spelling („Wort mit dem phonetischen Alphabet buchstabieren“) reagiert.

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

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling neben User intent processing (Handhabung der Nutzerabsicht) auf das + (Pluszeichen).
  3. Wählen Sie im Drop-down-Menü für den Intent 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.

Typ phonetic_alphabet erstellen

In diesem Abschnitt erstellen Sie einen neuen Typ namens phonetic_alphabet, der die Optionen des phonetischen Alphabets angibt, die Nutzer zur Aussprache 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 den Typ phonetic_alphabet in eine Anzeigenfläche ein, um anzugeben, dass Sie die Antwort des Nutzers erhalten möchten.

So erstellen Sie den Typ phonetic_alphabet:

  1. Klicken Sie im Navigationsbereich auf Develop.
  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 Arten von Werten unterstützt dieser Typ? die Option Wörter und Synonyme aus.
  6. Geben Sie die folgenden Einträge und entsprechenden Werte im Abschnitt Einträge hinzufügen ein:

a

alpha, apfel, amsterdam

M

Bravo, Butter, Baltimore

C

charlie, katze, casablanca

d

Delta, Hund, Dänemark

e

Echo, Edward, Edison

f

Foxtrot, Fox, Florida

g

Golf, George, Gallipoli

h

hotel, harry, havana

I

Indien, Tinte, Italien

J

juliette, johnny, jerusalem

.000

kilo, king, kilogramme

lima, liebe, london

m

Mike, Geld, Madagaskar

N

november, new york, nancy

O

oscar, orange, oslo

Papa, Paris, Peter

q

Québec, Queen

r

Romeo, Roma, Robert

s

sierra, sugar, santiago

t

Tango, Tommy, Tripoli

u

uniform, umbrella, uncle

V

Victor, Essig, Valencia

w

whiskey, william, washington

x

Röntgen

J

yankee, yellow, yorker

Z

Zulu, Zebra, Zürich

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

5b5a5cd9fa557e1b.png

  1. Klicken Sie auf Speichern.

Slot-Füllung konfigurieren

Als Nächstes müssen Sie die Slot-Füllung in der Rechtschreibszene konfigurieren. So konfigurieren Sie die Logik für die Platzierung von Anzeigen:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung.
  2. Klicken Sie in der Szene Spelling auf das Pluszeichen für die Slot-Füllung.
  3. Geben Sie im Feld Enter slot name (Steckplatznamen eingeben) userresponse als Steckplatznamen ein.
  4. Wählen Sie im Drop-down-Menü Typ auswählen die Option phonetic_alphabet als Steckplatztyp aus.
  5. Setzen Sie ein Häkchen im Kästchen This Slot beinhaltet eine Liste von Werten.
  6. Setzen Sie ein Häkchen bei Dieser Slot ist erforderlich.
  7. Wählen Sie die Option Writeback für Slotwert 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 die 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. scene.slots.status == "FINAL" als Bedingung eingeben
  4. Klicken Sie das Kästchen Call your webhook (Webhook aufrufen) an und geben Sie verifySpellingWord in das Textfeld des Event-Handlers ein, um die Nutzerantwort zu überprüfen.
  5. Klicken Sie das Kästchen Aufforderungen senden an.
  6. Ersetzen Sie den Satz im Feld speech (Enter the response that users will see or hear...) durch {}. Der eigentliche Prompt wird vom Webhook ausgefüllt.

Vorschlags-Chips zur Webhook-Antwort hinzufügen

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

ac3d7a9366ebc1b1.png

  1. Klicken Sie auf Speichern.

12. Rechtschreibübungen im Simulator testen

So testen Sie Ihre Aktion im Simulator:

  1. Klicken Sie in der Navigationsleiste auf Testen, um den Simulator aufzurufen.
  2. Um die Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice in das Eingabefeld ein.
  3. Drücken Sie die Eingabetaste. Deine Aktion sollte mit dem Prompt Main invocation und dem hinzugefügten Szenen-Prompt „Willkommen bei der Rechtschreibprüfung“ in Start antworten. Sie buchstabieren das Wort im phonetischen Alphabet. Beispiele: Alpha für a, Bravo für b, Karl für c usw. Möchten Sie fortfahren?“.
  4. Zum Fortfahren Ja sagen
  5. Der Simulator spielt einen Wortlaut ab, der die Aussprache simuliert
  6. Sie können das Wort mithilfe von phonetischen Alphabeten buchstabieren. Wenn Sie beispielsweise besser sagen oder eingeben möchten, sagen oder tippen Sie „bravo echo tango tango echo romeo“.
  7. Der Simulator antwortet entweder mit der richtigen oder der falschen Antwort.
  8. Sagen Sie weiter, um mit dem nächsten Wort fortzufahren, oder beenden, um den Spiel-Loop zu beenden.

13. Glückwunsch

Herzlichen Glückwunsch, Sie haben Ihr Spiel Spelling Practice erfolgreich erstellt.

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

Behandelte Themen

  • Mit Cloud Firestore interagieren
  • Slots zum Erheben von Daten vom Nutzer verwenden
  • Eingabe eines Nutzers verarbeiten und eine Antwort zurückgeben
  • So fügen Sie einer Szene mithilfe von Bedingungen Logik hinzu
  • Spielschleife hinzufügen

Zusätzliche Lernressourcen

Sie können sich diese Ressourcen ansehen, um mehr über die Erstellung von Actions for Google Assistant zu erfahren:

Projekt bereinigen [empfohlen]

Um mögliche Kosten zu vermeiden, sollten Sie Projekte entfernen, die Sie nicht verwenden möchten. So löschen Sie die in diesem Codelab erstellten Projekte:

  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 in der Google Cloud Console auf der Seite Einstellungen 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.

@ActionsOnGoogle folgen und @Firebase auf Twitter halten wir Sie über unsere neuesten Ankündigungen auf dem Laufenden. Tweeten Sie auch per Tweet an #GoogleIO, um Ihre Arbeit mit anderen zu teilen.