Ćwiczenie pisowni w Asystencie Google i Cloud Firestore

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:

2e9f94dc0ceafc96.png

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

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

66ae8d1894f4477.png

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

  1. Upewnij się, że masz zainstalowany pakiet npm, do którego zwykle dołącza się Node.js.
  2. Zainstaluj lub uaktualnij interfejs wiersza poleceń, uruchamiając to polecenie npm:
$ npm -g install firebase-tools
  1. 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.

  1. Autoryzuj interfejs wiersza poleceń Firebase, uruchamiając polecenie:
$ firebase login
  1. 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.
  1. Zainstaluj pakiet Actions SDK, uruchamiając to polecenie npm:
$ npm install @assistant/conversation
  1. 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.

332cb0437411a242.png

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.

5c0b4abf4410ffcf.png

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

  1. W konsoli Firebase przejdź do sekcji Cloud Firestore.
  2. Kliknij + Rozpocznij kolekcję.
  3. W polu tekstowym Identyfikator kolekcji wpisz wordlist i kliknij Dalej.

1b4ccadb90f52f02.png

Następnie utworzymy dokument dla słowa: umowa

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

379037e011e8511e.png

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:

  1. Otwórz stronę Zarządzanie aktywnością.
  2. W razie potrzeby zaloguj się na swoje konto Google.
  3. 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.

C988e1e639e6d6e1.png

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:

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

B174d45710b8086b.png

  1. 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).

A2951de5d2001fac.png

  1. Kliknij Import project (Importuj projekt).
  2. Na ekranie Jakie działanie chcesz utworzyć? wybierz kartę Niestandardowe.
  3. Kliknij Dalej.
  4. Wybierz kartę Pusty projekt.
  5. Kliknij Rozpocznij tworzenie.
  6. 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ę:

  1. Kliknij Webhook w bocznym panelu nawigacyjnym.
  2. Jako opcję realizacji wybierz Punkt końcowy HTTPS:

d523bf003e96e66f.png

  1. Wpisz adres URL punktu końcowego funkcji w polu tekstowym Punkt końcowy HTTP i kliknij Zapisz.

be53e2cd0d914d54.png

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:

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

9ff088c04c995cde.png

  1. Zaznacz Call your webhook i w polu tekstowym dodaj nazwę modułu obsługi zdarzeń getSpellingWordList.
  2. 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.

  1. 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:

  1. Na górnym pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
  2. 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.

651fc8da1ac9aa0a.png

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:

A6fb192f94426824.png

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:

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

dd4f1807a57f794d.png

  1. Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie Start i poinformowanie użytkownika o konieczności przejścia do sceny Start po tym, jak akcja dostarczy użytkownikowi prompt powitalny.
  2. Aby wyświetlić listę scen, w panelu nawigacyjnym po lewej stronie kliknij Sceny.
  3. W sekcji Sceny kliknij Rozpocznij, aby wyświetlić scenę Start.
  4. Kliknij + w sekcji Po wejściu na scenie Start.
  5. Wybierz Wyślij prośby.
  6. 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:

  1. Na scenie Start kliknij sugestie pod edytorem kodu. To działanie dodaje jeden element z sugestią.
  2. W polu title zastąp Suggested Response wartością 'Yes'.
  3. 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:
  4. Kliknij Zapisz.

5ff2ecdc56801b91.png

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:

  1. Na pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
  2. Aby przetestować akcję w symulatorze, wpisz Talk to Spelling Practice w polu do wprowadzania danych.
  3. Naciśnij Enter. Akcja powinna odpowiedzieć, używając prompta Main invocation i dodanej sceny 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ć?".

Tę interakcję można zobaczyć na poniższym zrzucie ekranu:

338c9570b02a618e.png

  1. Aby odpowiedzieć na prompt, kliknij element z sugestią Yes, No lub Help with Phonetics. Możesz też powiedzieć „Tak”, „Nie” lub „Pomoc dotycząca fonetyki” albo wpisać Yes, No lub Help 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:

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nadaj nazwę nowej intencji no i naciśnij Enter.
  4. Kliknij nie, aby otworzyć stronę intencji no.
  5. 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

98b0c9a7b67ea9b9.png

  1. 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:

  1. W menu nawigacyjnym kliknij scenę Start.
  2. Kliknij + (znak plus) w scenie Start obok pozycji „Obsługa intencji użytkownika”.
  3. W sekcji Intencja w menu wybierz nie.

51f752e78c8b4942.png

  1. 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.
  1. W sekcji Przenoszenie wybierz z menu Zakończ rozmowę.
  2. 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:

  1. Na pasku nawigacyjnym kliknij Przetestuj.
  2. W polu do wprowadzania danych wpisz Talk to Spelling Practice i naciśnij Enter.
  3. Wpisz No w polu Wejście i naciśnij Enter. Możesz też kliknąć element Brak sugestii.

7727a456b522f31b.png

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:

  1. W menu nawigacyjnym kliknij scenę Start.
  2. Kliknij + (znak plus) w scenie Start obok pozycji Obsługa intencji użytkownika.
  3. W sekcji All System Intents (Wszystkie intencje systemowe) w menu intencji wybierz YES (TAK).

f6cbe789cde49e8f.png

  1. Kliknij Wywołaj webhooka i zaktualizuj pole tekstowe event handler przy użyciu utworzonej wcześniej funkcji: getSpellingWordList
  2. W sekcji Przenoszenie kliknij menu i wybierz Zakończ rozmowę.
  3. 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:

  1. Na pasku nawigacyjnym kliknij Przetestuj.
  2. Aby przetestować akcję w symulatorze, wpisz Talk to Spelling Practice w polu Wejście i naciśnij Enter.
  3. 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:

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję phonetics i kliknij Enter.
  4. Kliknij intencję phonetics, aby otworzyć stronę intencji phonetics.
  5. 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

1455bdfca8dae46.png

  1. 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:

  1. W menu nawigacyjnym kliknij scenę Start.
  2. Kliknij znak plusa (+) na scenie Start obok pozycji „Obsługa intencji użytkownika”.
  3. W menu intencji wybierz fonetykę.

67ee2e08000b2aee.png

  1. W sekcji Przenoszenie kliknij menu i wybierz Zakończ rozmowę.
  2. 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:

  1. W menu nawigacyjnym u góry kliknij Develop. Następnie kliknij Rozpocznij scenę w panelu nawigacyjnym po lewej stronie.
  2. 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 wpisz Spelling w polu tekstowym.
  3. Kliknij Dodaj. Spowoduje to utworzenie sceny o nazwie Spelling i poinstruowanie działania, że ma przejść do sceny Spelling po dopasowaniu z intencją YES.
  4. Aby zobaczyć listę scen, rozwiń sekcję Sceny w panelu nawigacyjnym po lewej stronie.
  5. W sekcji Sceny kliknij Pisownia, aby wyświetlić scenę Spelling.
  6. Kliknij + w sekcji Po wejściu na scenie Spelling.
  7. Kliknij Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz getSpellingWord.
  8. Wybierz Wyślij prośby.
  9. 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:

  1. Na scenie Spelling kliknij sugestie pod edytorem kodu. To działanie spowoduje dodanie 3 elementów z sugestią.
  2. W polu title zastąp Suggested Response wartością 'Repeat'.
  3. Używając tego samego formatowania, ręcznie dodaj element z sugestią o nazwie 'Skip'.
  4. 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:
  5. Kliknij Zapisz.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

e1d437f714ea1539.png

Utwórz intencję Repeat

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

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję repeat i kliknij Enter.
  4. Kliknij intencję repeat, aby otworzyć stronę intencji definition.
  5. 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

E61f0b9f80510bc9.png

  1. 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:

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling obok pozycji Obsługa intencji użytkownika.
  3. Z menu intencji wybierz Powtarzaj.

5cfd623b25bedbed.png

  1. Aby uzyskać definicję słowa, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz repeatingWord.
  2. Zaznacz Wysyłaj potwierdzenia.
  3. 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”

  1. 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ą.
  2. W polu title zastąp Suggested Response wartością 'Skip'.
  3. 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'

ab40e4b0c432b97c.png

  1. Kliknij Zapisz.

Utwórz intencję definition

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

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Custom Intents (Intencje niestandardowe), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję definition i kliknij Enter.
  4. Kliknij intencję definition, aby otworzyć stronę intencji definition.
  5. 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?

c1b88a9c0b1ac082.png

  1. 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:

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling obok pozycji Obsługa intencji użytkownika.
  3. W menu intencji kliknij definition (definicja).

646bdcac3ad3eb0c.png

  1. Aby uzyskać definicję słowa, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzeń wpisz definitionOfSpellingWord.
  2. Zaznacz Wysyłaj potwierdzenia.
  3. 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

  1. Na scenie Start pod edytorem kodu kliknij Sugestie. To działanie spowoduje dodanie 3 elementów z sugestią.
  2. W polu title zastąp Suggested Response wartością 'Skip'.
  3. 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'

25227545839d933f.png

  1. Kliknij Zapisz.

Utwórz intencję skip

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

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Intents (Intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję skip i kliknij Enter.
  4. Kliknij intencję skip, aby otworzyć stronę intencji skip.
  5. 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

D1c4908a3d7882f8.png

  1. 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:

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling obok opcji Połączenie z zamiarami użytkownika.
  3. W menu intencji wybierz pomiń.

5465f97542217964.png

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

c8072485ca82bd3f.png

  1. Kliknij Zapisz.

Utwórz intencję quit

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

  1. W menu nawigacyjnym kliknij Develop.
  2. W menu nawigacyjnym kliknij Intents (Intencje), aby otworzyć listę intencji.
  3. Kliknij + (znak plusa) na końcu listy intencji. Nazwij nową intencję Quit i kliknij Enter.
  4. Kliknij intencję Quit, aby otworzyć stronę intencji z definicją.
  5. 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

9916f77b8766541e.png

  1. 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:

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling obok pozycji Obsługa intencji użytkownika.
  3. W menu intencji kliknij Zakończ.

5f62fb18a3653d66.png

  1. W sekcji Przenoszenie po prawej stronie kliknij menu i wybierz End conversation . 1ffbe35a7bbbb4b0.png
  2. 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:

  1. W menu nawigacyjnym kliknij Develop.
  2. W sekcji Typy kliknij + (znak plus).
  3. Wpisz phonetic_alphabet i naciśnij Enter.
  4. Kliknij phonetic_alphabet, aby otworzyć opcje.
  5. W sekcji Jakiego rodzaju wartości obsługuje ten typ? wybierz opcję Słowa i synonimy.
  6. 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:

5b5a5cd9fa557e1b.png

  1. 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:

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling przy Wypełnianiu przedziałów.
  3. W polu Wpisz nazwę boksu dodaj userresponse jako nazwę boksu.
  4. W menu Wybierz typ jako typ boksu wybierz phonetic_alphabet.
  5. Zaznacz Ten boks akceptuje listę wartości.
  6. Zaznacz Ten przedział jest wymagany.
  7. Wybierz opcję Dostosuj zapis wartości przedziału czasowego i wpisz odpowiedź użytkownika w polu tekstowym parametru sesji.

ba57a419877a07f3.png

  1. Kliknij Zapisz.

Dodaj warunek do ekranu Spelling

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

  1. Kliknij scenę Pisownia w menu nawigacyjnym.
  2. Kliknij + (znak plus) w scenie Spelling obok opcji Warunek.
  3. Jako warunek wpisz scene.slots.status == "FINAL"
  4. Aby zweryfikować odpowiedź użytkownika, zaznacz Wywołaj webhooka i w polu tekstowym modułu obsługi zdarzenia wpisz verifySpellingWord.
  5. Zaznacz Wysyłaj potwierdzenia.
  6. 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

  1. Na scenie Start pod edytorem kodu kliknij Sugestie. To działanie spowoduje dodanie 3 elementów z sugestią.
  2. W polu title zastąp Suggested Response wartością 'Next'.
  3. 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'

ac3d7a9366ebc1b1.png

  1. Kliknij Zapisz.

12. Ćwiczenie pisowni w symulatorze

Aby przetestować akcję w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Przetestuj, aby przejść do symulatora.
  2. Aby przetestować akcję w symulatorze, wpisz Talk to Spelling Practice w polu do wprowadzania danych.
  3. Naciśnij Enter. Akcja powinna odpowiedzieć, używając prompta Main invocation i dodanej sceny 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ć?".
  4. Powiedz Tak, aby kontynuować
  5. Symulator odtworzy nagranie słowa do przeliterowania
  6. Możesz przeliterować to słowo za pomocą alfabetu fonetycznego. Na przykład dla lepszych powiedz lub wpisz „bravo echo tango tango echo romeo”.
  7. Symulator odpowiedzi udzieli poprawnej lub nieprawidłowej odpowiedzi.
  8. 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:

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:

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

  1. 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ąć.