Ćwiczenie pisowni w Asystencie Google i Cloud Firestore

1. Przegląd

Platforma dla deweloperów Asystenta Google umożliwia tworzenie oprogramowania, które rozszerza funkcjonalność Asystenta Google, wirtualnego asystenta osobistego, na ponad miliardzie urządzeń, w tym na inteligentnych głośnikach, telefonach, samochodach, telewizorach, słuchawkach i innych. Użytkownicy rozmawiają z Asystentem, aby wykonywać różne czynności, np. kupować produkty spożywcze lub zamawiać przejazdy. Jako deweloper możesz używać platformy deweloperskiej Asystenta, aby łatwo tworzyć i zarządzać atrakcyjnymi i skutecznymi interakcjami głosowymi między użytkownikami a własną usługą realizacji zamówień.

Ten przewodnik obejmuje koncepcje na poziomie średniozaawansowanym dotyczące tworzenia aplikacji na Asystenta Google, Cloud Functions i Cloud Firestore. W tym ćwiczeniu w Codelabs utworzysz grę „Spelling Practice”, w której Asystent Google będzie prosić użytkowników o przeliterowanie słów.

Co utworzysz

W tym ćwiczeniu z programowania utworzysz zaawansowaną grę z tymi funkcjami:

  • Otrzymuje od użytkownika odpowiedzi dotyczące pisowni i w zależności od ich wartości modyfikuje prompty konwersacyjne.
  • odpowiada wskazówkami dotyczącymi pisowni słowa, np. jego definicją lub powtórzeniem słowa;
  • Tworzy pętlę gry, dzięki czemu użytkownik może ponownie wejść w interakcję z Asystentem po przeliterowaniu słowa.

Zanim zaczniesz tworzyć akcję, możesz przetestować ją na żywo na urządzeniu z Asystentem Google, mówiąc „OK Google, porozmawiaj z Spelling Practice”. Domyślna ścieżka działania w przypadku powracającego użytkownika wygląda tak:

Po ukończeniu tego ćwiczenia Twoja gotowa czynność będzie miała następujący przebieg rozmowy:

2e9f94dc0ceafc96.png

Czego się nauczysz

  • Jak korzystać z Cloud Firestore
  • Jak używać slotów do zbierania danych od użytkownika
  • Jak przetworzyć dane wejściowe użytkownika i zwrócić odpowiedź
  • Jak używać warunków do dodawania logiki do sceny
  • Jak dodać pętlę gry

Czego potrzebujesz

Wymagania wstępne dotyczące tego laboratorium obejmują:

  • przeglądarka internetowa, np. Google Chrome;
  • IDE do pisania funkcji w Cloud Functions.
  • formę płatności; W tym laboratorium wykorzystywane są Cloud Functions dla Firebase, co wymaga, aby projekt korzystał z abonamentu Blaze w Firebase ( więcej informacji).
  • terminal do uruchamiania poleceń powłoki,
  • Node.js w wersji 10 lub nowszej

2. Pobieranie kodu funkcji

Sklonuj repozytorium GitHub z wiersza poleceń:

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

3. Tworzenie projektu Firebase i konfigurowanie aplikacji

Tworzenie projektu Firebase

  1. Zaloguj się w Firebase.
  2. W konsoli Firebase kliknij Dodaj projekt (lub Utwórz projekt), a następnie nadaj projektowi Firebase nazwę Spelling-Practice.

66ae8d1894f4477.png

  1. Klikaj opcje tworzenia projektu. W razie potrzeby zaakceptuj warunki usługi Firebase. Pomiń konfigurowanie Google Analytics, ponieważ nie będziesz używać Analytics w przypadku tej aplikacji.

Więcej informacji o projektach Firebase znajdziesz w artykule Projekty Firebase.

Przejście na abonament Blaze

Aby korzystać z Cloud Functions dla Firebase, musisz przenieść swój projekt Firebase na abonament Blaze, co oznacza, że musisz przypisać do projektu konto rozliczeniowe Google Cloud. Wymaga to podania karty kredytowej lub innej formy płatności.

Wszystkie projekty Firebase, w tym te w ramach abonamentu Blaze, nadal mają dostęp do bezpłatnych limitów wykorzystania Cloud Functions. Czynności opisane w tym laboratorium kodu mieszczą się w limitach bezpłatnego użytkowania. Możesz jednak zobaczyć niewielkie opłaty ( około 0, 03 USD) z Cloud Storage, który jest używany do hostowania obrazów kompilacji Cloud Functions.

4. Instalowanie wiersza poleceń Firebase

Wiersz poleceń Firebase umożliwia wdrażanie Cloud Functions.

Istnieje kilka opcji instalacji wiersza poleceń Firebase w zależności od systemu operacyjnego i przypadku użycia. Poniżej opisujemy najczęstszą opcję, jeśli korzystasz też z Cloud Functions.

  1. Upewnij się, że masz zainstalowany npm, który zwykle jest dostarczany z Node.js.
  2. Zainstaluj lub uaktualnij interfejs wiersza poleceń, uruchamiając to polecenie npm:
$ npm -g install firebase-tools
  1. Aby sprawdzić, czy interfejs CLI został prawidłowo zainstalowany, uruchom to polecenie:
$ firebase --version

Upewnij się, że wersja wiersza poleceń Firebase to 9.0.0 lub nowsza, aby mieć dostęp do wszystkich najnowszych funkcji wymaganych w Cloud Functions. Jeśli nie, uruchom polecenie npm install -g firebase-tools, aby przeprowadzić uaktualnienie, jak pokazano powyżej.

  1. Autoryzuj wiersz poleceń Firebase, wpisując:
$ firebase login
  1. W katalogu spelling-functions-start skonfiguruj wiersz poleceń Firebase, aby używać projektu Firebase. Uruchom to polecenie, wybierz identyfikator projektu i postępuj zgodnie z instrukcjami. Gdy pojawi się odpowiedni komunikat, możesz wybrać dowolny alias, np. codelab.
$ firebase use --add

5. Katalog funkcji

Teraz dodasz funkcje za pomocą pakietu Firebase SDK dla Cloud Functions, aby utworzyć backend gry Spelling Practice.

Cloud Functions umożliwia uruchamianie kodu w chmurze bez konieczności konfigurowania serwera. W tym module dowiesz się, jak tworzyć funkcje reagujące na zdarzenia z Uwierzytelniania Firebase, Cloud Storage i Bazy danych czasu rzeczywistego Firebase. Zacznijmy od uwierzytelniania.

Jeśli używasz pakietu SDK Firebase dla Cloud Functions, kod funkcji będzie się znajdować (domyślnie) w katalogu functions. Aby ułatwić Ci to zadanie, utworzyliśmy już plik functions/index.js, w którym znajdzie się Twój kod. Zanim przejdziesz dalej, możesz sprawdzić katalog functions.

$ cd functions
$ ls

Kod funkcji jest też aplikacją Node.js, dlatego potrzebuje pliku package.json, który zawiera informacje o aplikacji i wymienione zależności.

Jeśli nie znasz Node.js, przed rozpoczęciem tego laboratorium warto dowiedzieć się o nim więcej.

W pliku package.json są już wymienione 2 wymagane zależności: pakiet SDK Firebase dla Cloud Functionspakiet Firebase Admin SDK. Aby zainstalować je lokalnie, uruchom polecenie npm install w katalogu functions:

$ npm install

Przyjrzyjmy się teraz plikowi index.js:

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.

Najpierw zaimportujesz wymagane moduły, a potem w miejscu komentarzy TODO napiszesz 4 funkcje. Aby zaimportować moduły, przejdź do następnego kroku codelabu.

6. Zaimportuj wymagane moduły.

To ćwiczenie wymaga 3 modułów.

  • Moduł firebase-functions umożliwia pisanie aktywatorów dla funkcji w Cloud Functions.
  • Moduł firebase-admin umożliwia korzystanie z platformy Firebase na serwerze z dostępem administracyjnym, np. do zapisywania danych w Cloud Firestore.
  • Biblioteka realizacji Actions SDK Node.js obsługuje moduły obsługi Actions SDK dla Asystenta Google.
  1. Zainstaluj pakiet SDK Actions, uruchamiając to polecenie npm:
$ npm install @assistant/conversation
  1. W pliku index.js zastąp pierwszy element TODO tym kodem:

Te zmiany importują każdy z wymaganych modułów.

Pakiet Firebase Admin SDK można też skonfigurować automatycznie, gdy jest wdrażany w środowisku Cloud Functions lub w innym kontenerze Google Cloud. W poniższych zmianach numer admin.initializeApp(); oznacza numer telefonu.

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.

Teraz dodajmy logikę biznesową za pomocą funkcji, aby obsługiwać działania Asystenta.

7. Tworzenie funkcji

Pobieranie definicji słów i zapisywanie ich w Cloud Firestore

Do pobierania definicji słów będziesz używać dictionaryapi.devpublicznego interfejsu API.

W pliku index.js zastąp komentarz TODO dla getWordDetailsFromDictionaryAPI tym kodem:

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

Dodawanie aktywatora Cloud Firestore

Następnie utworzysz funkcję w Cloud Functions, która będzie się uruchamiać za każdym razem, gdy w Cloud Firestore zostanie utworzony nowy dokument. Wywoła interfejs dictionaryapi.dev API, aby pobrać definicje słów za pomocą funkcji getWordDetailsFromDictionaryAPI, którą napisaliśmy powyżej.

W pliku index.js zastąp komentarz TODO dla createSpellingPracticeWord tym kodem:

index.js

// Aktywator Firestore, który pobiera definicje słów za pomocą funkcji getWordDetailsFromDictionaryAPI dla każdego nowego dokumentu Firestore

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

Pobieranie listy słów do gry

Możesz napisać funkcję w Cloud Functions, która pobiera z Cloud Firestore listę słów do ćwiczenia pisowni dla Asystenta. W tym celu używamy modułu obsługi aplikacji.

W pliku index.js zastąp komentarz TODO dla getSpellingWordList tym kodem:

Dodanie tej funkcji do specjalnego app.handle umożliwia dostęp do niej z poziomu Asystenta.

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

Pobieranie słowa z sesji Asystenta

Możesz napisać funkcję w Cloud Functions, która zwraca kolejne słowo do pisowni z listy słów.

W pliku index.js zastąp komentarz TODO dla getSpellingWord tym kodem:

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

Włącz powtarzanie słowa w grze

Możesz napisać funkcję w Cloud Functions, która powtarza aktualne słowo w grze.

W pliku index.js zastąp komentarz TODO dla repeatSpellingWord tym kodem:

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

Znajdź definicję słowa

Możesz napisać funkcję w Cloud Functions, która będzie podawać definicję bieżącego słowa w grze.

W pliku index.js zastąp komentarz TODO dla definitionOfSpellingWord tym kodem:

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

Sprawdzenie odpowiedzi użytkownika dotyczącej pisowni

Możesz napisać funkcję w Cloud Functions, która sprawdzi odpowiedź użytkownika dotyczącą pisowni bieżącego słowa w grze.

W pliku index.js zastąp komentarz TODO dla verifySpellingWord tym kodem:

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

Wdrażanie wszystkich funkcji

Funkcje Cloud Functions będą aktywne dopiero po wdrożeniu ich w Firebase.

W katalogu głównym spelling-functions-start uruchom to polecenie:

$ firebase deploy --only functions

Oto dane wyjściowe, które powinny się wyświetlić w konsoli:

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

Zanotuj adres URL punktu końcowego HTTP funkcji ActionsOnGoogleFulfillment, aby użyć go później. Aby uzyskać punkt końcowy, otwórz konsolę Firebase, a następnie kliknij projekt spelling-practice. Otwórz panel Functions, aby wyświetlić punkt końcowy funkcji.

332cb0437411a242.png

Dodano wszystkie wymagane funkcje. Teraz przejdźmy do konfigurowania Cloud Firestore.

8. Włączanie Cloud Firestore

Musisz włączyć Cloud Firestore.

W sekcji Kompilacja w konsoli Firebase kliknij Firestore. Następnie kliknij Utwórz bazę danych.

5c0b4abf4410ffcf.png

Dostęp do danych w Cloud Firestore jest kontrolowany przez reguły zabezpieczeń. Na początek musisz ustawić podstawowe reguły dotyczące danych. Kliknij Firestore, a następnie na karcie Reguły w konsoli Firebase dodaj te reguły i kliknij Opublikuj.

Poniższe reguły ograniczają dostęp do danych do zalogowanych użytkowników, co uniemożliwia nieuwierzytelnionym użytkownikom odczytywanie i zapisywanie danych.

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. Dodawanie danych słówek do Cloud Firestore

W tym kroku zapiszesz dane słów do pisania w Cloud Firestore, aby móc wygenerować listę słów dla Asystenta (i gry).

Dane w Cloud Firestore są uporządkowane w kolekcje, dokumenty, pola i podkolekcje. Każde słowo z gry będzie przechowywane jako osobny dokument w kolekcji najwyższego poziomu o nazwie wordlist. Dla każdego nowego dokumentu w kolekcji Firestore zostanie wywołana funkcja createSpellingPracticeWord, która pobierze szczegóły słowa z usługi Dictionary API.

Tworzenie kolekcji Cloud Firestore

  1. W konsoli Firebase otwórz sekcję Cloud Firestore.
  2. Kliknij + Rozpocznij zbieranie.
  3. W polu tekstowym Identyfikator kolekcji wpisz wordlist, a następnie kliknij Dalej.

1b4ccadb90f52f02.png

Następnie utworzymy dokument dla słowa agreement.

  1. W polu tekstowym Identyfikator dokumentu wpisz agreement.
  2. W polu tekstowym Pole wpisz word, a w polu tekstowym Wartość wpisz agreement.
  3. Kliknij Zapisz.

379037e011e8511e.png

Gdy dodasz ten dokument do Cloud Firestore, uruchomi to funkcję createSpellingPracticeWord, która pobierze szczegóły definicji słowa. Dodaj więcej słów (np. awe, car, true, tell, better, commute, …), tworząc nowy dokument dla każdego słowa.

10. Konfigurowanie Asystenta Google

W sekcjach poniżej znajdziesz informacje o tym, jak skonfigurować środowisko programistyczne Asystenta Google i utworzyć projekt działań.

Sprawdzanie ustawień uprawnień Google

Aby przetestować działanie utworzone w tym module, musisz włączyć odpowiednie uprawnienia, aby symulator mógł uzyskać do niego dostęp. Aby włączyć uprawnienia, wykonaj te czynności:

  1. Otwórz stronę Zarządzanie aktywnością.
  2. Zaloguj się na konto Google, jeśli jeszcze tego nie zrobiono.
  3. Włącz te uprawnienia:
  • Aktywność w internecie i aplikacjach
  • W sekcji Aktywność w internecie i aplikacjach zaznacz pole Uwzględnij historię Chrome i aktywność na stronach, urządzeniach i w aplikacjach, które używają usług Google.

c988e1e639e6d6e1.png

Tworzenie projektu w Actions

Projekt w Actions jest kontenerem dla Twojej akcji. Aby utworzyć projekt działań na potrzeby tego laboratorium, wykonaj te czynności:

  1. Otwórz konsolę Actions.
  2. Kliknij Nowy projekt.
  3. Zaakceptuj Warunki korzystania z usługi

b174d45710b8086b.png

  1. Wpisz lub wybierz spelling-practice-codelab utworzoną w konsoli Firebase. (Nazwa jest przeznaczona do użytku wewnętrznego. Później możesz ustawić zewnętrzną nazwę projektu).

a2951de5d2001fac.png

  1. Kliknij Import project (Importuj projekt).
  2. Na ekranie Jakiego rodzaju działanie chcesz utworzyć? wybierz kartę Niestandardowe.
  3. Kliknij Dalej.
  4. Wybierz kartę Pusty projekt.
  5. Kliknij Rozpocznij tworzenie.
  6. Wpisz Spelling Practice jako wyświetlaną nazwę i kliknij Zapisz.

Użytkownicy rozpoczynają rozmowę z Twoją akcją za pomocą wywołania. Użytkownicy mogą na przykład wywołać Twoją akcję, mówiąc „OK Google, porozmawiaj z Spelling Practice”, gdzie Spelling Practice to wyświetlana nazwa.

Jeśli chcesz wdrożyć akcję w środowisku produkcyjnym, musi ona mieć wyświetlaną nazwę. Aby jednak przetestować akcję, nie musisz definiować wyświetlanej nazwy. Zamiast tego możesz użyć w symulatorze wyrażenia „Porozmawiaj z aplikacją testową”, aby wywołać akcję.

Konfigurowanie realizacji

Musisz połączyć z Asystentem obsługę zdarzeń dla funkcji Cloud Functions, które zostały napisane i wdrożone wcześniej w tym samouczku.

Aby skonfigurować realizację zamówień, wykonaj te czynności:

  1. W panelu nawigacyjnym po lewej stronie kliknij Webhook.
  2. Wybierz Punkt końcowy HTTPS jako opcję realizacji:

d523bf003e96e66f.png

  1. Wpisz adres URL punktu końcowego funkcji w polu tekstowym Punkt końcowy HTTPs, a potem kliknij Zapisz.

be53e2cd0d914d54.png

W następnej sekcji dostosujesz prompt dla głównego wywołania w konsoli Actions.

Konfigurowanie głównego wywołania

Musisz edytować główne wywołanie, aby określić, co się stanie po wywołaniu działania przez użytkownika.

Domyślnie narzędzie Actions Builder wyświetla ogólny prompt, gdy zostanie wywołana Twoja usługa („Zacznij tworzyć usługę, definiując główne wywołanie”).

Aby zmodyfikować prompt, który Twoja akcja wysyła do użytkownika po jej wywołaniu, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Główne wywołanie.

9ff088c04c995cde.png

  1. Zaznacz pole wyboru Call your webhook i dodaj nazwę funkcji obsługi zdarzeń getSpellingWordList w polu tekstowym.
  2. W edytorze kodu zastąp tekst w polu speech tym powitaniem: Welcome to Spelling Practice

Uwaga: do edytowania promptów możesz używać formatu YAML lub JSON.

  1. Kliknij Zapisz.

Testowanie głównego wywołania w symulatorze

Konsola Actions udostępnia narzędzie internetowe do testowania działania o nazwie symulator. Interfejs symuluje urządzenia i ich ustawienia, dzięki czemu możesz rozmawiać z działaniem tak, jakby było uruchomione na inteligentnym ekranie, telefonie, głośniku lub urządzeniu z KaiOS.

Aby przetestować główne wywołanie działania w symulatorze:

  1. Na górnym pasku nawigacyjnym kliknij Testuj, aby przejść do symulatora.
  2. Aby wywołać akcję w symulatorze, wpisz Talk to Spelling Practice w polu wprowadzania w lewym górnym rogu, a następnie naciśnij Enter na klawiaturze.

651fc8da1ac9aa0a.png

Gdy wywołasz główną funkcję działania, Asystent odpowie spersonalizowaną wiadomością powitalną. W tym momencie rozmowa kończy się po tym, jak Asystent odpowie powitaniem.

Wyświetlanie dzienników zdarzeń

Na karcie Test w panelu po prawej stronie wyświetlają się dzienniki zdarzeń, które zawierają historię rozmowy w postaci dzienników zdarzeń. Każdy dziennik zdarzeń zawiera zdarzenia, które wystąpiły w trakcie danej tury rozmowy. Aby wyświetlić dziennik zdarzeń, kliknij szarą ikonę przed zdarzeniem.

Twoja akcja ma obecnie 1 dziennik zdarzeń, który zawiera zarówno dane wejściowe użytkownika („Porozmawiaj z Spelling Practice”), jak i odpowiedź akcji. Na zrzucie ekranu poniżej widać dziennik zdarzeń akcji:

a6fb192f94426824.png

11. Tworzenie rozmowy na potrzeby ćwiczenia pisowni

Teraz, gdy już wiesz, co się stanie po wywołaniu Twojej akcji przez użytkownika, możesz rozbudować resztę rozmowy akcji. Spelling Practice ma 4 sceny, które musisz aktywować, zanim będzie można je uruchomić. Najczęstszym sposobem aktywowania sceny jest skonfigurowanie działania tak, aby gdy użytkownik dopasuje intencję użytkownika w scenie, ta intencja powodowała przejście do innej sceny i jej aktywowanie.

Przejście od głównego wywołania do sceny początkowej

W tej sekcji utworzysz nową scenę o nazwie Start, która wysyła do użytkownika prośbę z pytaniem, czy chce rozpocząć grę Spelling Practice. Dodajesz też przejście z głównego wywołania do nowej sceny Start.

Aby utworzyć tę scenę i dodać do niej przejście, wykonaj te czynności:

  1. W menu nawigacyjnym u góry kliknij Rozwijaj. Następnie w menu po lewej stronie kliknij Główne wywołanie.
  2. W sekcji Przejście po prawej stronie kliknij menu, a następnie wpisz Start w polu tekstowym.

dd4f1807a57f794d.png

  1. Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie Start i poinformowanie działania, że po wyświetleniu użytkownikowi powitania ma przejść do sceny Start.
  2. W menu po lewej stronie kliknij Sceny, aby wyświetlić listę scen.
  3. W sekcji Sceny kliknij Rozpocznij, aby wyświetlić scenę Start.
  4. W sekcji Po wejściu sceny Start kliknij +.
  5. Kliknij Wyślij prompty.
  6. Zastąp zdanie w polu speech (Enter the response that users will see or hear...) pytaniem, które chcesz zadać użytkownikowi: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Chip z sugestią zawiera klikalne sugestie dla użytkownika, które Twoja czynność przetwarza jako dane wejściowe. W tej sekcji dodasz sugestie, które będą się wyświetlać pod skonfigurowanym przez Ciebie promptem (Do you want to play

Spelling Practice

?) – aby obsługiwać użytkowników urządzeń z ekranami.

Aby dodać do promptu sceny Start sugestie, wykonaj te czynności:

  1. W scenie Start kliknij sugestie pod edytorem kodu. Spowoduje to dodanie pojedynczego elementu sugestii.
  2. W polu title zastąp Suggested Response wartością 'Yes'.
  3. Ręcznie dodaj chipy z sugestiami o nazwach 'No''Help with Phonetics', używając tego samego formatowania. Kod powinien wyglądać podobnie do tego fragmentu:
  4. Kliknij Zapisz.

5ff2ecdc56801b91.png

Testowanie działania w symulatorze

W tym momencie działanie powinno przejść z głównego wywołania do sceny Start i zapytać użytkownika, czy chce kontynuować. W symulowanym wyświetlaczu powinny się też pojawić karty z sugestiami.

Aby przetestować działanie w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test, aby przejść do symulatora.
  2. Aby przetestować działanie w symulatorze, wpisz Talk to Spelling Practice w polu Input (Dane wejściowe).
  3. Naciśnij Enter. Akcja powinna odpowiedzieć promptem Main invocation i dodatkowym promptem sceny Start, „Witamy w ćwiczeniach z ortografii. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?

Na tym zrzucie ekranu widać tę interakcję:

338c9570b02a618e.png

  1. Aby odpowiedzieć na prompta, kliknij chip z sugestią Yes, No lub Help with Phonetics. (Możesz też powiedzieć „Tak” lub „Nie” albo „Pomoc z fonetyką” albo wpisać Yes, No lub Help with Phonetics w polu Wpisz).

Gdy odpowiesz na prompt, akcja odpowie komunikatem informującym, że nie rozumie Twoich danych wejściowych: „Przepraszam, nie zrozumiałem(-am). Możesz spróbować ponownie? Ponieważ nie masz jeszcze skonfigurowanej akcji, która rozumie i odpowiada na dane wejściowe „Tak” lub „Nie”, akcja dopasowuje dane wejściowe do intencji NO_MATCH.

Domyślnie intencja systemowa NO_MATCH zapewnia ogólne odpowiedzi, ale możesz je dostosować, aby poinformować użytkownika, że nie rozumiesz jego danych wejściowych. Asystent kończy rozmowę użytkownika z Twoją akcją, gdy 3 razy nie uda mu się dopasować danych wejściowych użytkownika.

Dodawanie intencji „nie” i fonetycznych

Teraz, gdy użytkownicy mogą odpowiadać na pytanie zadane przez Twoją czynność, możesz skonfigurować ją tak, aby rozpoznawała odpowiedzi użytkowników („Tak”, „Nie” lub „Pomoc w zakresie fonetyki”). W kolejnych sekcjach utworzysz intencje użytkownika, które będą pasować do wypowiedzi „Tak”, „Nie” lub „Pomoc z fonetyką”, i dodasz je do sceny Start. Użyjemy intencji systemowej yes i utworzymy inne intencje.

Tworzenie intencji no

Teraz musisz utworzyć intencję no, aby rozumieć użytkownika i odpowiadać mu, gdy nie chce grać w grę. Aby utworzyć ten zamiar, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę no i naciśnij Enter.
  4. Kliknij nie, aby otworzyć stronę intencji no.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. Kliknij Zapisz.

Dodawanie intencji no do sceny Start

Teraz akcja może zrozumieć, kiedy użytkownik mówi „nie” lub coś podobnego do „nie”, np. „nie”. Musisz dodać intencję użytkownika no do sceny Start, ponieważ użytkownik odpowiada na prompt Start („Witamy w ćwiczeniach z ortografii. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itp. Czy chcesz kontynuować?).

Aby dodać ten zamiar do sceny Start, wykonaj te czynności:

  1. W nawigacji kliknij scenę Start.
  2. Kliknij + (znak plusa) w scenie Start obok opcji Obsługa zamiarów użytkownika.
  3. W sekcji Intencja w menu wybierz nie.

51f752e78c8b4942.png

  1. Kliknij Wyślij prompty i zastąp tekst w polu speech tym tekstem: Good Bye.

Kod w edytorze powinien wyglądać jak ten fragment:

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. W sekcji Przejście wybierz z menu Zakończ rozmowę.
  2. Kliknij Zapisz.

Testowanie intencji no w symulatorze

W tym momencie Twoja akcja rozumie, kiedy użytkownik nie chce grać w grę, i zwraca odpowiednią odpowiedź.

Aby przetestować ten zamiar w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Wpisz Talk to Spelling Practice w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz No w polu Dane wejściowe i naciśnij Enter. Możesz też kliknąć kartę Brak sugestii.

7727a456b522f31b.png

Dodaj intencję systemową YES do sceny Start

Teraz dodamy intencję SYSTEM „YES” do sceny Start, ponieważ użytkownik odpowiada „tak” na prompt Start („Witamy w ćwiczeniach z ortografii. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itp. Czy chcesz kontynuować?).

Aby dodać ten zamiar użytkownika do sceny Start, wykonaj te czynności:

  1. W nawigacji kliknij scenę Start.
  2. Kliknij + (znak plusa) na scenie Start obok opcji Obsługa intencji użytkownika.
  3. W sekcji Wszystkie intencje systemowe wybierz TAK w menu intencji.

f6cbe789cde49e8f.png

  1. Kliknij Call your webhook (Wywołaj webhooka) i w polu tekstowym event handler wpisz utworzoną wcześniej funkcję: getSpellingWordList
  2. W sekcji Przejście kliknij menu i wybierz Zakończ rozmowę.
  3. Kliknij Zapisz.

Testowanie intencji YES w symulatorze

W tym momencie Twoja akcja rozumie, kiedy użytkownik chce zagrać w grę, i zwraca odpowiednią odpowiedź.

Aby przetestować ten zamiar w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Aby przetestować działanie w symulatorze, wpisz Talk to Spelling Practice w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć element z sugestią Yes.

Działanie pobiera listę wszystkich słów do ćwiczenia pisowni i zapisuje je w sesji. Działanie kończy sesję, ponieważ w przypadku intencji YES wybrano przejście End conversation.

Tworzenie intencji Phonetics

Aby utworzyć intencję Phonetics, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę phonetics i naciśnij Enter.
  4. Kliknij intencję phonetics, aby otworzyć stronę intencji phonetics.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Kliknij Zapisz.

Dodawanie intencji phonetics do sceny Start

Teraz działanie może rozpoznawać, kiedy użytkownik wyraża intencję „fonetyczną”. Możesz dodać intencję użytkownika phonetics do sceny Start, ponieważ użytkownik odpowiada na prompt Start („Witamy w ćwiczeniach z ortografii. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itp. Czy chcesz kontynuować?).

Aby dodać ten zamiar użytkownika do sceny Start, wykonaj te czynności:

  1. W nawigacji kliknij scenę Start.
  2. Kliknij + (znak plusa) w scenie Start obok opcji Obsługa zamiarów użytkownika.
  3. W menu intencji wybierz fonetyka.

67ee2e08000b2aee.png

  1. W sekcji Przejście kliknij menu i wybierz Zakończ rozmowę.
  2. Kliknij Zapisz.

Przejście ze sceny Start do sceny Spelling

W tej sekcji utworzysz nową scenę o nazwie Spelling, która wyświetli użytkownikowi prośbę o przeliterowanie słowa za pomocą alfabetu fonetycznego.

Aby utworzyć tę scenę i dodać do niej przejście, wykonaj te czynności:

  1. W menu nawigacyjnym u góry kliknij Rozwijaj. Następnie w menu po lewej stronie kliknij Rozpocznij scenę.
  2. W sekcji Obsługa intencji użytkownika kliknij when actions.intent.YES is matched, a po prawej stronie w sekcji Przejście kliknij menu i wpisz Spelling w polu tekstowym.
  3. Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie Spelling i poinformowanie działania, aby po dopasowaniu do intencji YES przejść do sceny Spelling.
  4. W menu nawigacyjnym po lewej stronie rozwiń Sceny, aby wyświetlić listę scen.
  5. W sekcji Sceny kliknij Pisownia, aby wyświetlić scenę Spelling.
  6. W sekcji Po wejściu sceny Spelling kliknij +.
  7. Kliknij Wywołaj webhooka i w polu tekstowym obsługi zdarzeń wpisz getSpellingWord.
  8. Kliknij Wyślij prompty.
  9. Zastąp zdanie w polu speech (Enter the response that users will see or hear...) wartością {}. Rzeczywisty prompt zostanie wypełniony przez webhooka.

Chip z sugestią zawiera klikalne sugestie dla użytkownika, które Twoja czynność przetwarza jako dane wejściowe.

Aby dodać do promptu sceny Spelling sugestie, wykonaj te czynności:

  1. W scenie Spelling kliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie.
  2. W polu title zastąp Suggested Response wartością 'Repeat'.
  3. Ręcznie dodaj sugestię w formie przycisku o nazwie 'Skip', używając tego samego formatowania.
  4. Ręcznie dodaj sugestię w formie przycisku o nazwie 'Quit', używając tego samego formatowania. Kod powinien wyglądać podobnie do tego fragmentu:
  5. Kliknij Zapisz.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Tworzenie intencji Repeat

Aby utworzyć intencję repeat, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę repeat i naciśnij Enter.
  4. Kliknij intencję repeat, aby otworzyć stronę intencji definition.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. Kliknij Zapisz.

Dodawanie intencji repeat do sceny Spelling

Teraz działanie może rozpoznawać, kiedy użytkownik wyraża zamiar „powtórzenia”. Możesz dodać intencję użytkownika repeat do sceny Spelling, ponieważ użytkownik odpowiada na prompt Spelling („Przeliteruj słowo za pomocą alfabetu fonetycznego”).

Aby dodać ten zamiar użytkownika do sceny Spelling, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) na scenie Spelling obok opcji Obsługa intencji użytkownika.
  3. W menu intencji wybierz repeat (powtórz).

5cfd623b25bedbed.png

  1. Zaznacz pole Call your webhook (Wywołaj webhook) i wpisz repeatSpellingWord w polu tekstowym obsługi zdarzeń, aby uzyskać definicję słowa.
  2. Zaznacz opcję Wyślij prompty.
  3. Zastąp zdanie w polu speech (Enter the response that users will see or hear...) znakiem „'”. Rzeczywisty prompt zostanie wypełniony przez webhook.

Dodawanie sugestii do sekcji „Gdy powtórzenie jest zgodne”

  1. W sekcji „When Repeat is matched” (Gdy powtórzenie zostanie dopasowane) w obszarze User Intent handling (Obsługa intencji użytkownika) kliknij suggestions (sugestie) pod edytorem kodu. To działanie dodaje 3 sugestie.
  2. W polu title zastąp Suggested Response wartością 'Skip'.
  3. Ręcznie dodaj chip z sugestią o nazwie 'Quit', zachowując ten sam format.Twój kod powinien wyglądać jak ten fragment:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Kliknij Zapisz.

Tworzenie intencji definition

Aby utworzyć intencję definition, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę definition i naciśnij Enter.
  4. Kliknij intencję definition, aby otworzyć stronę intencji definition.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

c1b88a9c0b1ac082.png

  1. Kliknij Zapisz.

Dodawanie intencji definition do sceny Spelling

Teraz akcja może rozpoznawać, kiedy użytkownik wyraża intencję „definicji”. Możesz dodać intencję użytkownika definition do sceny Spelling, ponieważ użytkownik odpowiada na prompt Spelling („Przeliteruj słowo za pomocą alfabetu fonetycznego”).

Aby dodać ten zamiar użytkownika do sceny Spelling, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) na scenie Spelling obok opcji Obsługa intencji użytkownika.
  3. W menu intencji wybierz definicję.

646bdcac3ad3eb0c.png

  1. Zaznacz pole Call your webhook (Wywołaj webhook) i wpisz definitionOfSpellingWord w polu tekstowym obsługi zdarzeń, aby uzyskać definicję słowa.
  2. Zaznacz opcję Wyślij prompty.
  3. Zastąp zdanie w polu speech (Enter the response that users will see or hear...) ciągiem znaków „”. Rzeczywisty prompt zostanie wypełniony przez webhooka.

Dodawanie elementów z sugestiami do odpowiedzi webhooka

  1. W scenie Start kliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie.
  2. W polu title zastąp Suggested Response wartością 'Skip'.
  3. Ręcznie dodaj chip z sugestią o nazwie 'Quit', zachowując ten sam format.Twój kod powinien wyglądać jak ten fragment:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Kliknij Zapisz.

Tworzenie intencji skip

Aby utworzyć intencję skip, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W menu kliknij Intencje, aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę skip i naciśnij Enter.
  4. Kliknij intencję skip, aby otworzyć stronę intencji skip.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. Kliknij Zapisz.

Dodawanie intencji Skip do sceny Spelling

Teraz działanie może rozpoznawać, kiedy użytkownik wyraża intencję „pominięcia”. Możesz dodać intencję użytkownika skip do sceny Spelling, ponieważ użytkownik odpowiada na prompt Spelling („Przeliteruj słowo za pomocą alfabetu fonetycznego”).

Aby dodać ten zamiar użytkownika do sceny Spelling, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) na scenie Spelling obok opcji Obsługa intencji użytkownika.
  3. W menu intencji kliknij Pomiń.

5465f97542217964.png

  1. W sekcji Przeniesienie po prawej stronie kliknij menu i wybierz Spelling .

c8072485ca82bd3f.png

  1. Kliknij Zapisz.

Tworzenie intencji quit

Aby utworzyć intencję Quit, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W menu kliknij Intencje, aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę Quit i naciśnij Enter.
  4. Kliknij intencję Quit, aby otworzyć stronę intencji definicja.
  5. W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Kliknij Zapisz.

Dodawanie intencji Quit do sceny Spelling

Teraz działanie może rozpoznawać, kiedy użytkownik wyraża zamiar „zakończenia”. Możesz dodać intencję użytkownika quit do sceny Spelling, ponieważ użytkownik odpowiada na prompt Spelling („Przeliteruj słowo za pomocą alfabetu fonetycznego”).

Aby dodać ten zamiar użytkownika do sceny Spelling, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) na scenie Spelling obok opcji Obsługa intencji użytkownika.
  3. W menu intencji wybierz quit (zakończ).

5f62fb18a3653d66.png

  1. W sekcji Przeniesienie po prawej stronie kliknij menu i wybierz End conversation . 1ffbe35a7bbbb4b0.png
  2. Kliknij Zapisz.

Tworzenie typu phonetic_alphabet

W tej sekcji utworzysz nowy typ o nazwie phonetic_alphabet, który określa opcje alfabetu fonetycznego, z których użytkownicy mogą wybierać, aby przeliterować słowo. Możesz też zdefiniować kilka synonimów tych opcji na wypadek, gdyby użytkownik powiedział coś podobnego. W dalszej części dodasz do slotu typ phonetic_alphabet, aby określić, że chcesz uzyskać odpowiedź użytkownika.

Aby utworzyć typ phonetic_alphabet, wykonaj te czynności:

  1. W menu nawigacyjnym kliknij Tworzenie.
  2. W sekcji Typy kliknij + (znak plusa).
  3. Wpisz phonetic_alphabet i naciśnij Enter.
  4. Kliknij phonetic_alphabet, aby otworzyć opcje.
  5. W sekcji Jakie rodzaje wartości będą obsługiwane przez ten typ? wybierz opcję Słowa i synonimy.
  6. W sekcji Dodaj wpisy wpisz te wpisy i odpowiadające im wartości:

a

alpha, apple, amsterdam

b

bravo, butter, baltimore

c

charlie, cat, casablanca

d

delta, dog, denmark

E

echo, edward, edison

f

foxtrot, fox, florida

g

golf, george, gallipoli

godz.

hotel, harry, havana

i

india, ink, italia

j

juliette, johnny, jerusalem

k

kilo, king, kilogramme

l

lima, love, london

min

mike, money, madagascar

n

listopad, nowy jork, nancy

o

oscar, orange, oslo

p

papa, paris, peter

q

quebec, queen

r

romeo, roma, robert

s

sierra, sugar, santiago

t

tango, tommy, tripoli

u

uniform, umbrella, uncle

v

victor, vinegar, Valencia

w

whiskey, william, washington

x

zdjęcie rentgenowskie

y

yankee, yellow, yorker

z

zulu, zebra, zurich

Tabela par klucz-wartość powinna wyglądać tak:

5b5a5cd9fa557e1b.png

  1. Kliknij Zapisz.

Konfigurowanie wypełniania slotów

Następnie musisz skonfigurować wypełnianie slotów w scenie Spelling. Aby skonfigurować logikę wypełniania slotów, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) na scenie Spelling w sekcji Wypełnianie slotów.
  3. W polu Wpisz nazwę slota dodaj userresponse jako nazwę slota.
  4. W menu Wybierz typ wybierz phonetic_alphabet jako typ slotu.
  5. Zaznacz To miejsce przyjmuje listę wartości.
  6. Zaznacz pole This slot is required (Ten slot jest wymagany).
  7. Wybierz opcję Dostosuj zapisywanie wartości slotu i w polu tekstowym parametru sesji wpisz userresponse.

ba57a419877a07f3.png

  1. Kliknij Zapisz.

Dodawanie warunku do ekranu Spelling

Aby dodać warunek do sceny Spelling, wykonaj te czynności:

  1. W nawigacji kliknij scenę Spelling (Pisownia).
  2. Kliknij + (znak plusa) w scenie Spelling obok pozycji Warunek.
  3. Wpisz scene.slots.status == "FINAL" jako warunek.
  4. Zaznacz Wywołaj webhooka i wpisz verifySpellingWord w polu tekstowym obsługi zdarzeń, aby zweryfikować odpowiedź użytkownika.
  5. Zaznacz opcję Wysyłaj prompty.
  6. Zastąp zdanie w polu speechEnter the response that users will see or hear... wartością {}. Rzeczywisty prompt zostanie wypełniony przez webhook.

Dodawanie elementów z sugestiami do odpowiedzi webhooka

  1. W scenie Start kliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie.
  2. W polu title zastąp Suggested Response wartością 'Next'.
  3. Ręcznie dodaj chip z sugestią o nazwie 'Quit', zachowując ten sam format.Twój kod powinien wyglądać jak ten fragment:
suggestions:
      - title: 'Next'
      - title: 'Quit'

ac3d7a9366ebc1b1.png

  1. Kliknij Zapisz.

12. Testowanie ćwiczeń z pisowni w symulatorze

Aby przetestować działanie w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test, aby przejść do symulatora.
  2. Aby przetestować działanie w symulatorze, wpisz Talk to Spelling Practice w polu Input (Dane wejściowe).
  3. Naciśnij Enter. Akcja powinna odpowiedzieć promptem Main invocation i dodatkowym promptem sceny Start, „Witamy w ćwiczeniach z ortografii. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?
  4. Powiedz Tak, aby kontynuować.
  5. Symulator odtworzy dźwięk słowa, które należy przeliterować.
  6. Możesz przeliterować słowo, używając alfabetu fonetycznego. Na przykład w przypadku słowa better powiedz lub wpisz „bravo echo tango tango echo romeo”.
  7. Symulator odpowie prawidłową lub nieprawidłową odpowiedzią.
  8. Powiedz dalej, aby przejść do następnego słowa, lub zakończ, aby wyjść z pętli gry.

13. Gratulacje

Gratulacje, udało Ci się utworzyć grę Spelling Practice.

Znasz już najważniejsze kroki, które należy wykonać, aby utworzyć grę za pomocą Cloud Firestore, Cloud Functions i Google Assistant Action Builder.

Omówione tematy

  • Jak korzystać z Cloud Firestore
  • Jak używać slotów do zbierania danych od użytkownika
  • Jak przetworzyć dane wejściowe użytkownika i zwrócić odpowiedź
  • Jak używać warunków do dodawania logiki do sceny
  • Jak dodać pętlę gry

Dodatkowe materiały szkoleniowe

Aby dowiedzieć się więcej o tworzeniu działań dla Asystenta Google, zapoznaj się z tymi zasobami:

Wyczyść projekt [zalecane]

Aby uniknąć ewentualnych opłat, zalecamy usunięcie projektów, których nie zamierzasz używać. Aby usunąć projekty utworzone w tym laboratorium, wykonaj te czynności:

  1. Aby usunąć projekt i zasoby Firebase, wykonaj czynności opisane w sekcji Wyłączanie (usuwanie) projektów.

Ostrzeżenie: na stronie Ustawienia w konsoli Google Cloud wybierz właściwy projekt do usunięcia.

  1. Opcjonalnie: aby natychmiast usunąć projekt z Konsoli Actions, wykonaj czynności opisane w sekcji Usuwanie projektu. Jeśli nie wykonasz tego kroku, Twój projekt zostanie automatycznie usunięty po około 30 dniach.

Obserwuj nas na Twitterze: @ActionsOnGoogle@Firebase, aby być na bieżąco z najnowszymi ogłoszeniami. Możesz też użyć hashtagu #GoogleIO, aby podzielić się tym, co udało Ci się stworzyć.