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:

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
- Zaloguj się w Firebase.
- W konsoli Firebase kliknij Dodaj projekt (lub Utwórz projekt), a następnie nadaj projektowi Firebase nazwę
Spelling-Practice.

- 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.
- Upewnij się, że masz zainstalowany npm, który zwykle jest dostarczany z Node.js.
- Zainstaluj lub uaktualnij interfejs wiersza poleceń, uruchamiając to polecenie npm:
$ npm -g install firebase-tools
- 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.
- Autoryzuj wiersz poleceń Firebase, wpisując:
$ firebase login
- 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 Functions i pakiet 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-functionsumożliwia pisanie aktywatorów dla funkcji w Cloud Functions. - Moduł
firebase-adminumoż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.
- Zainstaluj pakiet SDK Actions, uruchamiając to polecenie npm:
$ npm install @assistant/conversation
- W pliku
index.jszastą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.

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.

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
- W konsoli Firebase otwórz sekcję Cloud Firestore.
- Kliknij + Rozpocznij zbieranie.
- W polu tekstowym Identyfikator kolekcji wpisz
wordlist, a następnie kliknij Dalej.

Następnie utworzymy dokument dla słowa agreement.
- W polu tekstowym Identyfikator dokumentu wpisz
agreement. - W polu tekstowym Pole wpisz
word, a w polu tekstowym Wartość wpiszagreement. - Kliknij Zapisz.

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:
- Otwórz stronę Zarządzanie aktywnością.
- Zaloguj się na konto Google, jeśli jeszcze tego nie zrobiono.
- 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.

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:
- Otwórz konsolę Actions.
- Kliknij Nowy projekt.
- Zaakceptuj Warunki korzystania z usługi

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

- Kliknij Import project (Importuj projekt).
- Na ekranie Jakiego rodzaju działanie chcesz utworzyć? wybierz kartę Niestandardowe.
- Kliknij Dalej.
- Wybierz kartę Pusty projekt.
- Kliknij Rozpocznij tworzenie.
- 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:
- W panelu nawigacyjnym po lewej stronie kliknij Webhook.
- Wybierz Punkt końcowy HTTPS jako opcję realizacji:

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

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:
- W menu nawigacyjnym kliknij Główne wywołanie.

- Zaznacz pole wyboru
Call your webhooki dodaj nazwę funkcji obsługi zdarzeńgetSpellingWordListw polu tekstowym. - W edytorze kodu zastąp tekst w polu
speechtym powitaniem:Welcome to Spelling Practice
Uwaga: do edytowania promptów możesz używać formatu YAML lub JSON.
- 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:
- Na górnym pasku nawigacyjnym kliknij Testuj, aby przejść do symulatora.
- Aby wywołać akcję w symulatorze, wpisz
Talk to Spelling Practicew polu wprowadzania w lewym górnym rogu, a następnie naciśnij Enter na klawiaturze.

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:

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:
- W menu nawigacyjnym u góry kliknij Rozwijaj. Następnie w menu po lewej stronie kliknij Główne wywołanie.
- W sekcji Przejście po prawej stronie kliknij menu, a następnie wpisz
Startw polu tekstowym.

- Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie
Starti poinformowanie działania, że po wyświetleniu użytkownikowi powitania ma przejść do scenyStart. - W menu po lewej stronie kliknij Sceny, aby wyświetlić listę scen.
- W sekcji Sceny kliknij Rozpocznij, aby wyświetlić scenę
Start. - W sekcji Po wejściu sceny
Startkliknij +. - Kliknij Wyślij prompty.
- 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:
- W scenie
Startkliknij sugestie pod edytorem kodu. Spowoduje to dodanie pojedynczego elementu sugestii. - W polu
titlezastąpSuggested Responsewartością'Yes'. - Ręcznie dodaj chipy z sugestiami o nazwach
'No'i'Help with Phonetics', używając tego samego formatowania. Kod powinien wyglądać podobnie do tego fragmentu: - Kliknij Zapisz.

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:
- Na pasku nawigacyjnym kliknij Test, aby przejść do symulatora.
- Aby przetestować działanie w symulatorze, wpisz
Talk to Spelling Practicew polu Input (Dane wejściowe). - Naciśnij Enter. Akcja powinna odpowiedzieć promptem
Main invocationi dodatkowym promptem scenyStart, „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ę:

- Aby odpowiedzieć na prompta, kliknij chip z sugestią
Yes,NolubHelp with Phonetics. (Możesz też powiedzieć „Tak” lub „Nie” albo „Pomoc z fonetyką” albo wpisaćYes,NolubHelp with Phoneticsw 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:
- W menu nawigacyjnym kliknij Tworzenie.
- W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
noi naciśnij Enter. - Kliknij nie, aby otworzyć stronę intencji
no. - W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
NoNI don't wantnope

- 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:
- W nawigacji kliknij scenę Start.
- Kliknij + (znak plusa) w scenie
Startobok opcji Obsługa zamiarów użytkownika. - W sekcji Intencja w menu wybierz nie.

- Kliknij Wyślij prompty i zastąp tekst w polu
speechtym tekstem:Good Bye.
Kod w edytorze powinien wyglądać jak ten fragment:
candidates:
- first_simple:
variants:
- speech: >-
Goodbye.
- W sekcji Przejście wybierz z menu Zakończ rozmowę.
- 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:
- Na pasku nawigacyjnym kliknij Test.
- Wpisz
Talk to Spelling Practicew polu Input (Dane wejściowe) i naciśnijEnter. - Wpisz
Now polu Dane wejściowe i naciśnij Enter. Możesz też kliknąć kartę Brak sugestii.

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:
- W nawigacji kliknij scenę Start.
- Kliknij + (znak plusa) na scenie
Startobok opcji Obsługa intencji użytkownika. - W sekcji Wszystkie intencje systemowe wybierz TAK w menu intencji.

- Kliknij Call your webhook (Wywołaj webhooka) i w polu tekstowym
event handlerwpisz utworzoną wcześniej funkcję:getSpellingWordList - W sekcji Przejście kliknij menu i wybierz Zakończ rozmowę.
- 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:
- Na pasku nawigacyjnym kliknij Test.
- Aby przetestować działanie w symulatorze, wpisz
Talk to Spelling Practicew polu Input (Dane wejściowe) i naciśnij Enter. - Wpisz
Yesw 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:
- W menu nawigacyjnym kliknij Tworzenie.
- W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
phoneticsi naciśnijEnter. - Kliknij intencję
phonetics, aby otworzyć stronę intencjiphonetics. - W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
how do I spell wordsphoneticshelp me with phoneticsphonetic alphabet

- 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:
- W nawigacji kliknij scenę Start.
- Kliknij + (znak plusa) w scenie
Startobok opcji Obsługa zamiarów użytkownika. - W menu intencji wybierz fonetyka.

- W sekcji Przejście kliknij menu i wybierz Zakończ rozmowę.
- 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:
- W menu nawigacyjnym u góry kliknij Rozwijaj. Następnie w menu po lewej stronie kliknij Rozpocznij scenę.
- 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 wpiszSpellingw polu tekstowym. - Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie
Spellingi poinformowanie działania, aby po dopasowaniu do intencji YES przejść do scenySpelling. - W menu nawigacyjnym po lewej stronie rozwiń Sceny, aby wyświetlić listę scen.
- W sekcji Sceny kliknij Pisownia, aby wyświetlić scenę
Spelling. - W sekcji Po wejściu sceny
Spellingkliknij +. - Kliknij Wywołaj webhooka i w polu tekstowym obsługi zdarzeń wpisz getSpellingWord.
- Kliknij Wyślij prompty.
- 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:
- W scenie
Spellingkliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie. - W polu
titlezastąpSuggested Responsewartością'Repeat'. - Ręcznie dodaj sugestię w formie przycisku o nazwie
'Skip', używając tego samego formatowania. - Ręcznie dodaj sugestię w formie przycisku o nazwie
'Quit', używając tego samego formatowania. Kod powinien wyglądać podobnie do tego fragmentu: - Kliknij Zapisz.
suggestions:
- title: 'Repeat'
- title: 'Skip'
- title: 'Quit'

Tworzenie intencji Repeat
Aby utworzyć intencję repeat, wykonaj te czynności:
- W menu nawigacyjnym kliknij Tworzenie.
- W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
repeati naciśnijEnter. - Kliknij intencję
repeat, aby otworzyć stronę intencjidefinition. - W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
one more time pleasesay the word againrepeat the wordtell me againrepeat

- 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:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) na scenie
Spellingobok opcji Obsługa intencji użytkownika. - W menu intencji wybierz repeat (powtórz).

- Zaznacz pole Call your webhook (Wywołaj webhook) i wpisz repeatSpellingWord w polu tekstowym obsługi zdarzeń, aby uzyskać definicję słowa.
- Zaznacz opcję Wyślij prompty.
- 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”
- 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.
- W polu
titlezastąpSuggested Responsewartością'Skip'. - 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'

- Kliknij Zapisz.
Tworzenie intencji definition
Aby utworzyć intencję definition, wykonaj te czynności:
- W menu nawigacyjnym kliknij Tworzenie.
- W panelu nawigacyjnym kliknij Custom Intents (Niestandardowe intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
definitioni naciśnijEnter. - Kliknij intencję
definition, aby otworzyć stronę intencjidefinition. - 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 definitiontell me the definitionwhat does it meanmeaningdefinitionwhat is the definition?

- 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:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) na scenie
Spellingobok opcji Obsługa intencji użytkownika. - W menu intencji wybierz definicję.

- Zaznacz pole Call your webhook (Wywołaj webhook) i wpisz definitionOfSpellingWord w polu tekstowym obsługi zdarzeń, aby uzyskać definicję słowa.
- Zaznacz opcję Wyślij prompty.
- 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
- W scenie
Startkliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie. - W polu
titlezastąpSuggested Responsewartością'Skip'. - 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'

- Kliknij Zapisz.
Tworzenie intencji skip
Aby utworzyć intencję skip, wykonaj te czynności:
- W menu nawigacyjnym kliknij Tworzenie.
- W menu kliknij Intencje, aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
skipi naciśnijEnter. - Kliknij intencję
skip, aby otworzyć stronę intencjiskip. - W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
next wordgo nextnextskipskip word

- 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:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) na scenie
Spellingobok opcji Obsługa intencji użytkownika. - W menu intencji kliknij Pomiń.

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

- Kliknij Zapisz.
Tworzenie intencji quit
Aby utworzyć intencję Quit, wykonaj te czynności:
- W menu nawigacyjnym kliknij Tworzenie.
- W menu kliknij Intencje, aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę
Quiti naciśnijEnter. - Kliknij intencję
Quit, aby otworzyć stronę intencji definicja. - W sekcji Dodaj wyrażenia na potrzeby trenowania kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
I quitGoodbyeCancelExitQuit

- 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:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) na scenie
Spellingobok opcji Obsługa intencji użytkownika. - W menu intencji wybierz quit (zakończ).

- W sekcji Przeniesienie po prawej stronie kliknij menu i wybierz
End conversation.
- 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:
- W menu nawigacyjnym kliknij Tworzenie.
- W sekcji Typy kliknij + (znak plusa).
- Wpisz
phonetic_alphabeti naciśnijEnter. - Kliknij
phonetic_alphabet, aby otworzyć opcje. - W sekcji Jakie rodzaje wartości będą obsługiwane przez ten typ? wybierz opcję Słowa i synonimy.
- 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:

- 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:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) na scenie
Spellingw sekcji Wypełnianie slotów. - W polu Wpisz nazwę slota dodaj
userresponsejako nazwę slota. - W menu Wybierz typ wybierz phonetic_alphabet jako typ slotu.
- Zaznacz To miejsce przyjmuje listę wartości.
- Zaznacz pole This slot is required (Ten slot jest wymagany).
- Wybierz opcję Dostosuj zapisywanie wartości slotu i w polu tekstowym parametru sesji wpisz userresponse.

- Kliknij Zapisz.
Dodawanie warunku do ekranu Spelling
Aby dodać warunek do sceny Spelling, wykonaj te czynności:
- W nawigacji kliknij scenę Spelling (Pisownia).
- Kliknij + (znak plusa) w scenie
Spellingobok pozycji Warunek. - Wpisz
scene.slots.status == "FINAL"jako warunek. - Zaznacz Wywołaj webhooka i wpisz verifySpellingWord w polu tekstowym obsługi zdarzeń, aby zweryfikować odpowiedź użytkownika.
- Zaznacz opcję Wysyłaj prompty.
- 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
- W scenie
Startkliknij sugestie pod edytorem kodu. To działanie dodaje 3 sugestie. - W polu
titlezastąpSuggested Responsewartością'Next'. - 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'

- Kliknij Zapisz.
12. Testowanie ćwiczeń z pisowni w symulatorze
Aby przetestować działanie w symulatorze, wykonaj te czynności:
- Na pasku nawigacyjnym kliknij Test, aby przejść do symulatora.
- Aby przetestować działanie w symulatorze, wpisz
Talk to Spelling Practicew polu Input (Dane wejściowe). - Naciśnij Enter. Akcja powinna odpowiedzieć promptem
Main invocationi dodatkowym promptem scenyStart, „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ć? - Powiedz Tak, aby kontynuować.
- Symulator odtworzy dźwięk słowa, które należy przeliterować.
- 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”.
- Symulator odpowie prawidłową lub nieprawidłową odpowiedzią.
- 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:
- Dokumentacja dotycząca tworzenia działań dla Asystenta Google
- Strona Actions on Google na GitHubie z przykładowym kodem i bibliotekami
- Oficjalna społeczność Reddit dla deweloperów korzystających z Asystenta Google
- Wytyczne dotyczące projektowania konwersacji zawierające sprawdzone metody i wytyczne dotyczące działań konwersacyjnych.
- Wprowadzenie do Cloud Firestore
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:
- 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.
- 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 i @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ć.