Rechtschreibübungsspiel mit Google Assistant und Cloud Firestore

1. Übersicht

Mit der Google Assistant-Entwicklerplattform können Sie Software erstellen, um die Funktionalität von Google Assistant, einem virtuellen persönlichen Assistenten, auf mehr als 1 Milliarde Geräte zu erweitern, darunter intelligente Lautsprecher, Telefone, Autos, Fernseher, Kopfhörer und mehr. Benutzer beteiligen sich mit dem Assistenten an Gesprächen, um Dinge zu erledigen, beispielsweise Lebensmittel einzukaufen oder eine Fahrt zu buchen. Als Entwickler können Sie die Assistant-Entwicklerplattform nutzen, um auf einfache Weise angenehme und effektive Gesprächserlebnisse zwischen Benutzern und Ihrem eigenen Drittanbieter-Fulfillment-Service zu erstellen und zu verwalten.

Dieses Codelab behandelt Konzepte mittlerer Ebene für die Entwicklung mit Google Assistant, Cloud Functions und Cloud Firestore. In diesem Codelab erstellen Sie ein Spiel namens „Spelling Practice“, das mithilfe von Google Assistant Benutzer auffordert, Wörter zu buchstabieren.

Was Sie bauen werden

In diesem Codelab erstellen Sie ein anspruchsvolles Spiel mit der folgenden Funktionalität:

  • Empfängt Rechtschreibantworten vom Benutzer und ändert je nach Wert die Konversationsaufforderungen
  • Antwortet mit Hinweisen zur Schreibweise des Wortes, etwa seiner Definition oder der Wiederholung des Wortes
  • Erstellt eine Spielschleife, sodass ein Benutzer erneut mit dem Assistenten interagieren kann, nachdem er das Wort geschrieben hat

Bevor Sie mit dem Erstellen beginnen, können Sie mit der Live -Aktion auf Ihrem Google Assistant-fähigen Gerät interagieren, indem Sie „Hey Google, sprechen Sie mit Spelling Practice“ sagen. Der Standardpfad durch diese Aktion für einen wiederkehrenden Benutzer sieht wie die folgende Interaktion aus:

Wenn Sie dieses Codelab abgeschlossen haben, wird Ihre abgeschlossene Aktion den folgenden Konversationsablauf haben:

2e9f94dc0ceafc96.png

Was Sie lernen werden

  • So interagieren Sie mit Cloud Firestore
  • So verwenden Sie Slots, um Daten vom Benutzer zu sammeln
  • So verarbeiten Sie die Eingabe eines Benutzers und geben eine Antwort zurück
  • So verwenden Sie Bedingungen, um einer Szene Logik hinzuzufügen
  • So fügen Sie eine Spielschleife hinzu

Was du brauchen wirst

Die Voraussetzungen für dieses Codelab umfassen Folgendes:

  • Ein Webbrowser wie Google Chrome
  • Eine IDE zum Schreiben von Cloud-Funktionen.
  • Eine Zahlungsmethode. Dieses Codelab nutzt Cloud Functions für Firebase, was erfordert, dass Ihr Projekt im Firebase Blaze-Preisplan enthalten ist ( Weitere Informationen ).
  • Ein Terminal zum Ausführen von Shell-Befehlen
  • Node.js 10 oder höher

2. Holen Sie sich den Funktionscode

Klonen Sie das GitHub-Repository über die Befehlszeile:

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

3. Erstellen Sie ein Firebase-Projekt und richten Sie Ihre App ein

Erstellen Sie ein Firebase-Projekt

  1. Melden Sie sich bei Firebase an.
  2. Klicken Sie in der Firebase-Konsole auf Projekt hinzufügen (oder Projekt erstellen ) und nennen Sie dann Ihr Firebase-Projekt Spelling-Practice .

66ae8d1894f4477.png

  1. Klicken Sie sich durch die Projekterstellungsoptionen. Akzeptieren Sie die Firebase-Bedingungen, 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 finden Sie unter Grundlegendes zu Firebase-Projekten .

Upgraden Sie auf den Blaze-Preisplan

Um Cloud Functions für Firebase nutzen zu können, müssen Sie Ihr Firebase-Projekt auf den Blaze-Preisplan aktualisieren, was bedeutet, dass Sie Ihrem Projekt ein Google Cloud-Rechnungskonto hinzufügen. Hierzu ist die Angabe einer Kreditkarte oder einer anderen Zahlungsmethode erforderlich.

Alle Firebase-Projekte, einschließlich derjenigen im Blaze-Plan, haben weiterhin Zugriff auf die kostenlosen Nutzungskontingente für Cloud Functions. Die in diesem Codelab beschriebenen Schritte fallen innerhalb der kostenlosen Nutzungsgrenzen. 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. Installieren Sie die Firebase-CLI

Mit der Firebase-CLI (Befehlszeilenschnittstelle) können Sie Ihre Cloud-Funktionen bereitstellen.

Abhängig von Ihrem Betriebssystem und Anwendungsfall gibt es mehrere Optionen für die Installation der Firebase-CLI . Die folgenden Schritte beschreiben die häufigste Option, wenn Sie auch Cloud Functions verwenden.

  1. Stellen Sie sicher, dass Sie npm installiert haben, das normalerweise mit Node.js geliefert wird.
  2. Installieren oder aktualisieren Sie die CLI, indem Sie den folgenden npm-Befehl ausführen:
$ npm -g install firebase-tools
  1. Überprüfen Sie, ob die CLI korrekt installiert wurde, indem Sie Folgendes ausführen:
$ firebase --version

Stellen Sie sicher, dass die Version der Firebase-CLI 9.0.0 oder höher ist, damit sie über alle neuesten Funktionen verfügt, die für Cloud Functions erforderlich sind. Wenn nicht, führen Sie npm install -g firebase-tools aus, um das Upgrade wie oben gezeigt durchzuführen.

  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 dann den Anweisungen. Wenn Sie dazu aufgefordert werden, können Sie einen beliebigen Alias ​​auswählen, z. B. codelab .
$ firebase use --add

5. Das Funktionsverzeichnis

Jetzt fügen Sie mithilfe des Firebase SDK für Cloud Functions Funktionen hinzu, um das Backend für das Spiel Spelling Practice zu erstellen.

Cloud Functions ermöglicht es Ihnen, Code in der Cloud auszuführen, ohne einen Server einrichten zu müssen. In diesem Codelab erfahren Sie, wie Sie Funktionen erstellen, die auf Ereignisse der Firebase-Authentifizierung, des Cloud-Speichers und der Firebase-Echtzeitdatenbank reagieren. Beginnen wir mit der Authentifizierung.

Wenn Sie das Firebase SDK für Cloud Functions verwenden, befindet sich Ihr Funktionscode (standardmäßig) im functions . Um es Ihnen einfacher zu machen, haben wir bereits die Datei functions/index.js erstellt, in der Ihr Code abgelegt wird. Werfen Sie einen Blick in das functions , bevor Sie fortfahren.

$ cd functions
$ ls

Ihr Funktionscode ist ebenfalls eine Node.js- App und benötigt daher eine package.json , die einige Informationen über Ihre App bereitstellt und Abhängigkeiten auflistet.

Wenn Sie mit Node.js nicht vertraut sind, ist es hilfreich, mehr darüber zu erfahren, bevor Sie mit dem Codelab fortfahren.

In der Datei package.json sind bereits zwei erforderliche Abhängigkeiten aufgeführt: das Firebase SDK für Cloud Functions und das Firebase Admin SDK . Um sie lokal zu installieren, führen Sie npm install aus dem functions aus:

$ npm install

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

Sie importieren zunächst 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. Importieren Sie die erforderlichen Module

Dieses Codelab erfordert drei Module.

  • Mit dem firebase-functions Modul können wir die Trigger für unsere Cloud-Funktionen schreiben
  • Das firebase-admin Modul ermöglicht es uns, die Firebase-Plattform auf einem Server mit Admin-Zugriff zu nutzen, um beispielsweise in den Cloud Firestore zu schreiben.
  • Die Actions SDK Node.js Fulfillment Library erfüllt Actions SDK-Handler für den Google Assistant.
  1. Installieren Sie das Actions SDK, indem Sie den folgenden npm-Befehl ausführen:
$ npm install @assistant/conversation
  1. Ersetzen Sie in der Datei index.js das erste TODO durch das Folgende.

Diese Änderungen importieren jedes der erforderlichen Module.

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 admin.initializeApp(); in den folgenden Änderungen.

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 hinzu, indem wir Funktionen zur Unterstützung von Assistentenaktionen verwenden.

7. Erstellen Sie Funktionen

Holen Sie sich die Wortdefinitionen und schreiben Sie sie in Cloud Firestore

Sie verwenden die öffentliche API dictionaryapi.dev , 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();
}

Fügen Sie einen Cloud Firestore-Trigger hinzu

Als Nächstes erstellen Sie eine Cloud-Funktion, die immer dann ausgelöst wird, wenn ein neues Dokument in Cloud Firestore erstellt wird. Es ruft die dictionaryapi.dev API auf, um Wortdefinitionen über die Funktion getWordDetailsFromDictionaryAPI 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);
});

Holen Sie sich eine Liste mit Wörtern für das Spiel

Sie können eine Cloud-Funktion schreiben, die eine Liste mit Rechtschreibübungswörtern aus Cloud Firestore für den Assistenten abruft. Hierzu nutzen wir den App-Handler.

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

Das Hinzufügen dieser Funktion zum speziellen app.handle ist eine Möglichkeit, die Funktion über den Assistenten zugänglich zu machen.

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

Erhalten Sie ein Wort aus der Assistentensitzung

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

Ersetzen Sie in der Datei index.js das TODO 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 das Spiel, um das Wort zu wiederholen

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

Ersetzen Sie in der Datei index.js das TODO 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');
});

Holen Sie sich die Definition des Wortes

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

Ersetzen Sie in der Datei index.js das TODO 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);
});

Überprüfen Sie die Rechtschreibantwort des Benutzers

Sie können eine Cloud-Funktion schreiben, die die Antwort des Benutzers auf die Schreibweise des aktuellen Worts für das Spiel ü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);

Stellen Sie alle Ihre Funktionen bereit

Ihre Cloud-Funktionen werden 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

Dies ist die Konsolenausgabe, die Sie sehen sollten:

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 zur späteren Verwendung. Um den Endpunkt zu erhalten, öffnen Sie die Firebase-Konsole und klicken Sie dann auf Rechtschreibübungsprojekt . Öffnen Sie das Funktions-Dashboard, um den Funktionsendpunkt anzuzeigen.

332cb0437411a242.png

Sie haben alle erforderlichen Funktionen hinzugefügt. Kommen wir nun zum Einrichten von Cloud Firestore.

8. Aktivieren Sie Cloud Firestore

Sie müssen Cloud Firestore aktivieren.

Klicken Sie im Build- Bereich der Firebase-Konsole auf Firestore . Klicken Sie dann auf Datenbank erstellen .

5c0b4abf4410ffcf.png

Der Zugriff auf Daten in Cloud Firestore wird durch Sicherheitsregeln gesteuert. Zunächst müssen Sie einige Grundregeln für die Daten festlegen, um loszulegen. Klicken Sie auf Firestore und fügen Sie dann auf der Registerkarte „Regeln“ der Firebase-Konsole die folgenden Regeln hinzu und klicken Sie dann auf „Veröffentlichen“ .

Die folgenden Regeln beschränken den Datenzugriff auf angemeldete Benutzer, wodurch nicht authentifizierte Benutzer am Lesen oder Schreiben gehindert werden.

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. Fügen Sie Daten zu Rechtschreibwörtern zum Cloud Firestore hinzu

In diesem Schritt schreiben Sie Daten zu Rechtschreibwörtern in Cloud Firestore, damit Sie eine Wortliste für den Assistenten (und das Spiel) erstellen 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 vom Wörterbuch-API-Dienst abzurufen.

Erstellen Sie eine Cloud Firestore-Sammlung

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

1b4ccadb90f52f02.png

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

  1. Geben Sie im Textfeld „Dokument-ID“ agreement ein.
  2. Geben Sie im Textfeld „ Feldword und im Textfeld „Wert “ „ agreement ein.
  3. Klicken Sie auf Speichern .

379037e011e8511e.png

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

10. Richten Sie Google Assistant ein

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

Überprüfen Sie Ihre Google-Berechtigungseinstellungen

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. Um Berechtigungen zu aktivieren, führen Sie die folgenden Schritte aus:

  1. Gehen Sie zur Seite Aktivitätskontrollen .
  2. Melden Sie sich mit Ihrem Google-Konto an, falls Sie dies noch nicht getan haben.
  3. Aktivieren Sie die folgenden Berechtigungen:
  • Web- und App-Aktivitäten
  • Aktivieren Sie unter „Web- und App-Aktivität“ das Kontrollkästchen neben „Chrome-Verlauf und Aktivität von Websites, Apps und Geräten einbeziehen, die Google-Dienste nutzen“ .

c988e1e639e6d6e1.png

Erstellen Sie ein Actions-Projekt

Ihr Actions-Projekt ist ein Container für Ihre Aktion. Führen Sie die folgenden Schritte aus, um Ihr Aktionsprojekt für dieses Codelab zu erstellen:

  1. Öffnen Sie die Aktionskonsole .
  2. Klicken Sie auf Neues Projekt .
  3. Akzeptieren Sie die Nutzungsbedingungen

b174d45710b8086b.png

  1. Geben Sie spelling-practice-codelab ein oder wählen Sie es aus, das Sie mit der Firebase Console erstellt haben. (Der Name dient 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. Im Feld Welche Art von Aktion möchten Sie erstellen? Wählen Sie auf dem Bildschirm die benutzerdefinierte Karte aus.
  3. Weiter klicken .
  4. Wählen Sie die leere Projektkarte aus.
  5. Klicken Sie auf „Bau starten“ .
  6. Geben Sie die Rechtschreibprüfung für den Anzeigenamen ein und klicken Sie auf „Speichern“.

Benutzer beginnen die Konversation mit Ihrer Aktion durch Aufruf . Beispielsweise können Benutzer Ihre Aktion aufrufen, indem sie einen Satz wie „Hey Google, sprechen Sie mit Spelling Practice“ sagen, wobei Spelling Practice der Anzeigename ist.

Ihre Aktion muss einen Anzeigenamen haben, wenn Sie sie in der Produktion bereitstellen möchten. Um Ihre Aktion zu testen, müssen Sie jedoch keinen Anzeigenamen definieren. Stattdessen können Sie im Simulator den Satz „Mit meiner Test-App sprechen“ verwenden, um Ihre Aktion aufzurufen.

Konfigurieren Sie die Erfüllung

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

Um Ihr Fulfillment zu konfigurieren, befolgen Sie diese Schritte:

  1. Klicken Sie in der Seitennavigation auf Webhook .
  2. Wählen Sie HTTP-Endpunkt als Erfüllungsoption:

d523bf003e96e66f.png

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

be53e2cd0d914d54.png

Im nächsten Abschnitt passen Sie die Eingabeaufforderung für Ihren Hauptaufruf in der Aktionskonsole an.

Hauptaufruf einrichten

Sie müssen den Hauptaufruf bearbeiten, um zu definieren, was passiert, nachdem ein Benutzer Ihre Aktion aufruft.

Standardmäßig stellt Actions Builder eine generische Eingabeaufforderung bereit, wenn Ihr Aufruf ausgelöst wird ( „Beginnen Sie mit dem Erstellen Ihrer Aktion, indem Sie den Hauptaufruf definieren.“).

Um die Eingabeaufforderung zu ändern, die Ihre Aktion an den Benutzer zurücksendet, wenn dieser Ihre Aktion aufruft, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf Hauptaufruf .

9ff088c04c995cde.png

  1. Aktivieren Sie Call your webhook und fügen Sie den Event-Handler-Namen getSpellingWordList in das Textfeld ein.
  2. Ersetzen Sie im Code-Editor den Text im speech durch die folgende Willkommensnachricht: Welcome to Spelling Practice

Hinweis: Sie können zum Bearbeiten Ihrer Eingabeaufforderungen entweder die YAML- oder die JSON- Formatierung verwenden.

  1. Klicken Sie auf Speichern .

Testen Sie den Hauptaufruf im Simulator

Die Actions-Konsole bietet ein Webtool zum Testen Ihrer Aktion namens Simulator . Die Schnittstelle simuliert Hardwaregeräte und deren Einstellungen, sodass Sie mit Ihrer Aktion kommunizieren können, als ob sie auf einem Smart Display, einem Telefon, einem Lautsprecher oder KaiOS ausgeführt würde.

Führen Sie die folgenden Schritte aus, um den Hauptaufruf Ihrer Aktion im Simulator zu testen:

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

651fc8da1ac9aa0a.png

Wenn Sie den Hauptaufruf Ihrer Aktion auslösen, antwortet der Assistent mit Ihrer individuellen Willkommensnachricht. An diesem Punkt endet das Gespräch, nachdem der Assistent mit einer Begrüßung antwortet.

Ereignisprotokolle anzeigen

Wenn Sie sich auf der Registerkarte „Test“ befinden, werden im rechten Bereich die Ereignisprotokolle angezeigt, die den Konversationsverlauf als Ereignisprotokolle anzeigen. In jedem Ereignisprotokoll werden die Ereignisse angezeigt, die während dieser Konversationsrunde aufgetreten sind. Um das Ereignisprotokoll anzuzeigen, klicken Sie auf das graue Symbol vor dem Ereignis.

Ihre Aktion verfügt derzeit über ein Ereignisprotokoll, das sowohl die Benutzereingabe ( „Talk to Spelling Practice“ ) als auch die Antwort Ihrer Aktion anzeigt. Der folgende Screenshot zeigt das Ereignisprotokoll Ihrer Aktion:

a6fb192f94426824.png

11. Bauen Sie das Gespräch zum Üben der Rechtschreibung auf

Nachdem Sie nun definiert haben, was passiert, nachdem ein Benutzer Ihre Aktion aufruft, können Sie den Rest der Konversation Ihrer Aktion aufbauen. Spelling Practice hat vier Szenen und Sie müssen jede Szene aktivieren, bevor sie ausgeführt werden kann. Die gebräuchlichste Methode zum Aktivieren einer Szene besteht darin, Ihre Aktion so zu konfigurieren, dass, wenn ein Benutzer mit einer Benutzerabsicht innerhalb einer Szene übereinstimmt, diese Absicht 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 , die eine Eingabeaufforderung an den Benutzer sendet, in der er gefragt wird, ob er mit dem Spielen von Spelling Practice beginnen möchte. Sie fügen außerdem einen Übergang vom Hauptaufruf zur neuen Start hinzu.

Um diese Szene zu erstellen und ihr einen Übergang hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der oberen Navigation auf „Entwickeln“ . Klicken Sie dann im linken Navigationsbereich auf Hauptaufruf .
  2. Klicken Sie im Abschnitt „Übergang“ auf der rechten Seite auf das Dropdown-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 die Aktion angewiesen, zur Start überzugehen, nachdem die Aktion dem Benutzer die Begrüßungsaufforderung übermittelt hat.
  2. Klicken Sie im linken Navigationsbereich auf Szenen , um die Liste der Szenen anzuzeigen.
  3. Klicken Sie unter Szenen auf Start , um die Start anzuzeigen.
  4. Klicken Sie im Abschnitt „Bei Eingabe“ der Start auf + .
  5. Wählen Sie Aufforderungen senden aus.
  6. Ersetzen Sie den Satz im speech ( Enter the response that users will see or hear... ) durch eine Frage an den Benutzer: 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 Benutzer anklickbare Vorschläge, die Ihre Aktion als Benutzereingabe verarbeitet. In diesem Abschnitt fügen Sie Vorschlagschips hinzu, die unter der soeben konfigurierten Eingabeaufforderung angezeigt werden ( Do you want to play

Spelling Practice

? ), um Benutzer auf Geräten mit Bildschirmen zu unterstützen.

Um der Eingabeaufforderung der Start Vorschlagschips hinzuzufügen, gehen Sie folgendermaßen vor:

  1. Klicken Sie in der Start unter dem Code-Editor auf Vorschläge. Diese Aktion fügt einen einzelnen Vorschlagschip hinzu.
  2. Ersetzen Sie im title Suggested Response durch 'Yes' .
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlagschip mit den Titeln 'No' und 'Help with Phonetics' hinzu. Ihr Code sollte wie das folgende Snippet aussehen:
  4. Klicken Sie auf Speichern .

5ff2ecdc56801b91.png

Testen Sie Ihre Aktion im Simulator

An diesem Punkt sollte Ihre Aktion vom Hauptaufruf zur Startszene übergehen und den Benutzer fragen, ob er fortfahren möchte. In der simulierten Anzeige sollten auch Vorschlagschips erscheinen.

Um Ihre Aktion im Simulator zu testen, gehen Sie folgendermaßen vor:

  1. Klicken Sie in der Navigationsleiste auf Test , um zum Simulator zu gelangen.
  2. Um Ihre Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice in das Eingabefeld ein.
  3. Drücken Sie Enter . Ihre Aktion sollte mit der Main invocation und der hinzugefügten Start „Willkommen bei der Rechtschreibübung“ antworten. Verwenden Sie das phonetische Alphabet, um das Wort zu buchstabieren. Zum Beispiel Alpha für a, Bravo für b, Charlie für c usw. Möchten Sie? weitermachen?" .

Der folgende Screenshot zeigt diese Interaktion:

338c9570b02a618e.png

  1. Klicken Sie auf den Vorschlagschip Yes , No oder Help with Phonetics um auf die Eingabeaufforderung zu antworten. (Sie können auch „Ja“ oder „Nein“ oder „Hilfe zur Phonetik“ sagen oder Yes “ oder No “ oder Help with Phonetics in das Eingabefeld eingeben.)

Wenn Sie auf die Eingabeaufforderung antworten, antwortet Ihre Aktion mit einer Meldung, die darauf hinweist, dass sie Ihre Eingabe nicht verstehen kann: „Das habe ich leider nicht verstanden. Können Sie es noch einmal versuchen?“ Da Sie Ihre Aktion noch nicht so konfiguriert haben, dass sie „Ja“- oder „Nein“ -Eingaben versteht und darauf reagiert, ordnet Ihre Aktion Ihre Eingabe einer NO_MATCH Absicht zu.

Standardmäßig stellt die Systemabsicht NO_MATCH generische Antworten bereit. Sie können diese Antworten jedoch anpassen, um dem Benutzer anzuzeigen, dass Sie seine Eingaben nicht verstanden haben. Der Assistent beendet die Konversation des Benutzers mit Ihrer Aktion, nachdem die Benutzereingabe dreimal nicht mit der Benutzereingabe übereinstimmt.

Fügen Sie „Nein“ und „Phonetikabsichten“ hinzu

Da Benutzer nun auf die von Ihrer Aktion gestellte Frage antworten können, können Sie Ihre Aktion so konfigurieren, dass sie die Antworten der Benutzer versteht ( „Ja“ oder „Nein“ oder „Hilfe zur Phonetik“ ). In den folgenden Abschnitten erstellen Sie Benutzerabsichten, die abgeglichen werden, wenn der Benutzer „Ja“ oder „Nein“ oder „Hilfe zur Phonetik“ sagt, und fügen diese Absichten der Start hinzu. Wir werden die Systemabsicht yes verwenden und andere Absichten erstellen.

Erstellen Sie no Absicht

Jetzt müssen Sie die no schaffen, den Benutzer zu verstehen und darauf zu reagieren, wenn er das Spiel nicht spielen möchte. Um diese Absicht zu erstellen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf „Entwickeln“ .
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Absichten , um die Liste der Absichten zu öffnen.
  3. Klicken Sie am Ende der Absichtsliste auf + (Pluszeichen) . Benennen Sie die neue Absicht no und drücken Sie die Eingabetaste .
  4. Klicken Sie auf „Nein“ , um die Seite no Absicht“ zu öffnen.
  5. Klicken Sie im Abschnitt „Trainingsphrasen hinzufügen“ in das Textfeld „Phrase eingeben“ und geben Sie die folgenden Phrasen ein:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. Klicken Sie auf Speichern .

Fügen Sie der Start no Absicht hinzu

Jetzt kann die Aktion verstehen, wenn ein Benutzer „Nein“ oder etwas Ähnliches wie „Nein“ wie „Nein“ ausdrückt. Sie müssen die Absicht no Benutzer“ zur Start hinzufügen, da der Benutzer auf die Start reagiert („ Willkommen bei der Rechtschreibübung. Verwenden Sie das phonetische Alphabet, um das Wort zu buchstabieren. Zum Beispiel Alpha für a, Bravo für b, Charlie für c usw. Möchten Sie fortfahren?" ).

Um diese Absicht für die Start hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf die Startszene .
  2. Klicken Sie in der Start neben „Benutzerabsichtsbehandlung “ auf das Pluszeichen „+“ .
  3. Wählen Sie im Abschnitt „Absicht“ im Dropdown-Menü „Nein“ aus.

51f752e78c8b4942.png

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

Der Code in Ihrem Editor sollte wie das folgende Snippet aussehen:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. Wählen Sie im Abschnitt „Übergang“ die Option „Konversation beenden“ aus der Dropdown-Liste aus.
  2. Klicken Sie auf Speichern .

Testen Sie no Absicht im Simulator

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

Um diese Absicht im Simulator zu testen, gehen Sie folgendermaßen vor:

  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 Eingabefeld ein und drücken Sie die Eingabetaste. Klicken Sie alternativ auf das Feld „Kein Vorschlag“.

7727a456b522f31b.png

Fügen Sie der Start die Systemabsicht YES hinzu

Jetzt fügen wir der Start die SYSTEM- Absicht „YES“ hinzu, da der Benutzer auf die Start mit „ Willkommen bei der Rechtschreibübung“ antwortet. Verwenden Sie das phonetische Alphabet, um das Wort zu buchstabieren. Zum Beispiel Alpha für a, Bravo für b, charlie für c usw. Möchten Sie fortfahren?

Um diese Benutzerabsicht zur Start hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf die Startszene .
  2. Klicken Sie in der Start neben Benutzerabsichtsbehandlung auf das + (Pluszeichen) .
  3. Wählen Sie unter „Alle Systemabsichten“ im Dropdown-Menü „Absicht“ die Option JA aus.

f6cbe789cde49e8f.png

  1. Klicken Sie auf „Call your webhook“ und aktualisieren Sie das event handler Textfeld mit der Funktion, die Sie zuvor erstellt haben: getSpellingWordList
  2. Klicken Sie im Abschnitt „Übergang“ auf das Dropdown-Menü und wählen Sie „Konversation beenden“ aus.
  3. Klicken Sie auf Speichern .

Testen Sie YES Absicht im Simulator

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

Um diese Absicht im Simulator zu testen, gehen Sie folgendermaßen vor:

  1. Klicken Sie in der Navigationsleiste auf Testen .
  2. Um Ihre Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice in das Eingabefeld ein und drücken Sie die Eingabetaste .
  3. Geben Sie Yes in das Eingabefeld ein und drücken Sie die Eingabetaste . Alternativ können Sie auch auf den Vorschlagschip Yes klicken.

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

Erstellen Sie Phonetics Absicht

Um die Phonetics Absicht zu erstellen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf „Entwickeln“ .
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Absichten , um die Liste der Absichten zu öffnen.
  3. Klicken Sie am Ende der Absichtsliste auf + (Pluszeichen) . Benennen Sie die neue phonetics und drücken Sie Enter .
  4. Klicken Sie auf die phonetics , um die Seite mit der phonetics zu öffnen.
  5. Klicken Sie im Abschnitt „Trainingsphrasen hinzufügen“ auf das Textfeld „Phrase eingeben“ und geben Sie die folgenden Phrasen ein:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Klicken Sie auf Speichern .

Fügen Sie der Start phonetics Absicht hinzu

Jetzt kann die Aktion verstehen, wenn ein Benutzer eine „phonetische“ Absicht zum Ausdruck bringt. Sie können die phonetics Benutzerabsicht zur Start hinzufügen, da der Benutzer auf die Start reagiert („ Willkommen bei der Rechtschreibübung. Verwenden Sie das phonetische Alphabet, um das Wort zu buchstabieren. Zum Beispiel Alpha für a, Bravo für b, Charlie für c usw. Möchten Sie fortfahren?" ).

Um diese Benutzerabsicht zur Start hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf die Startszene .
  2. Klicken Sie in der Start neben „Benutzerabsichtsbehandlung“ auf das Pluszeichen „+“.
  3. Wählen Sie im Absichts-Dropdown die Phonetik aus.

67ee2e08000b2aee.png

  1. Klicken Sie im Abschnitt „Übergang“ auf das Dropdown-Menü und wählen Sie „Konversation beenden“ aus.
  2. Klicken Sie auf Speichern .

Übergang von der Startszene zur Rechtschreibszene

In diesem Abschnitt erstellen Sie eine neue Szene namens Spelling , die eine Aufforderung an den Benutzer sendet, das Wort mit dem phonetischen Alphabet zu buchstabieren.

Um diese Szene zu erstellen und ihr einen Übergang hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der oberen Navigation auf „Entwickeln“ . Klicken Sie dann im linken Navigationsbereich auf Szene starten .
  2. Klicken Sie im Abschnitt „Handhabung von Benutzerabsichten“ when actions.intent.YES is matched und klicken Sie rechts im Übergangsabschnitt auf das Dropdown-Menü und 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 angewiesen, nach dem Abgleich mit der Absicht YES zur Spelling Szene überzugehen.
  4. Erweitern Sie Szenen in der linken Navigation, um die Liste der Szenen anzuzeigen.
  5. Klicken Sie unter Szenen auf Spelling, um die Spelling Szene anzuzeigen.
  6. Klicken Sie im Bereich „Bei Eingabe“ der Szene Spelling auf + .
  7. Klicken Sie auf Webhook aufrufen und geben Sie getSpellingWord in das Textfeld des Ereignishandlers ein.
  8. Wählen Sie Aufforderungen senden aus.
  9. Ersetzen Sie den Satz im speech ( Enter the response that users will see or hear... ) durch {} . Die eigentliche Eingabeaufforderung wird vom Webhook ausgefüllt.

Vorschlagschips bieten dem Benutzer anklickbare Vorschläge, die Ihre Aktion als Benutzereingabe verarbeitet.

Gehen Sie folgendermaßen vor, um der Eingabeaufforderung der Spelling Vorschlagschips hinzuzufügen:

  1. Klicken Sie in der Szene Spelling auf „Vorschläge“ unter dem Code-Editor. Diese Aktion fügt drei Vorschlagschips hinzu.
  2. Ersetzen Sie im title Suggested Response “ durch 'Repeat' .
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlagschip mit dem Titel 'Skip' hinzu.
  4. Fügen Sie mit derselben Formatierung manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu. Ihr Code sollte wie das folgende Snippet aussehen:
  5. Klicken Sie auf Speichern .
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Erstellen Sie Repeat

Um die repeat zu erstellen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf „Entwickeln“ .
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Absichten , um die Liste der Absichten zu öffnen.
  3. Klicken Sie am Ende der Absichtsliste auf + (Pluszeichen) . Benennen Sie die neue repeat und drücken Sie Enter .
  4. Klicken Sie auf die repeat , um die Seite mit der definition zu öffnen.
  5. Klicken Sie im Abschnitt „Trainingsphrasen hinzufügen“ auf das Textfeld „Phrase eingeben“ und geben Sie die folgenden Phrasen ein:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. Klicken Sie auf Speichern .

Fügen Sie der Spelling repeat hinzu

Jetzt kann die Aktion verstehen, wenn ein Benutzer eine „Wiederholungsabsicht“ zum Ausdruck bringt. Sie können die repeat Benutzerabsicht zur Spelling hinzufügen, da der Benutzer auf die Spelling reagiert („ Buchstabieren Sie das Wort mit phonetischem Alphabet “).

Um diese Benutzerabsicht zur Spelling hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf die Szene Rechtschreibung .
  2. Klicken Sie in der Szene Spelling “ neben „Benutzerabsichtsbehandlung“ auf das Pluszeichen „+“ .
  3. Wählen Sie im Dropdown-Menü „Absicht“ die Option „Wiederholen“ aus.

5cfd623b25bedbed.png

  1. Aktivieren Sie „Rufen Sie Ihren Webhook auf“ und geben Sie „repeatSpellingWord“ in das Event-Handler-Textfeld ein, um die Wortdefinition zu erhalten.
  2. Aktivieren Sie „Eingabeaufforderungen senden“ .
  3. Ersetzen Sie den Satz im speech ( Enter the response that users will see or hear... ) durch ''. Die eigentliche Eingabeaufforderung wird vom Webhook ausgefüllt.

Vorschlagschips zu „Wenn Wiederholung übereinstimmt“ hinzufügen

  1. Klicken Sie unter „ Wenn Wiederholung übereinstimmt “ unter Benutzerabsichtsbehandlung auf Vorschläge unter dem Code-Editor. Diese Aktion fügt drei Vorschlagschips hinzu.
  2. Ersetzen Sie im title Suggested Response “ durch 'Skip' .
  3. Fügen Sie mit derselben Formatierung manuell einen Vorschlagschip mit dem Titel 'Quit' hinzu. Ihr Code sollte wie das folgende Snippet aussehen:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Klicken Sie auf Speichern.

definition erstellen

Um die definition zu erstellen, führen Sie die folgenden Schritte aus:

  1. Klicken Sie in der Navigation auf „Entwickeln“ .
  2. Klicken Sie in der Navigation auf Benutzerdefinierte Absichten , um die Liste der Absichten zu öffnen.
  3. Klicken Sie am Ende der Absichtsliste auf + (Pluszeichen) . Benennen Sie die neue definition und drücken Sie Enter .
  4. Klicken Sie auf die definition , um die Seite mit der definition zu öffnen.
  5. Klicken Sie im Abschnitt „Trainingsphrasen hinzufügen“ auf das Textfeld „Phrase eingeben“ und geben Sie die folgenden Phrasen 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 .

Fügen Sie der Spelling definition hinzu

Jetzt kann die Aktion verstehen, wann ein Benutzer eine „Definitions“ -Absicht zum Ausdruck bringt. Sie können die definition der Benutzerabsicht zur Spelling hinzufügen, da der Benutzer auf die Spelling reagiert („ Buchstabieren Sie das Wort mit phonetischem Alphabet “).

Befolgen Sie die folgenden Schritte, um diese Benutzerabsicht in die Spelling hinzuzufügen:

  1. Klicken Sie in der Navigation auf die Rechtschreibszene .
  2. Klicken Sie in der Spelling neben dem Umgang mit Benutzerabsichten auf das + (Plus -Zeichen) .
  3. Wählen Sie Definition in der Dropdown-Absicht.

646BDCAC3AD3EB0C.PNG

  1. Überprüfen Sie den Anruf in Ihrem Webhook und geben Sie DefinitionsOfSpellingWord im Ereignis -Handler -Textfeld ein, um die Wortdefinition zu erhalten.
  2. Überprüfen Sie die Eingabeaufforderungen .
  3. Ersetzen Sie den Satz im speech ( Enter the response that users will see or hear... ) durch ''. Die tatsächliche Eingabeaufforderung wird von Webhook besiedelt.

Fügen Sie der Webhook -Antwort Vorschlag -Chips hinzu

  1. Klicken Sie in der Start auf Vorschläge unter dem Code -Editor. Diese Aktion fügt drei Vorschlag -Chips hinzu.
  2. Ersetzen Sie im title Suggested Response durch 'Skip' .
  3. Fügen Sie mit derselben Formatierung einen Vorschlag -Chip mit dem Titel 'Quit' manuell hinzu. Ihr Code sollte wie das folgende Snippet aussehen:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Klicken Sie auf Speichern .

Überspringen Sie skip Absicht

Befolgen Sie die folgenden Schritte, um die skip zu erstellen:

  1. Klicken Sie in der Navigation auf Entwicklung .
  2. Klicken Sie in der Navigation auf Absichten , um die Absichtenliste zu öffnen.
  3. Klicken Sie am Ende der Absichtenliste + (plus Zeichen) . Nennen Sie die neue Absicht skip und drücken Sie Enter .
  4. Klicken Sie auf die Absicht skip , um die Seite skip " zu öffnen.
  5. Klicken Sie im Abschnitt "Trainingsphrasen hinzufügen" auf das Textfeld eingeben und die folgenden Phrasen eingeben:
  • next word
  • go next
  • next
  • skip
  • skip word

D1C4908A3D7882F8.png

  1. Klicken Sie auf Speichern .

Fügen Sie Skip Absicht in die Spelling hinzu

Jetzt kann die Aktion verstehen, wenn ein Benutzer eine "Übersprung" -Absicht zum Ausdruck bringt. Sie können die Spelling skip , da der Benutzer auf die Spelling reagiert (" Das Wort mit phonetischem Alphabet buchstabieren ").

Befolgen Sie die folgenden Schritte, um diese Benutzerabsicht in die Spelling hinzuzufügen:

  1. Klicken Sie in der Navigation auf die Rechtschreibszene .
  2. Klicken Sie in der Spelling neben dem Benutzerabsichten Handlin G auf das + (plus Zeichen) .
  3. Wählen Sie in der Dropdown-Absicht überspringen .

5465f97542217964.png

  1. Klicken Sie im Abschnitt Übergang rechts auf das Dropdown-Menü und wählen Sie Spelling .

C8072485CA82BD3F.PNG

  1. Klicken Sie auf Speichern .

Erstellen Sie die Absicht quit

Befolgen Sie die folgenden Schritte, um die Absicht der Quit zu erstellen:

  1. Klicken Sie in der Navigation auf Entwicklung .
  2. Klicken Sie in der Navigation auf Absichten , um die Absichtenliste zu öffnen.
  3. Klicken Sie am Ende der Absichtenliste + (plus Zeichen) . Nennen Sie die neue Absicht Quit und drücken Sie Enter .
  4. Klicken Sie auf die Absicht der Quit , um die Seite Definition intent zu öffnen.
  5. Klicken Sie im Abschnitt "Trainingsphrasen hinzufügen" auf das Textfeld eingeben und die folgenden Phrasen eingeben:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Klicken Sie auf Speichern.

Fügen Sie Quit Absicht der Spelling hinzu, die Szene zu beenden

Jetzt kann die Aktion verstehen, wenn ein Benutzer eine Absicht "Beendigung" ausdrückt. Sie können die Absicht der quit der Spelling hinzufügen, da der Benutzer auf die Spelling reagiert (" Das Wort mit phonetischem Alphabet buchstabieren ").

Befolgen Sie die folgenden Schritte, um diese Benutzerabsicht in die Spelling hinzuzufügen:

  1. Klicken Sie in der Navigation auf die Rechtschreibszene .
  2. Klicken Sie in der Spelling neben dem Umgang mit Benutzerabsichten auf das + (Plus -Zeichen) .
  3. Wählen Sie in der Dropdown-Absichts-Absicht aus .

5f62fb18a3653d66.png

  1. Klicken Sie im Abschnitt Übergang rechts auf das Dropdown-Menü und wählen Sie End conversation . 1ffbe35A7BBBBB4B0.PNG
  2. Klicken Sie auf Speichern .

Erstellen Sie einen phonetic_alphabet -Typ

In diesem Abschnitt erstellen Sie einen neuen Typ namens phonetic_alphabet , der die phonetischen Alphabetoptionen angibt, die die Benutzer das Wort buchstabieren können. Sie können auch einige Synonyme für diese Optionen definieren, falls ein Benutzer etwas Ähnliches sagt. In einem späteren Abschnitt fügen Sie einen Slot des phonetic_alphabet hinzu, um anzugeben, dass Sie die Antwort des Benutzers erhalten möchten.

Befolgen Sie die folgenden Schritte, um den Typ phonetic_alphabet zu erstellen:

  1. Klicken Sie in der Navigation auf Entwicklung .
  2. Klicken Sie unter Typen auf das + (plus Zeichen) .
  3. Geben Sie phonetic_alphabet ein und drücken Sie Enter .
  4. Klicken Sie auf phonetic_alphabet , um die Optionen zu öffnen.
  5. In welcher Art von Werten unterstützt dieser Typ? Abschnitt, wählen Sie die Option Wörter und Synonyme aus
  6. Geben Sie die folgenden Einträge und entsprechenden Werte in den Abschnitt "Einträge hinzufügen" ein:

A

Alpha, Apple, Amsterdam

B

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, Havanna

ich

Indien, Tinte, Italien

J

Juliette, Johnny, Jerusalem

k

Kilo, König, Kilogramm

l

Lima, Liebe, London

M

Mike, Geld, Madagaskar

N

November, New York, Nancy

Ö

Oscar, Orange, Oslo

P

Papa, Paris, Peter

Q

Quebec, Königin

R

Romeo, Roma, Robert

S

Sierra, Zucker, Santiago

T

Tango, Tommy, Tripolis

u

Uniform, Regenschirm, Onkel

v

Victor, Essig, Valencia

w

Whisky, William, Washington

X

Röntgenaufnahme

y

Yankee, Gelb, Yorker

z

Zulu, Zebra, Zürich

Ihre Schlüsselwerttabelle sollte wie Folgendes aussehen:

5B5A5CD9FA557E1B.PNG

  1. Klicken Sie auf Speichern .

Konfigurieren Sie die Schlitzfüllung

Als nächstes müssen Sie die Slot -Füllung in der Rechtschreibszene konfigurieren. Befolgen Sie die folgenden Schritte, um die Logik mit Slotfüllung zu konfigurieren:

  1. Klicken Sie in der Navigation auf die Rechtschreibszene .
  2. Klicken Sie in der Spelling auf das + (plus Zeichen) für die Schlitzfüllung .
  3. Fügen Sie im Feld Slot -Name userresponse als Slot -Name hinzu.
  4. Wählen Sie in der Dropdown- Art-Art von Typ Phonetic_alphabet als Steckplatztyp aus.
  5. Überprüfen Sie , ob dieser Slot eine Liste von Werten akzeptiert
  6. Überprüfen Sie, ob dieser Steckplatz erforderlich ist .
  7. Wählen Sie die Option "Slot Value Reportback anpassen" und geben Sie die USERResponse in das Session -Parameter -Textfeld ein.

BA57A419877A07F3.PNG

  1. Klicken Sie auf Speichern .

Fügen Sie dem Spelling den Zustand hinzu

Um der Spelling Bedingung hinzuzufügen, befolgen Sie die folgenden Schritte:

  1. Klicken Sie in der Navigation auf die Rechtschreibszene .
  2. Klicken Sie in der Spelling neben dem Zustand auf das + (plus Zeichen) .
  3. Geben Sie scene.slots.status == "FINAL" als Bedingung ein
  4. Überprüfen Sie das Event -Handler -Textfeld , um die Benutzerantwort zu überprüfen.
  5. Überprüfen Sie die Eingabeaufforderungen.
  6. Ersetzen Sie den Satz im speech ( Enter the response that users will see or hear... ) durch {} . Die tatsächliche Eingabeaufforderung wird von Webhook besiedelt.

Fügen Sie der Webhook -Antwort Vorschlag -Chips hinzu

  1. Klicken Sie in der Start auf Vorschläge unter dem Code -Editor. Diese Aktion fügt drei Vorschlag -Chips hinzu.
  2. Ersetzen Sie im title Suggested Response durch 'Next' .
  3. Fügen Sie mit derselben Formatierung einen Vorschlag -Chip mit dem Titel 'Quit' manuell hinzu. Ihr Code sollte wie das folgende Snippet aussehen:
suggestions:
      - title: 'Next'
      - title: 'Quit'

AC3D7A9366EBC1B1.PNG

  1. Klicken Sie auf Speichern .

12. Rechtschreibpraxis im Simulator

Befolgen Sie die folgenden Schritte, um Ihre Aktion im Simulator zu testen:

  1. Klicken Sie in der Navigationsleiste auf Test , um Sie zum Simulator zu bringen.
  2. Um Ihre Aktion im Simulator zu testen, geben Sie Talk to Spelling Practice im Eingabebuch.
  3. Drücken Sie Enter . Ihre Aktion sollte mit der Eingabeaufforderung der Main invocation und der hinzugefügten Start -Eingabeaufforderung reagieren. weitermachen?" .
  4. Sag Ja, um fortzufahren
  5. Simulator spielt ein Wortklang zum Zauber
  6. Sie können das Wort mit phonetischen Alphabeten buchstabieren. Zum Beispiel besser sagen oder tippen "Bravo Echo Tango Tango Echo Romeo"
  7. Simulator antwortet entweder mit der richtigen oder falschen Antwort.
  8. Sagen Sie als nächstes , um das nächste Wort fortzusetzen oder zu beenden, um die Spielschleife zu verlassen.

13. Herzlichen Glückwunsch

Herzlichen Glückwunsch, Sie haben Ihr Spiel und Ihre Rechtschreibpraxis erfolgreich aufgebaut!

Sie kennen jetzt die wichtigsten Schritte, die erforderlich sind, um ein Spiel mit Cloud Firestore, Cloud -Funktionen und Google Assistant Action Builder zu erstellen.

Was du abgedeckt hast

  • Wie man mit Cloud Firestore interagiert
  • So verwenden Sie Slots, um Daten vom Benutzer zu sammeln
  • So verarbeiten Sie die Eingabe eines Benutzers und geben eine Antwort zurück
  • So verwenden Sie Bedingungen, um einer Szene Logik hinzuzufügen
  • So fügen Sie eine Spielschleife hinzu

Zusätzliche Lernressourcen

Sie können diese Ressourcen untersuchen, um über das Erstellen von Aktionen für Google Assistant zu lernen:

Reinigen Sie Ihr Projekt [empfohlen]

Um mögliche Gebühren zu vermeiden, wird empfohlen, Projekte zu entfernen, die Sie nicht verwenden möchten. Befolgen Sie die folgenden Schritte, um die in diesem Codelab erstellten Projekte zu löschen:

  1. Um Ihr FireBase -Projekt und Ihre Ressourcen zu löschen, führen Sie die im Abschnitt zum Schalten abgeschalteten Projekte (Löschen) von den Schritten aus.

Achtung: Stellen Sie sicher, dass Sie das richtige Projekt für das Löschen auf der Einstellungen der Google Cloud Console auswählen.

  1. Optional: Um Ihr Projekt sofort aus der Aktionskonsole zu entfernen, führen Sie die im Abschnitt Löschen eines Projektabschnitts aufgeführten Schritte aus. Wenn Sie diesen Schritt nicht abschließen, wird Ihr Projekt nach ungefähr 30 Tagen automatisch entfernt.

Folgen Sie @actionsgoogle & @Firebase auf Twitter, um uns auf unsere neuesten Ankündigungen und Tweet zu #Googleio zu halten, um das zu teilen, was Sie aufgebaut haben!