1. Omówienie
Platforma dla deweloperów Asystenta Google umożliwia tworzenie oprogramowania rozszerzającego funkcje Asystenta Google – wirtualnego osobistego asystenta – działa na ponad miliardzie urządzeń, w tym inteligentnych głośnikach, telefonach, samochodach, telewizorach, słuchawkach i nie tylko. Użytkownicy komunikują się z Asystentem, aby wykonać różne czynności, na przykład kupić produkty spożywcze lub zamówić przejazd. Jako deweloper możesz korzystać z platformy dla deweloperów Asystenta, aby łatwo tworzyć ciekawe i skuteczne rozmowy między użytkownikami i zewnętrzną usługą realizacji zamówień oraz nimi zarządzać.
To ćwiczenia w programie obejmują zagadnienia na poziomie średnio zaawansowanym dotyczące programowania przy użyciu Asystenta Google, Cloud Functions i Cloud Firestore. W ramach tego ćwiczenia w programie utworzysz grę o nazwie „Ćwiczenie pisowni” używający Asystenta Google, który prosi użytkowników o przeliterowanie słów.
Co utworzysz
Dzięki temu ćwiczeniu w Codelabs utworzysz zaawansowaną grę z tymi funkcjami:
- Otrzymuje od użytkownika odpowiedzi na pisownię i, w zależności od wartości, modyfikuje prompty konwersacyjne
- Odpowiada, podając wskazówki związane z pisownią słowa, np. jego definicję lub powtórzenie
- Tworzy pętlę gry, w której użytkownik może ponownie wejść w interakcję z Asystentem po wpisaniu słowa
Zanim zaczniesz tworzyć nowe treści, możesz korzystać z akcji na żywo na urządzeniu z Asystentem Google. Wystarczy, że powiesz „OK Google, porozmawiaj z Praktyka pisowni”. Domyślna ścieżka tego działania w przypadku powracającego użytkownika wygląda tak:
Po ukończeniu tego ćwiczenia w programie wykonana akcja będzie miała następujący przebieg rozmowy:
Czego się nauczysz
- Korzystanie z Cloud Firestore
- Jak używać przedziałów do zbierania danych od użytkownika
- Jak przetworzyć dane wejściowe użytkownika i zwrócić odpowiedź
- Jak za pomocą warunków dodać logikę do sceny
- Jak dodać pętlę gry
Czego potrzebujesz
Wymagania wstępne tego ćwiczenia w Codelabs to między innymi:
- przeglądarki, np. Google Chrome;
- IDE do zapisywania funkcji w Cloud Functions.
- formę płatności. To ćwiczenia w Codelabs wykorzystuje Cloud Functions dla Firebase, co wymaga, aby Twój projekt korzystał z abonamentu Firebase Blaze ( więcej informacji).
- Terminal do uruchamiania poleceń powłoki
- Node.js w wersji 10 lub nowszej
2. Pobieranie kodu funkcji
Skopiuj repozytorium GitHub, korzystając 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) i nadaj projektowi Firebase nazwę
Spelling-Practice
.
- Klikaj opcje tworzenia projektów. Zaakceptuj warunki korzystania z Firebase, jeśli pojawi się taka prośba. Pomiń konfigurowanie Google Analytics, ponieważ nie będziesz korzystać z Analytics w tej aplikacji.
Więcej informacji o projektach Firebase znajdziesz w artykule Omówienie projektów Firebase.
Przechodzenie na abonament Blaze
Aby używać Cloud Functions dla Firebase, musisz przejść na abonament Blaze, co oznacza, że do projektu podłączysz konto rozliczeniowe Google Cloud. Wymaga to podania karty kredytowej lub innej formy płatności.
Wszystkie projekty Firebase, w tym te w abonamencie Blaze, nadal mają dostęp do bezpłatnych limitów wykorzystania Cloud Functions. Kroki opisane w tym ćwiczeniu z programowania mieszczą się w limitach wykorzystania bezpłatnego. Możesz jednak zauważyć niewielkie opłaty ( około 0,03 USD) z usługi Cloud Storage używanej do hostowania obrazów kompilacji w Cloud Functions.
4. Instalowanie interfejsu wiersza poleceń Firebase
Interfejs wiersza poleceń Firebase (interfejs wiersza poleceń) umożliwia wdrażanie funkcji w Cloud Functions.
Dostępnych jest kilka opcji instalacji interfejsu wiersza poleceń Firebase w zależności od systemu operacyjnego i przypadku użycia. Poniżej opisujemy najczęstszą opcję, jeśli używasz też Cloud Functions.
- Upewnij się, że masz zainstalowany pakiet npm, do którego zwykle dołącza się Node.js.
- Zainstaluj lub uaktualnij interfejs wiersza poleceń, uruchamiając to polecenie npm:
$ npm -g install firebase-tools
- Sprawdź, czy interfejs wiersza poleceń został prawidłowo zainstalowany, uruchamiając polecenie:
$ firebase --version
Dopilnuj, aby interfejs wiersza poleceń Firebase w wersji 9.0.0 lub nowszej, aby miał dostęp do wszystkich najnowszych funkcji wymaganych przez Cloud Functions. Jeśli tak nie jest, uruchom npm install -g firebase-tools w sposób opisany powyżej.
- Autoryzuj interfejs wiersza poleceń Firebase, uruchamiając polecenie:
$ firebase login
- Z poziomu katalogu Write-functions-start skonfiguruj interfejs wiersza poleceń Firebase, aby korzystać z projektu Firebase. Uruchom podane niżej polecenie, wybierz identyfikator projektu i postępuj zgodnie z instrukcjami. Gdy pojawi się prośba, możesz wybrać dowolny alias, na przykład
codelab
.
$ firebase use --add
5. Katalog funkcji
Teraz dodasz funkcje korzystające z pakietu SDK Firebase dla Cloud Functions, aby utworzyć backend dla gry – Praktyka pisowni.
Dzięki Cloud Functions możesz mieć kod uruchamiany w chmurze bez konieczności konfigurowania serwera. Dzięki temu ćwiczeniu w Codelabs dowiesz się, jak tworzyć funkcje, które reagują na zdarzenia uwierzytelniania Firebase, Cloud Storage i zdarzeń w Bazie danych czasu rzeczywistego Firebase. Zacznijmy od uwierzytelniania.
Jeśli korzystasz z pakietu SDK Firebase dla Cloud Functions, kod Twoich funkcji będzie domyślnie umieszczony w katalogu functions
. Aby ułatwić Ci to zadanie, utworzyliśmy już plik functions/index.js
, w którym znajduje się Twój kod. Zanim przejdziesz dalej, sprawdź katalog functions
.
$ cd functions $ ls
Kod funkcji to również aplikacja Node.js i dlatego wymaga tagu package.json
, który zawiera pewne informacje o aplikacji i zawiera listę zależności.
Jeśli nie znasz jeszcze Node.js, dowiedz się więcej na ten temat, zanim przejdziesz do kolejnych ćwiczeń z programowania.
Plik package.json
zawiera już 2 wymagane zależności: pakiet SDK Firebase dla Cloud Functions i pakiet SDK Firebase Admin SDK. Aby zainstalować je lokalnie, uruchom aplikację npm install
z katalogu functions
:
$ npm install
Przyjrzyjmy się teraz plikowi index.js
:
plik 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 następnie napiszesz cztery funkcje w miejsce zadań do wykonania. Aby zaimportować moduły, przejdź do następnego kroku ćwiczenia w Codelabs.
6. Zaimportuj wymagane moduły
To ćwiczenie w Codelabs wymaga 3 modułów.
- Moduł
firebase-functions
umożliwia nam pisanie aktywatorów dla naszych funkcji w Cloud Functions. - Moduł
firebase-admin
pozwala nam korzystać z platformy Firebase na serwerze z dostępem administracyjnym, na przykład do zapisu w Cloud Firestore. - Biblioteka realizacji Node.js pakietu Actions SDK wykonuje moduły obsługi Actions SDK dla Asystenta Google.
- Zainstaluj pakiet Actions SDK, uruchamiając to polecenie npm:
$ npm install @assistant/conversation
- W pliku
index.js
zastąp pierwsze zadanie do wykonania następującym.
Te zmiany importują wszystkie wymagane moduły.
Pakiet Firebase Admin SDK można też skonfigurować automatycznie po wdrożeniu w środowisku Cloud Functions lub innym kontenerze Google Cloud. Oto co stanie się, gdy w poniższych zmianach wywołamy funkcję admin.initializeApp();
.
plik 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 obsługujących działania Asystenta.
7. Tworzenie funkcji
Uzyskiwanie definicji słów i zapisywanie ich w Cloud Firestore
Do pobrania definicji słów użyjesz publicznego interfejsu API dictionaryapi.dev
.
W pliku index.js
zastąp pozycję TODO for getWordDetailsFromDictionaryAPI
następującym:
plik 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 aktywuje się za każdym razem, gdy w Cloud Firestore zostanie utworzony nowy dokument. Wywołuje on interfejs API dictionaryapi.dev
, aby uzyskać definicje słów za pomocą funkcji getWordDetailsFromDictionaryAPI
, którą napisaliśmy powyżej.
W pliku index.js
zastąp pozycję TODO for createSpellingPracticeWord
następującym:
plik index.js
// Aktywator Firestore, który pobiera definicje słów za pomocą 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); });
Znajdź listę słów związanych z grą
Możesz napisać funkcję w Cloud Functions, która będzie pobierać z Cloud Firestore listę słów do ćwiczenia pisowni na potrzeby Asystenta. Do tego celu używamy modułu obsługi aplikacji.
W pliku index.js
zastąp pole TODO for getSpellingWordList
następującym fragmentem.
Dodanie tej funkcji do specjalnego elementu app.handle
umożliwia udostępnienie jej z poziomu Asystenta.
plik 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; }); }); })
Odczytaj słowo z sesji Asystenta
Możesz utworzyć funkcję w Cloud Functions, która zwróci następne słowo z listy.
W pliku index.js
zastąp pozycję TODO for getSpellingWord
następującym:
plik 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'); });
Aby powtórzyć słowo, włącz grę
Możesz napisać funkcję w Cloud Functions, która powtarza bieżące słowo związane z grą.
W pliku index.js
zastąp pozycję TODO for repeatSpellingWord
następującym:
plik 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'); });
Poznaj definicję słowa
Możesz napisać funkcję w Cloud Functions, która podaje definicję bieżącego słowa związanego z grą.
W pliku index.js
zastąp pozycję TODO for definitionOfSpellingWord
następującym:
plik 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); });
Sprawdzanie pisowni użytkownika
Możesz napisać funkcję w Cloud Functions, która weryfikuje odpowiedź użytkownika dotyczącą pisowni bieżącego słowa w grze.
W pliku index.js
zastąp pozycję TODO for verifySpellingWord
następującym:
plik 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);
Wdróż wszystkie funkcje
Funkcje w 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 konsoli, które powinny Ci się wyświetlić:
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 ActionsOnGoogleFulfillment w funkcji HTTP do późniejszego użycia. Aby uzyskać punkt końcowy, otwórz konsolę Firebase i kliknij projekt spelling-practice. Otwórz panel funkcji, aby wyświetlić punkt końcowy funkcji.
Wszystkie wymagane funkcje zostały dodane. 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 ustalić podstawowe reguły dotyczące danych. Kliknij Firestore, a następnie na karcie Reguły w konsoli Firebase dodaj poniższe reguły i kliknij Opublikuj.
Poniższe reguły ograniczają dostęp do danych tylko do zalogowanych użytkowników, co uniemożliwia nieuwierzytelnionym użytkownikom odczytywanie i zapisy.
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 o pisowni słów do Cloud Firestore
W tym kroku zapiszesz w Cloud Firestore dane na temat pisowni, co pozwoli Ci wygenerować listę słów dla Asystenta (i gry).
Dane Cloud Firestore są podzielone na kolekcje, dokumenty, pola i kolekcje podrzędne. Każde słowo w grze zostanie zapisane jako osobny dokument w kolekcji najwyższego poziomu o nazwie wordlist
. Dla każdego nowego dokumentu w kolekcji Firestore zostanie aktywowana funkcja createSpellingPracticeWord, aby pobrać szczegóły słów z usługi Dictionary API.
Tworzenie kolekcji Cloud Firestore
- W konsoli Firebase przejdź do sekcji Cloud Firestore.
- Kliknij + Rozpocznij kolekcję.
- W polu tekstowym Identyfikator kolekcji wpisz
wordlist
i kliknij Dalej.
Następnie utworzymy dokument dla słowa: umowa
- W polu tekstowym Identyfikator dokumentu wpisz
agreement
. - W polu tekstowym Pole wpisz
word
, a w polu Wartość wpiszagreement
. - Kliknij Zapisz.
Gdy dodasz ten dokument do Cloud Firestore, wywoła to funkcję createSpellingPracticeWord, która pobierze szczegóły definicji słowa. Dodaj więcej słów (na przykład: zachwyt, samochód, prawda, powiedz, lepiej, trasa do pracy itd.), tworząc nowy dokument dla każdego słowa.
10. Skonfiguruj Asystenta Google
W sekcjach poniżej opisujemy, jak skonfigurować środowisko programistyczne Asystenta Google i utworzyć projekt w Actions.
Sprawdzanie ustawień uprawnień Google
Aby przetestować akcję utworzoną w ramach tego ćwiczenia z programowania, musisz włączyć niezbędne uprawnienia, aby symulator miał dostęp do akcji. Aby włączyć uprawnienia, wykonaj następujące czynności:
- Otwórz stronę Zarządzanie aktywnością.
- W razie potrzeby zaloguj się na swoje konto Google.
- Włącz te uprawnienia:
- Aktywność w internecie i aplikacjach
- W sekcji Sieć i Aktywność w 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 Actions jest kontenerem dla Twojej akcji. Aby utworzyć projekt w Actions na potrzeby tego ćwiczenia z programowania, wykonaj te czynności:
- Otwórz konsolę Actions.
- Kliknij Nowy projekt.
- Zaakceptuj Warunki korzystania z usługi
- Wpisz lub wybierz obiekt
spelling-practice-codelab
utworzony w konsoli Firebase. (Nazwa ma służyć do celów wewnętrznych. Później możesz ustawić nazwę zewnętrzną projektu).
- Kliknij Import project (Importuj projekt).
- Na ekranie Jakie działanie chcesz utworzyć? wybierz kartę Niestandardowe.
- Kliknij Dalej.
- Wybierz kartę Pusty projekt.
- Kliknij Rozpocznij tworzenie.
- Jako wyświetlaną nazwę wpisz Praktyka pisowni i kliknij Zapisz.
Użytkownicy rozpoczynają rozmowę z akcją przez wywołanie. Użytkownicy mogą na przykład wywołać działanie, mówiąc „OK Google, porozmawiaj z Praktyka pisowni”, gdzie Praktyka pisowni to wyświetlana nazwa.
Akcja musi mieć wyświetlaną nazwę, jeśli chcesz ją wdrożyć w środowisku produkcyjnym. Aby przetestować działanie, nie musisz określać wyświetlanej nazwy. Zamiast tego możesz użyć wyrażenia „Talk to my test app” (Porozmawiaj z aplikacją testową) w symulatorze, aby wywołać działanie.
Skonfiguruj realizację
Musisz połączyć z Asystentem moduły obsługi zdarzeń dla funkcji w Cloud Functions napisanych i wdrożonych wcześniej w ramach tego ćwiczenia z programowania.
Aby skonfigurować realizację:
- Kliknij Webhook w bocznym panelu nawigacyjnym.
- Jako opcję realizacji wybierz Punkt końcowy HTTPS:
- Wpisz adres URL punktu końcowego funkcji w polu tekstowym Punkt końcowy HTTP i kliknij Zapisz.
W następnej sekcji dostosujesz w Konsoli Actions prompt dla głównego wywołania.
Skonfiguruj wywołanie główne
Musisz zmodyfikować główne wywołanie, aby zdefiniować, co się dzieje po wywołaniu akcji przez użytkownika.
Domyślnie Actions Builder wyświetla ogólny komunikat po wywołaniu wywołania („Zacznij tworzyć działanie przez zdefiniowanie głównego wywołania”).
Aby zmodyfikować prompt, który akcja wysyła do użytkownika, gdy wywołuje działanie, wykonaj te czynności:
- W menu nawigacyjnym kliknij Główne wywołanie.
- Zaznacz
Call your webhook
i w polu tekstowym dodaj nazwę modułu obsługi zdarzeńgetSpellingWordList
. - W edytorze kodu zastąp tekst w polu
speech
następującą wiadomością powitalną:Welcome to Spelling Practice
Uwaga: do edytowania promptów możesz używać formatowania YAML lub JSON.
- Kliknij Zapisz.
Testowanie głównego wywołania w symulatorze
Konsola Actions to symulator narzędzia internetowego do testowania akcji. Interfejs symuluje sprzęt i ich ustawienia, dzięki czemu możesz rozmawiać z akcją tak, jakby działała na inteligentnym ekranie, telefonie, głośniku lub KaiOS.
Aby przetestować główne wywołanie akcji w symulatorze, wykonaj te czynności:
- Na górnym pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
- Aby wywołać akcję w symulatorze, wpisz
Talk to Spelling Practice
w polu do wprowadzania danych w lewym górnym rogu i naciśnij Enter na klawiaturze.
Gdy aktywujesz główne wywołanie akcji, Asystent odpowie, wysyłając Twoją spersonalizowaną wiadomość powitalną. Na tym etapie rozmowa kończy się, gdy Asystent odpowie powitaniem.
Wyświetl logi zdarzeń
Na karcie Testowanie w panelu po prawej stronie widoczne są dzienniki zdarzeń, w których historia rozmowy jest widoczna w postaci dzienników zdarzeń. W dzienniku zdarzeń wyświetlane są zdarzenia, które miały miejsce podczas tego etapu rozmowy. Aby wyświetlić dziennik zdarzeń, kliknij szarą ikonę widoczną przed zdarzeniem.
Akcja ma obecnie 1 dziennik zdarzeń, który zawiera dane wejściowe użytkownika („Porozmawiaj z ćwiczeniem pisowni”) i Twoją odpowiedź. Poniższy zrzut ekranu przedstawia dziennik zdarzeń akcji:
11. Zachęcanie do rozmowy w ramach Praktyki pisowni
Skoro wiesz już, co się dzieje, gdy użytkownik wywoła Twoją akcję, możesz przejść do reszty rozmowy. Praktyka pisowni ma 4 sceny, które przed uruchomieniem musisz aktywować. Najczęstszym sposobem aktywowania sceny jest takie skonfigurowanie akcji, aby, gdy użytkownik odpowiada intencji użytkownika w danej scenie, wywoła ona przejście do innej sceny i aktywuje ją.
Przejście z głównego wywołania na scenę początkową
W tej sekcji utworzysz nową scenę o nazwie Start
, która wysyła użytkownikowi pytanie, czy chce zacząć grać w Praktyka pisowni. Możesz też dodać 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 Develop. Następnie kliknij Główne wywołanie w panelu nawigacyjnym po lewej stronie.
- W sekcji Przenoszenie po prawej stronie kliknij menu, a następnie wpisz
Start
w polu tekstowym.
- Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie
Start
i poinformowanie użytkownika o konieczności przejścia do scenyStart
po tym, jak akcja dostarczy użytkownikowi prompt powitalny. - Aby wyświetlić listę scen, w panelu nawigacyjnym po lewej stronie kliknij Sceny.
- W sekcji Sceny kliknij Rozpocznij, aby wyświetlić scenę
Start
. - Kliknij + w sekcji Po wejściu na scenie
Start
. - Wybierz Wyślij prośby.
- Zastąp zdanie w polu
speech
(Enter the response that users will see or hear...
) pytaniem, które ma zostać zadane 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?
Elementy z sugestią oferują użytkownikom klikalne sugestie, które akcja przetwarza jako dane wejściowe użytkownika. W tej sekcji dodasz elementy z sugestią widoczne pod nowo skonfigurowanym promptem (Do you want to play
)
Spelling Practice
?
).
Aby dodać elementy z sugestią do promptu sceny Start
, wykonaj te czynności:
- Na scenie
Start
kliknij sugestie pod edytorem kodu. To działanie dodaje jeden element z sugestią. - W polu
title
zastąpSuggested Response
wartością'Yes'
. - Używając tego samego formatowania, dodaj ręcznie element z sugestią o nazwie
'No'
i'Help with Phonetics'
. Twój kod powinien wyglądać jak następujący fragment: - Kliknij Zapisz.
Przetestuj działanie w symulatorze
W tym momencie akcja powinna przejść z głównego wywołania do sceny Start i zapytać użytkownika, czy chce kontynuować. Na symulowanym wyświetlaczu powinny też pojawiać się elementy z sugestiami.
Aby przetestować akcję w symulatorze, wykonaj te czynności:
- Na pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
- Aby przetestować akcję w symulatorze, wpisz
Talk to Spelling Practice
w polu do wprowadzania danych. - Naciśnij Enter. Akcja powinna odpowiedzieć, używając prompta
Main invocation
i dodanej scenyStart
: „Witamy w Praktyce pisowni. Użyj alfabetu fonetycznego, aby zapisać słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?".
Tę interakcję można zobaczyć na poniższym zrzucie ekranu:
- Aby odpowiedzieć na prompt, kliknij element z sugestią
Yes
,No
lubHelp with Phonetics
. Możesz też powiedzieć „Tak”, „Nie” lub „Pomoc dotycząca fonetyki” albo wpisaćYes
,No
lubHelp with Phonetics
w polu Dane wejściowe.
Gdy odpowiesz na prompt, akcja otrzyma w odpowiedzi komunikat informujący o tym, że nie może zrozumieć wprowadzonych przez Ciebie danych: „Nie rozumiem. Możesz spróbować jeszcze raz?”. Akcja nie została jeszcze skonfigurowana w taki sposób, aby rozumieła dane wejściowe „Tak” lub „Nie” i reagowała na nie, dlatego akcja dopasowuje te dane do intencji NO_MATCH
.
Domyślnie intencja systemowa NO_MATCH
dostarcza odpowiedzi ogólne, ale możesz je dostosować, aby pokazać użytkownikowi, że nie rozumiesz jego odpowiedzi. Asystent kończy rozmowę użytkownika z Twoją akcją, jeśli nie udało się jej dopasować 3 razy.
Dodaj intencje fonetyczne i nie
Użytkownicy mogą już odpowiedzieć na pytanie, jakie stawia akcja, możesz więc skonfigurować akcję, by poznać zachowania użytkowników odpowiedzi („Tak” lub „Nie” lub „Pomoc dotycząca fonetyki”). W kolejnych sekcjach tworzysz intencje użytkowników, które zostaną dopasowane, gdy użytkownik powie „Tak”, „Nie” lub „Pomoc z fonetyką” i dodać te intencje do sceny Start
. Wykorzystamy intencję systemową yes
i utworzymy inne intencje.
Utwórz intencję no
Teraz musisz utworzyć intencję no
, aby zrozumieć użytkownika i odpowiednio reagować, gdy nie chce on grać w grę. Aby utworzyć intencję, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nadaj nazwę nowej intencji
no
i naciśnij Enter. - Kliknij nie, aby otworzyć stronę intencji
no
. - W sekcji Dodaj wyrażenia na potrzeby nauki kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
No
N
I don't want
nope
- Kliknij Zapisz.
Dodaj intencję no
do Start
scen
Akcja wykrywa teraz, kiedy użytkownik wypowiada „no” lub coś podobnego do „no”, na przykład „nope”. Musisz dodać intencję użytkownika no
do sceny Start
, ponieważ użytkownik odpowiada na prompt Start
(„Witamy w Praktyce pisowni. Użyj alfabetu fonetycznego, aby zapisać słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?).
Aby dodać tę intencję do sceny Start
, wykonaj te czynności:
- W menu nawigacyjnym kliknij scenę Start.
- Kliknij + (znak plus) w scenie
Start
obok pozycji „Obsługa intencji użytkownika”. - W sekcji Intencja w menu wybierz nie.
- Kliknij Wysyłaj prompty i wprowadź w polu
speech
ten tekst:Good Bye
.
Kod w edytorze powinien wyglądać tak:
candidates: - first_simple: variants: - speech: >- Goodbye.
- W sekcji Przenoszenie wybierz z menu Zakończ rozmowę.
- Kliknij Zapisz.
Przetestowanie intencji no
w symulatorze
Na tym etapie akcja rozumie, że użytkownik nie chce grać w grę, i zwraca odpowiednią odpowiedź.
Aby przetestować tę intencję za pomocą symulatora, wykonaj te czynności:
- Na pasku nawigacyjnym kliknij Przetestuj.
- W polu do wprowadzania danych wpisz
Talk to Spelling Practice
i naciśnijEnter
. - Wpisz
No
w polu Wejście i naciśnij Enter. Możesz też kliknąć element Brak sugestii.
Dodaj intencję systemową YES
do Start
sceny
Teraz dodamy do sceny Start
intencję SYSTEM „YES”, ponieważ użytkownik odpowiada tak na prompt Start
(„Witamy w Praktyce pisowni. Użyj alfabetu fonetycznego, aby zapisać słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?).
Aby dodać tę intencję użytkownika do sceny Start
, wykonaj te czynności:
- W menu nawigacyjnym kliknij scenę Start.
- Kliknij + (znak plus) w scenie
Start
obok pozycji Obsługa intencji użytkownika. - W sekcji All System Intents (Wszystkie intencje systemowe) w menu intencji wybierz YES (TAK).
- Kliknij Wywołaj webhooka i zaktualizuj pole tekstowe
event handler
przy użyciu utworzonej wcześniej funkcji:getSpellingWordList
- W sekcji Przenoszenie kliknij menu i wybierz Zakończ rozmowę.
- Kliknij Zapisz.
Przetestowanie intencji YES
w symulatorze
Na tym etapie akcja wie, kiedy użytkownik chce zagrać w grę, i zwraca odpowiednią odpowiedź.
Aby przetestować tę intencję za pomocą symulatora, wykonaj te czynności:
- Na pasku nawigacyjnym kliknij Przetestuj.
- Aby przetestować akcję w symulatorze, wpisz
Talk to Spelling Practice
w polu Wejście i naciśnij Enter. - Wpisz
Yes
w polu Wejście i naciśnij Enter. Możesz też kliknąć element z sugestiąYes
.
Akcja pobiera listę wszystkich słów do ćwiczenia pisowni i zapisuje je w danej sesji. Akcja kończy sesję, ponieważ dla intencji YES
zostało wybrane przejście End conversation
.
Utwórz intencję Phonetics
Aby utworzyć intencję Phonetics
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję
phonetics
i kliknijEnter
. - Kliknij intencję
phonetics
, aby otworzyć stronę intencjiphonetics
. - W sekcji Dodaj wyrażenia na potrzeby nauki kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
how do I spell words
phonetics
help me with phonetics
phonetic alphabet
- Kliknij Zapisz.
Dodaj intencję phonetics
do Start
scen
Dzięki temu akcja może rozpoznać, 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 Praktyce pisowni. Użyj alfabetu fonetycznego, aby zapisać słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?).
Aby dodać tę intencję użytkownika do sceny Start
, wykonaj te czynności:
- W menu nawigacyjnym kliknij scenę Start.
- Kliknij znak plusa (+) na scenie
Start
obok pozycji „Obsługa intencji użytkownika”. - W menu intencji wybierz fonetykę.
- W sekcji Przenoszenie kliknij menu i wybierz Zakończ rozmowę.
- Kliknij Zapisz.
Przejście ze sceny początkowej na scenę pisowni
W tej sekcji utworzysz nową scenę o nazwie Pisownia, która wyśle użytkownikowi prośbę o przepisanie słowa przy użyciu alfabetu fonetycznego.
Aby utworzyć tę scenę i dodać do niej przejście, wykonaj te czynności:
- W menu nawigacyjnym u góry kliknij Develop. Następnie kliknij Rozpocznij scenę w panelu nawigacyjnym po lewej stronie.
- W sekcji Obsługa intencji użytkowników kliknij
when actions.intent.YES is matched
, a następnie w sekcji Przenoszenie po prawej stronie kliknij menu i wpiszSpelling
w polu tekstowym. - Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie
Spelling
i poinstruowanie działania, że ma przejść do scenySpelling
po dopasowaniu z intencją YES. - Aby zobaczyć listę scen, rozwiń sekcję Sceny w panelu nawigacyjnym po lewej stronie.
- W sekcji Sceny kliknij Pisownia, aby wyświetlić scenę
Spelling
. - Kliknij + w sekcji Po wejściu na scenie
Spelling
. - Kliknij Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz getSpellingWord.
- Wybierz Wyślij prośby.
- Zamień zdanie w polu
speech
(Enter the response that users will see or hear...
) na {}. Rzeczywisty prompt zostanie uzupełniony przez webhooka.
Elementy z sugestią oferują użytkownikom klikalne sugestie, które akcja przetwarza jako dane wejściowe użytkownika.
Aby dodać elementy z sugestią do promptu sceny Spelling
, wykonaj te czynności:
- Na scenie
Spelling
kliknij sugestie pod edytorem kodu. To działanie spowoduje dodanie 3 elementów z sugestią. - W polu
title
zastąpSuggested Response
wartością'Repeat'
. - Używając tego samego formatowania, ręcznie dodaj element z sugestią o nazwie
'Skip'
. - Używając tego samego formatowania, ręcznie dodaj element z sugestią o nazwie
'Quit'
. Twój kod powinien wyglądać jak następujący fragment: - Kliknij Zapisz.
suggestions: - title: 'Repeat' - title: 'Skip' - title: 'Quit'
Utwórz intencję Repeat
Aby utworzyć intencję repeat
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję
repeat
i kliknijEnter
. - Kliknij intencję
repeat
, aby otworzyć stronę intencjidefinition
. - W sekcji Dodaj wyrażenia na potrzeby nauki 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
- Kliknij Zapisz.
Dodaj intencję repeat
do Spelling
scen
Akcja może teraz rozpoznać, kiedy użytkownik wyraża intencję „powtórz”. 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ć tę intencję użytkownika do sceny Spelling
, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
obok pozycji Obsługa intencji użytkownika. - Z menu intencji wybierz Powtarzaj.
- Aby uzyskać definicję słowa, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz repeatingWord.
- Zaznacz Wysyłaj potwierdzenia.
- Zastąp zdanie w polu
speech
(Enter the response that users will see or hear...
) znakiem „”. Rzeczywisty prompt zostanie uzupełniony przez webhooka.
Dodawanie elementów z sugestią do sekcji „Gdy powtórzenie zostanie dopasowane”
- W sekcji „Gdy powtarzanie jest dopasowywane” W sekcji „Obsługa intencji użytkowników” kliknij sugestie pod edytorem kodu. To działanie spowoduje dodanie 3 elementów z sugestią.
- W polu
title
zastąpSuggested Response
wartością'Skip'
. - Używając tego samego formatowania, dodaj ręcznie element z sugestią o nazwie
'Quit'
.Twój kod powinien wyglądać tak:
suggestions: - title: 'Skip' - title: 'Quit'
- Kliknij Zapisz.
Utwórz intencję definition
Aby utworzyć intencję definition
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję
definition
i kliknijEnter
. - Kliknij intencję
definition
, aby otworzyć stronę intencjidefinition
. - W sekcji Dodaj wyrażenia na potrzeby nauki 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?
- Kliknij Zapisz.
Dodaj intencję definition
do Spelling
scen
Akcja wie, kiedy użytkownik wyraża intencję „definition”. 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ć tę intencję użytkownika do sceny Spelling
, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
obok pozycji Obsługa intencji użytkownika. - W menu intencji kliknij definition (definicja).
- Aby uzyskać definicję słowa, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz definitionOfSpellingWord.
- Zaznacz Wysyłaj potwierdzenia.
- Zamień zdanie w polu
speech
(Enter the response that users will see or hear...
) na „„”. Rzeczywisty prompt zostanie uzupełniony przez webhooka.
Dodaj elementy z sugestią do odpowiedzi webhooka
- Na scenie
Start
pod edytorem kodu kliknij Sugestie. To działanie spowoduje dodanie 3 elementów z sugestią. - W polu
title
zastąpSuggested Response
wartością'Skip'
. - Używając tego samego formatowania, dodaj ręcznie element z sugestią o nazwie
'Quit'
.Twój kod powinien wyglądać tak:
suggestions: - title: 'Skip' - title: 'Quit'
- Kliknij Zapisz.
Utwórz intencję skip
Aby utworzyć intencję skip
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Intents (Intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję
skip
i kliknijEnter
. - Kliknij intencję
skip
, aby otworzyć stronę intencjiskip
. - W sekcji Dodaj wyrażenia na potrzeby nauki kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
next word
go next
next
skip
skip word
- Kliknij Zapisz.
Dodaj intencję Skip
do Spelling
scen
Akcja rozpoznaje teraz, kiedy użytkownik wyraża intencję „pomiń”. 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ć tę intencję użytkownika do sceny Spelling
, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
obok opcji Połączenie z zamiarami użytkownika. - W menu intencji wybierz pomiń.
- W sekcji Przenoszenie po prawej stronie kliknij menu i wybierz
Spelling
.
- Kliknij Zapisz.
Utwórz intencję quit
Aby utworzyć intencję Quit
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W menu nawigacyjnym kliknij Intents (Intencje), aby otworzyć listę intencji.
- Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję
Quit
i kliknijEnter
. - Kliknij intencję
Quit
, aby otworzyć stronę intencji z definicją. - W sekcji Dodaj wyrażenia na potrzeby nauki kliknij pole tekstowe Wpisz wyrażenie i wpisz te wyrażenia:
I quit
Goodbye
Cancel
Exit
Quit
- Kliknij Zapisz.
Dodaj intencję Quit
do Spelling
scen
Dzięki temu akcja może rozpoznać, kiedy użytkownik wyraża zamiar "quit". 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ć tę intencję użytkownika do sceny Spelling
, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
obok pozycji Obsługa intencji użytkownika. - W menu intencji kliknij Zakończ.
- W sekcji Przenoszenie po prawej stronie kliknij menu i wybierz
End conversation
. - Kliknij Zapisz.
Utwórz typ phonetic_alphabet
W tej sekcji utworzysz nowy typ o nazwie phonetic_alphabet
, który określa opcje alfabetu fonetycznego, które użytkownicy mogą wybrać, aby przeliterować słowo. Możesz też zdefiniować kilka synonimów tych opcji, na wypadek gdyby użytkownik powiedział coś podobnego. W dalszej sekcji dodasz do boksu typ phonetic_alphabet
, aby wskazać, że chcesz uzyskać odpowiedź użytkownika.
Aby utworzyć typ phonetic_alphabet
, wykonaj te czynności:
- W menu nawigacyjnym kliknij Develop.
- W sekcji Typy kliknij + (znak plus).
- Wpisz
phonetic_alphabet
i naciśnijEnter
. - Kliknij
phonetic_alphabet
, aby otworzyć opcje. - W sekcji Jakiego rodzaju wartości obsługuje ten typ? wybierz opcję Słowa i synonimy.
- W sekcji Dodaj wpisy wpisz następujące wpisy i odpowiadające im wartości:
A | alfa, jabłko, amsterdam |
B | bravo, masło, baltimore |
C | charlie, kot, casablanca |
D | delta, pies, dania |
E | echo, edward, edison |
F | foxtrot, lis, floryda |
G | golf, george, gallipoli |
godz. | hotel, harry, hawana |
I | india, atrament, Włochy |
J | Julia, jan, Jerozolima |
tys. | kilo, king, kilogram |
L | lima, miłość, londyn |
min | mike, pieniądze, madagaskar |
N | listopad, nowy jork, nancy |
O | oscar, pomarańczowy, oslo |
P | papa, paryż, piotr |
K | quebec, królowa |
R | romeo, roma, robert |
s | sierra, cukier, santiago |
T | tango, tommy, Tripoli |
U | mundur, parasol, wujek |
V | victor, ocet, Walencja |
t | whiskey, william, Waszyngton |
X | rentgen |
L | yankee, żółty, yorker |
Z | zulu, zebra, zurych |
Tabela par klucz-wartość powinna wyglądać tak:
- Kliknij Zapisz.
Skonfiguruj wypełnianie przedziałów
Następnie trzeba skonfigurować wypełnianie przedziałów w scenie Pisownia. Aby skonfigurować logikę wypełniania przedziałów, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
przy Wypełnianiu przedziałów. - W polu Wpisz nazwę boksu dodaj
userresponse
jako nazwę boksu. - W menu Wybierz typ jako typ boksu wybierz phonetic_alphabet.
- Zaznacz Ten boks akceptuje listę wartości.
- Zaznacz Ten przedział jest wymagany.
- Wybierz opcję Dostosuj zapis wartości przedziału czasowego i wpisz odpowiedź użytkownika w polu tekstowym parametru sesji.
- Kliknij Zapisz.
Dodaj warunek do ekranu Spelling
Aby dodać warunek do sceny Spelling
, wykonaj te czynności:
- Kliknij scenę Pisownia w menu nawigacyjnym.
- Kliknij + (znak plus) w scenie
Spelling
obok opcji Warunek. - Jako warunek wpisz
scene.slots.status == "FINAL"
- Aby zweryfikować odpowiedź użytkownika, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzenia wpisz verifySpellingWord.
- Zaznacz Wysyłaj potwierdzenia.
- Zamień zdanie w polu
speech
(Enter the response that users will see or hear...
) na {}. Rzeczywisty prompt zostanie uzupełniony przez webhooka.
Dodaj elementy z sugestią do odpowiedzi webhooka
- Na scenie
Start
pod edytorem kodu kliknij Sugestie. To działanie spowoduje dodanie 3 elementów z sugestią. - W polu
title
zastąpSuggested Response
wartością'Next'
. - Używając tego samego formatowania, dodaj ręcznie element z sugestią o nazwie
'Quit'
.Twój kod powinien wyglądać tak:
suggestions: - title: 'Next' - title: 'Quit'
- Kliknij Zapisz.
12. Ćwiczenie pisowni w symulatorze
Aby przetestować akcję w symulatorze, wykonaj te czynności:
- Na pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
- Aby przetestować akcję w symulatorze, wpisz
Talk to Spelling Practice
w polu do wprowadzania danych. - Naciśnij Enter. Akcja powinna odpowiedzieć, używając prompta
Main invocation
i dodanej scenyStart
: „Witamy w Praktyce pisowni. Użyj alfabetu fonetycznego, aby zapisać słowo. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?". - Powiedz Tak, aby kontynuować
- Symulator odtworzy nagranie słowa do przeliterowania
- Możesz przeliterować to słowo za pomocą alfabetu fonetycznego. Na przykład dla lepszych powiedz lub wpisz „bravo echo tango tango echo romeo”.
- Symulator odpowiedzi udzieli poprawnej lub nieprawidłowej odpowiedzi.
- Powiedz next, by przejść do następnego słowa, lub zamknij, by zamknąć pętlę gry.
13. Gratulacje
Gratulacje, udało Ci się utworzyć grę – Ćwiczenie pisowni.
Znasz już najważniejsze kroki wymagane do utworzenia gry przy użyciu Cloud Firestore, Cloud Functions i narzędzia do tworzenia działań Asystenta Google.
Omawiane tematy
- Korzystanie z Cloud Firestore
- Jak używać przedziałów do zbierania danych od użytkownika
- Jak przetworzyć dane wejściowe użytkownika i zwrócić odpowiedź
- Jak za pomocą warunków dodać logikę do sceny
- Jak dodać pętlę gry
Dodatkowe materiały szkoleniowe
Z tych materiałów dowiesz się, jak tworzyć Akcje dla Asystenta Google:
- Dokumentacja dotycząca programowania Actions for Google Assistant
- Strona Actions on Google GitHub z przykładowym kodem i bibliotekami
- Oficjalna społeczność na Reddicie dla deweloperów pracujących z Asystentem Google
- Sprawdzone metody i wytyczne dotyczące akcji związanych z rozmowami znajdziesz w wytycznych dotyczących projektowania rozmów.
- Wprowadzenie do Cloud Firestore
Czyszczenie projektu [zalecane]
Aby uniknąć ewentualnych opłat, zalecamy usunięcie projektów, których nie chcesz używać. Aby usunąć projekty utworzone w ramach tego ćwiczenia z programowania, wykonaj te czynności:
- Aby usunąć projekt Firebase i zasoby, wykonaj czynności podane w sekcji Wyłączanie (usuwanie) projektów.
Uwaga: 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, po około 30 dniach Twój projekt zostanie automatycznie usunięty.
Obserwuj @ActionsOnGoogle oraz @Firebase na Twitterze, aby być na bieżąco z najnowszymi ogłoszeniami. Opublikuj tweeta z hashtagiem #GoogleIO, aby podzielić się z nami tym, co udało Ci się osiągnąć.