Gra ćwicząca ortografię z wykorzystaniem Asystenta Google i Cloud Firestore

1. Przegląd

Platforma programistyczna Asystenta Google umożliwia tworzenie oprogramowania rozszerzającego funkcjonalność Asystenta Google, wirtualnego asystenta osobistego, na ponad miliard urządzeń, w tym inteligentne głośniki, telefony, samochody, telewizory, słuchawki i nie tylko. Użytkownicy angażują Asystenta w rozmowę, aby załatwić sprawę, na przykład kupić artykuły spożywcze lub zarezerwować przejazd. Jako programista możesz korzystać z platformy programistycznej Asystenta, aby łatwo tworzyć atrakcyjne i skuteczne konwersacje między użytkownikami a własną zewnętrzną usługą realizacji oraz zarządzać nimi.

To ćwiczenie z programowania obejmuje koncepcje na poziomie średniozaawansowanym dotyczące programowania za pomocą Asystenta Google, Cloud Functions i Cloud Firestore. Podczas tych zajęć z programowania utworzysz grę o nazwie „Praktyka pisowni”, która używa Asystenta Google do proszenia użytkowników o pisownię słów.

Co zbudujesz

Podczas tych zajęć z programowania zbudujesz zaawansowaną grę o następujących funkcjach:

  • Otrzymuje od użytkownika odpowiedzi dotyczące pisowni i w zależności od wartości modyfikuje podpowiedzi konwersacyjne
  • Odpowiada podpowiedziami dotyczącymi pisowni słowa, takimi jak jego definicja lub powtórzenie słowa
  • Tworzy pętlę gry, dzięki której użytkownik może ponownie wejść w interakcję z Asystentem po pisowni słowa

Zanim zaczniesz budować, możesz wejść w interakcję z akcją na żywo na swoim urządzeniu obsługującym Asystenta Google, mówiąc „Hej, Google, porozmawiaj z Działem Ortografii”. Domyślna ścieżka tej akcji dla powracającego użytkownika wygląda następująco:

Po ukończeniu tych ćwiczeń z programowania ukończona Akcja będzie miała następujący przebieg konwersacji:

2e9f94dc0ceafc96.png

Czego się dowiesz

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

Co będziesz potrzebował

Wymagania wstępne dotyczące tego ćwiczenia z programowania obejmują:

  • Przeglądarka internetowa, taka jak Google Chrome
  • IDE do pisania funkcji w chmurze.
  • Metoda płatności. To ćwiczenie z programowania wykorzystuje Cloud Functions dla Firebase, co wymaga, aby Twój projekt był objęty planem cenowym Firebase Blaze ( Dowiedz się więcej ).
  • Terminal do uruchamiania poleceń powłoki
  • Node.js 10 lub nowszy

2. Uzyskaj kod funkcji

Sklonuj repozytorium GitHub z wiersza poleceń:

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

3. Utwórz projekt Firebase i skonfiguruj aplikację

Utwórz projekt Firebase

  1. Zaloguj się do Firebase .
  2. W konsoli Firebase kliknij Dodaj projekt (lub Utwórz projekt ), a następnie nazwij swój projekt Firebase Spelling-Practice .

66ae8d1894f4477.png

  1. Kliknij opcje tworzenia projektu. Jeśli pojawi się monit, zaakceptuj warunki Firebase. Pomiń konfigurowanie Google Analytics, ponieważ nie będziesz używać Analytics w tej aplikacji.

Aby dowiedzieć się więcej o projektach Firebase, zobacz Omówienie projektów Firebase .

Przejdź na plan cenowy Blaze

Aby korzystać z Cloud Functions dla Firebase, musisz uaktualnić swój projekt Firebase do planu cenowego Blaze , co oznacza, że ​​do swojego projektu dołączysz konto rozliczeniowe Google Cloud. Wymaga to podania karty kredytowej lub innej metody płatności.

Wszystkie projekty Firebase, w tym te objęte planem Blaze, nadal mają dostęp do bezpłatnych limitów wykorzystania Cloud Functions. Kroki opisane w tym ćwiczeniu z programowania będą mieścić się w bezpłatnych limitach użytkowania. Będziesz jednak pobierać niewielkie opłaty ( około 0,03 USD ) za usługę Cloud Storage, która jest używana do hostowania obrazów kompilacji Cloud Functions.

4. Zainstaluj interfejs wiersza polecenia Firebase

Interfejs Firebase CLI (interfejs wiersza poleceń) umożliwia wdrożenie funkcji Cloud Functions.

Istnieje kilka opcji instalacji Firebase CLI w zależności od systemu operacyjnego i przypadku użycia. Poniższe kroki opisują najczęstszą opcję, jeśli korzystasz także z Cloud Functions.

  1. Upewnij się, że zainstalowałeś npm , który zazwyczaj jest dostarczany z Node.js .
  2. Zainstaluj lub zaktualizuj interfejs CLI, uruchamiając następującą komendę npm:
$ npm -g install firebase-tools
  1. Sprawdź, czy interfejs CLI został poprawnie zainstalowany, uruchamiając:
$ firebase --version

Upewnij się, że wersja Firebase CLI to 9.0.0 lub nowsza, aby zawierała wszystkie najnowsze funkcje wymagane przez Cloud Functions. Jeśli nie, uruchom npm install -g firebase-tools, aby dokonać aktualizacji, jak pokazano powyżej.

  1. Autoryzuj interfejs CLI Firebase, uruchamiając:
$ firebase login
  1. W katalogu Spelling-functions-start skonfiguruj interfejs CLI Firebase do korzystania z projektu Firebase. Uruchom następujące polecenie, wybierz identyfikator projektu i postępuj zgodnie z instrukcjami. Po wyświetleniu monitu możesz wybrać dowolny alias, na przykład codelab .
$ firebase use --add

5. Katalog funkcji

Teraz dodasz funkcjonalność, korzystając z pakietu SDK Firebase dla funkcji w chmurze, aby zbudować zaplecze gry, Ćwiczenie pisowni .

Cloud Functions umożliwia korzystanie z kodu działającego w chmurze bez konieczności konfigurowania serwera. W tym laboratorium z programowania dowiesz się, jak tworzyć funkcje reagujące na zdarzenia Firebase Authentication, Cloud Storage i Firebase Realtime Database. Zacznijmy od uwierzytelnienia.

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

$ cd functions
$ ls

Twój kod funkcji jest również aplikacją Node.js i dlatego potrzebuje package.json , który zawiera pewne informacje o Twojej aplikacji i listę zależności.

Jeśli nie znasz Node.js , warto dowiedzieć się o nim więcej przed kontynuowaniem ćwiczeń z kodowania.

Plik package.json zawiera już listę dwóch wymaganych zależności: pakietu SDK Firebase dla funkcji w chmurze i pakietu SDK administratora Firebase . Aby zainstalować je lokalnie, uruchom npm install z katalogu functions :

$ npm install

Przyjrzyjmy się teraz plikowi index.js :

indeks.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 TODO. Przejdź do następnego kroku ćwiczeń z programowania, aby zaimportować moduły.

6. Zaimportuj wymagane moduły

To ćwiczenie z programowania wymaga trzech modułów.

  • Moduł firebase-functions pozwala nam pisać wyzwalacze dla naszych funkcji w chmurze
  • Moduł firebase-admin pozwala nam na korzystanie z platformy Firebase na serwerze z dostępem administratora, na przykład w celu zapisu do Cloud Firestore.
  • Biblioteka realizacji Actions SDK Node.js obsługuje moduły obsługi Actions SDK dla Asystenta Google.
  1. Zainstaluj zestaw Actions SDK, uruchamiając następującą komendę npm:
$ npm install @assistant/conversation
  1. W pliku index.js zamień pierwsze TODO na poniższe.

Zmiany te importują każdy z wymaganych modułów.

Ponadto pakiet Firebase Admin SDK można skonfigurować automatycznie po wdrożeniu w środowisku Cloud Functions lub innym kontenerze Google Cloud. To właśnie się dzieje, gdy wywołujemy admin.initializeApp(); w poniższych zmianach.

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

Dodajmy teraz logikę biznesową za pomocą funkcji obsługujących Akcje Asystenta.

7. Utwórz funkcje

Uzyskaj definicje słów i zapisz je w Cloud Firestore

Aby uzyskać definicje słów, użyjesz publicznego interfejsu API dictionaryapi.dev .

W pliku index.js zamień TODO dla getWordDetailsFromDictionaryAPI na następujący:

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

Dodaj aktywator Cloud Firestore

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

W pliku index.js zamień TODO dla createSpellingPracticeWord na następujący:

indeks.js

// Aktywator Firestore, który pobiera definicje słów poprzez 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);
});

Uzyskaj listę słów do gry

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

W pliku index.js zamień TODO dla getSpellingWordList na poniższy.

Dodanie tej funkcji do specjalnego app.handle to sposób na udostępnienie tej funkcji z poziomu Asystenta.

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

Uzyskaj wiadomość od sesji Asystenta

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

W pliku index.js zamień TODO dla getSpellingWord na następujący:

indeks.js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Włącz grę, aby powtórzyć słowo

Możesz napisać funkcję Cloud, która powtarza bieżące słowo w grze.

W pliku index.js zamień TODO dla repeatSpellingWord na następujący:

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

Zapoznaj się z definicją słowa

Możesz napisać funkcję chmury, która zapewni definicję bieżącego słowa w grze.

W pliku index.js zamień TODO na definitionOfSpellingWord na następujący:

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

Sprawdź pisownię użytkownika

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

W pliku index.js zamień TODO dla verifySpellingWord na następujący:

indeks.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 swoje funkcje

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

W katalogu głównym katalogu spelling-functions-start uruchom następującą komendę:

$ firebase deploy --only functions

To jest wyjście konsoli, które powinieneś zobaczyć:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

Zanotuj adres URL punktu końcowego HTTP funkcji ActionsOnGoogleFulfillment do późniejszego wykorzystania. Aby uzyskać punkt końcowy, otwórz konsolę Firebase , a następnie kliknij projekt ćwiczeń pisowni . Otwórz pulpit nawigacyjny Funkcje, aby wyświetlić punkt końcowy funkcji.

332cb0437411a242.png

Zakończyłeś dodawanie wszystkich wymaganych funkcji. Przejdźmy teraz do konfiguracji Cloud Firestore.

8. Włącz Cloud Firestore

Musisz włączyć Cloud Firestore.

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

5c0b4abf4410ffcf.png

Dostęp do danych w Cloud Firestore jest kontrolowany przez reguły bezpieczeństwa. Najpierw musisz ustawić kilka podstawowych zasad dotyczących danych, aby rozpocząć. Kliknij Firestore, a następnie na karcie Reguły konsoli Firebase dodaj następujące reguły, a następnie kliknij Publikuj .

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

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. Dodaj dane dotyczące pisowni do Cloud Firestore

Na tym etapie zapiszesz dane dotyczące pisowni słów w Cloud Firestore, aby móc wygenerować listę słów dla Asystenta (i gry).

Dane Cloud Firestore są podzielone na kolekcje, dokumenty, pola i podzbiory. Każde słowo w grze będzie przechowywane jako osobny dokument w kolekcji najwyższego poziomu zwanej wordlist . Dla każdego nowego dokumentu w kolekcji Firestore zostanie uruchomiona funkcja createSpellingPracticeWord w celu pobrania szczegółów słowa z usługi Dictionary API .

Utwórz kolekcję Cloud Firestore

  1. W konsoli Firebase przejdź do sekcji Cloud Firestore.
  2. Kliknij + Rozpocznij zbieranie .
  3. W polu tekstowym Identyfikator kolekcji wprowadź wordlist , a następnie kliknij Dalej .

1b4ccadb90f52f02.png

Następnie stworzymy dokument dla słowa: umowa

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

379037e011e8511e.png

Dodanie tego dokumentu do Cloud Firestore uruchamia funkcję createSpellingPracticeWord w celu pobrania szczegółów definicji słowa. Dodaj więcej słów (na przykład: podziw, samochód, prawda, powiedz, lepiej, dojazd do pracy, ...), tworząc nowy dokument dla każdego słowa.

10. Skonfiguruj Asystenta Google

W poniższych sekcjach opisano, jak skonfigurować środowisko programistyczne Asystenta Google i utworzyć projekt Actions.

Sprawdź ustawienia uprawnień Google

Aby przetestować akcję zbudowaną w ramach tych zajęć z kodowania, musisz włączyć niezbędne uprawnienia, aby symulator mógł uzyskać dostęp do Twojej akcji. Aby włączyć uprawnienia, wykonaj następujące kroki:

  1. Przejdź do strony Sterowanie aktywnością .
  2. Zaloguj się na swoje konto Google, jeśli jeszcze tego nie zrobiłeś.
  3. Włącz następujące uprawnienia:
  • Aktywność w internecie i aplikacjach
  • W sekcji Aktywność w internecie i aplikacjach zaznacz pole wyboru Uwzględnij historię Chrome oraz aktywność w witrynach, aplikacjach i urządzeniach korzystających z usług Google .

c988e1e639e6d6e1.png

Utwórz projekt działań

Twój projekt Actions jest kontenerem na Twoją Akcję. Aby utworzyć projekt Actions na potrzeby tych zajęć z programowania, wykonaj następujące kroki:

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

b174d45710b8086b.png

  1. Wpisz lub wybierz spelling-practice-codelab , który utworzyłeś za pomocą konsoli Firebase. (Nazwa służy do celów wewnętrznych. Później możesz ustawić zewnętrzną nazwę dla swojego projektu.)

a2951de5d2001fac.png

  1. Kliknij opcję Importuj projekt .
  2. W sekcji Jakiego rodzaju akcję chcesz zbudować? wybierz kartę Niestandardowa .
  3. Kliknij Następny .
  4. Wybierz pustą kartę projektu .
  5. Kliknij Rozpocznij budowanie .
  6. Wpisz Spelling Practice dla wyświetlanej nazwy i kliknij Zapisz.

Użytkownicy rozpoczynają rozmowę z Twoją Akcją poprzez wywołanie . Na przykład użytkownicy mogą wywołać Twoją akcję, wypowiadając frazę „Hej Google, porozmawiaj z praktyką pisowni”, gdzie praktyka pisowni jest nazwą wyświetlaną.

Twoja akcja musi mieć nazwę wyświetlaną, jeśli chcesz ją wdrożyć w środowisku produkcyjnym; jednak, aby przetestować akcję, nie musisz definiować nazwy wyświetlanej. Zamiast tego możesz użyć w symulatorze frazy „Porozmawiaj z moją aplikacją testową”, aby wywołać akcję.

Skonfiguruj realizację

Musisz połączyć się z Asystentem procedurami obsługi zdarzeń dla Cloud Functions, które napisałeś i wdrożyłeś wcześniej w tym laboratorium.

Aby skonfigurować realizację, wykonaj następujące kroki:

  1. Kliknij opcję Webhook w bocznej nawigacji.
  2. Wybierz punkt końcowy HTTPS jako opcję realizacji:

d523bf003e96e66f.png

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

be53e2cd0d914d54.png

W następnej sekcji dostosujesz monit dotyczący głównego wywołania w konsoli Akcje.

Skonfiguruj wywołanie główne

Musisz edytować główne wywołanie , aby zdefiniować, co się stanie, gdy użytkownik wywoła Twoją akcję.

Domyślnie Konstruktor Akcji wyświetla ogólny monit po uruchomieniu wywołania ( „Rozpocznij budowanie swojej Akcji od zdefiniowania głównego wywołania.”).

Aby zmodyfikować monit wysyłany przez akcję do użytkownika, gdy ten wywoła akcję, wykonaj następujące kroki:

  1. Kliknij opcję Wywołanie główne w nawigacji.

9ff088c04c995cde.png

  1. Zaznacz opcję Call your webhook i dodaj nazwę procedury obsługi zdarzeń getSpellingWordList w polu tekstowym.
  2. W edytorze kodu zastąp tekst w polu speech następującym komunikatem powitalnym: Welcome to Spelling Practice

Uwaga: do edytowania podpowiedzi możesz użyć formatu YAML lub JSON .

  1. Kliknij Zapisz .

Przetestuj główne wywołanie w symulatorze

Konsola Actions udostępnia narzędzie internetowe do testowania akcji zwane symulatorem . Interfejs symuluje urządzenia sprzętowe i ich ustawienia, dzięki czemu możesz rozmawiać ze swoją Action tak, jakby była uruchomiona na inteligentnym ekranie, telefonie, głośniku lub systemie KaiOS.

Aby przetestować główne wywołanie akcji w symulatorze, wykonaj następujące kroki:

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

651fc8da1ac9aa0a.png

Kiedy uruchomisz główne wywołanie Akcji, Asystent odpowie spersonalizowaną wiadomością powitalną. W tym momencie rozmowa kończy się po tym, jak Asystent odpowie powitaniem.

Wyświetl dzienniki zdarzeń

Gdy jesteś na karcie Test , panel po prawej stronie pokazuje dzienniki zdarzeń , które wyświetlają historię rozmów w postaci dzienników zdarzeń. Każdy dziennik zdarzeń wyświetla zdarzenia, które miały miejsce podczas tej tury rozmowy. Aby wyświetlić dziennik zdarzeń, kliknij szarą ikonę przed wydarzeniem.

Twoja akcja ma obecnie jeden dziennik zdarzeń, który pokazuje zarówno dane wprowadzone przez użytkownika ( „Porozmawiaj z praktyką pisowni” ), jak i odpowiedź Twojej akcji. Poniższy zrzut ekranu przedstawia dziennik zdarzeń Twojej akcji:

a6fb192f94426824.png

11. Zbuduj rozmowę na potrzeby ćwiczeń ortograficznych

Teraz, gdy zdefiniowałeś, co się stanie, gdy użytkownik wywoła Twoją Akcję, możesz opracować dalszą część konwersacji na temat Akcji. Ćwiczenie pisowni składa się z czterech scen i każdą ze scen należy aktywować, zanim będzie można ją uruchomić. Najczęstszym sposobem aktywowania sceny jest skonfigurowanie akcji w taki sposób, aby gdy użytkownik dopasuje intencję użytkownika w scenie, intencja ta wyzwalała przejście do innej sceny i aktywowała ją.

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

W tej sekcji tworzysz nową scenę o nazwie Start , która wysyła do użytkownika pytanie, czy chce rozpocząć grę w Ćwiczenia pisowni . Dodajesz także przejście z głównego wywołania do nowej sceny Start .

Aby utworzyć tę scenę i dodać do niej przejście, wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w górnym panelu nawigacyjnym. Następnie kliknij Wywołanie główne w lewym panelu nawigacyjnym.
  2. W sekcji Przejście po prawej stronie kliknij menu rozwijane, a następnie wpisz Start w polu tekstowym.

dd4f1807a57f794d.png

  1. Kliknij Dodaj . Tworzy to scenę o nazwie Start i informuje Akcję o przejściu do sceny Start po tym, jak Akcja wyświetli użytkownikowi monit powitalny.
  2. Kliknij Sceny w lewym panelu nawigacyjnym, aby wyświetlić listę scen.
  3. W obszarze Sceny kliknij przycisk Start , aby wyświetlić scenę Start .
  4. Kliknij + w sekcji Po wejściu sceny Start .
  5. Wybierz opcję Wyślij monity .
  6. Zastąp zdanie w polu speech ( Enter the response that users will see or hear... ) pytaniem, które należy zadać użytkownikowi: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Elementy sugestii oferują klikalne sugestie dla użytkownika, które Twoja Akcja przetwarza jako dane wejściowe użytkownika. W tej sekcji możesz dodać żetony sugestii, które pojawią się pod właśnie skonfigurowanym monitem ( Do you want to play

Spelling Practice

? ) w celu obsługi użytkowników na urządzeniach z ekranami.

Aby dodać elementy sugestii do zachęty sceny Start , wykonaj następujące kroki:

  1. W scenie Start kliknij sugestie poniżej edytora kodu. Ta akcja dodaje pojedynczy żeton sugestii.
  2. W polu title zamień Suggested Response na 'Yes' .
  3. Używając tego samego formatowania, ręcznie dodaj sugestię zatytułowaną 'No' i 'Help with Phonetics' . Twój kod powinien wyglądać jak następujący fragment:
  4. Kliknij Zapisz .

5ff2ecdc56801b91.png

Przetestuj swoją akcję w symulatorze

W tym momencie Twoja Akcja powinna przejść od głównego wywołania do sceny Start i zapytać użytkownika, czy chce kontynuować. Na symulowanym ekranie powinny także pojawić się żetony sugestii.

Aby przetestować akcję w symulatorze, wykonaj następujące kroki:

  1. Na pasku nawigacyjnym kliknij Test , aby przejść do symulatora.
  2. Aby przetestować akcję w symulatorze, wpisz Talk to Spelling Practice w polu wejściowym.
  3. Naciśnij enter . Twoja akcja powinna odpowiedzieć monitem Main invocation i dodanym monitem sceny Start : „Witamy w praktyce pisowni. Do przeliterowania słowa użyj alfabetu fonetycznego. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz Kontynuować?" .

Poniższy zrzut ekranu przedstawia tę interakcję:

338c9570b02a618e.png

  1. Kliknij sugestię Yes lub No albo Help with Phonetics aby odpowiedzieć na monit. (Możesz także powiedzieć „Tak” , „Nie” lub „Pomoc w zakresie fonetyki” albo wpisać Yes ” lub No albo Help with Phonetics w polu wprowadzania .)

Gdy odpowiesz na monit, akcja wyświetli komunikat wskazujący, że nie może zrozumieć wprowadzonych danych: „Przepraszam, nie zrozumiałem. Czy możesz spróbować jeszcze raz?” Ponieważ nie skonfigurowałeś jeszcze swojej akcji, aby rozumieć i reagować na dane wejściowe „Tak” lub „Nie” , Twoja Akcja dopasowuje Twoje dane wejściowe do intencji NO_MATCH .

Domyślnie intencja systemowa NO_MATCH zapewnia ogólne odpowiedzi, ale możesz dostosować te odpowiedzi, aby wskazać użytkownikowi, że nie zrozumiałeś jego wkładu. Asystent kończy rozmowę użytkownika z Twoją akcją, gdy trzykrotnie nie będzie w stanie dopasować danych wprowadzonych przez użytkownika.

Dodaj nie i intencje fonetyczne

Teraz, gdy użytkownicy mogą odpowiedzieć na pytanie zadane przez Twoją akcję, możesz skonfigurować akcję tak, aby rozumiała odpowiedzi użytkowników ( „Tak” lub „Nie” lub „Pomoc dotycząca fonetyki” ). W poniższych sekcjach tworzysz intencje użytkownika, które są dopasowane, gdy użytkownik powie „Tak” lub „Nie” lub „Pomoc w zakresie fonetyki” i dodajesz te intencje do sceny Start . Użyjemy intencji systemowej yes i utworzymy inne intencje.

Nie twórz no zamiarów

Teraz musisz stworzyć intencję no zrozumienia i zareagowania na użytkownika, gdy nie chce grać w grę. Aby utworzyć tę intencję, wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w nawigacji.
  2. Kliknij opcję Niestandardowe intencje w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nadaj nowemu zamiarowi nazwę no i naciśnij klawisz Enter .
  4. Kliknij Nie , aby otworzyć stronę no zamiaru.
  5. W sekcji Dodaj frazy szkoleniowe kliknij pole tekstowe Wprowadź frazę i wprowadź następujące frazy:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. Kliknij Zapisz .

no dodawaj intencji do sceny Start

Teraz Akcja może zrozumieć, kiedy użytkownik wyraża „nie” lub coś podobnego do „nie” , na przykład „nie” . Musisz dodać intencję no użytkownika do sceny Start , ponieważ użytkownik odpowiada na monit Start („ Witamy w praktyce pisowni. Do przeliterowania słowa użyj alfabetu fonetycznego. Na przykład alfa dla a, bravo dla b, charlie dla c itd. Czy chcesz kontynuować?” ).

Aby dodać tę intencję do sceny Start , wykonaj następujące kroki:

  1. Kliknij scenę Start w nawigacji.
  2. Kliknij znak + (plus) w scenie Start obok opcji Obsługa intencji użytkownika.
  3. W sekcji Intencja wybierz z listy rozwijanej opcję Nie .

51f752e78c8b4942.png

  1. Kliknij opcję Wyślij monity i zaktualizuj pole speech następującym tekstem: Good Bye .

Kod w edytorze powinien wyglądać jak następujący fragment:

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

Testuj no zamiaru w symulatorze

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

Aby przetestować tę intencję w symulatorze, wykonaj następujące kroki:

  1. Na pasku nawigacyjnym kliknij Testuj .
  2. Wpisz Talk to Spelling Practice w polu wprowadzania i naciśnij klawisz Enter .
  3. Wpisz No w polu wejściowym i naciśnij Enter. Możesz też kliknąć element Brak sugestii.

7727a456b522f31b.png

Dodaj systemową intencję YES do sceny Start

Teraz do sceny Start dodamy intencję SYSTEMU „TAK” , ponieważ użytkownik odpowiada „tak” na monit Start („ Witamy w praktyce pisowni. Do przeliterowania słowa użyj alfabetu fonetycznego. Na przykład alfa dla a, bravo dla b, Charlie przez c itd. Czy chcesz kontynuować?” ).

Aby dodać tę intencję użytkownika do sceny Start , wykonaj następujące kroki:

  1. Kliknij scenę Start w nawigacji.
  2. Kliknij znak + (plus) w scenie Start obok opcji Obsługa intencji użytkownika .
  3. W obszarze Wszystkie intencje systemowe wybierz TAK z listy rozwijanej intencji.

f6cbe789cde49e8f.png

  1. Kliknij opcję Zadzwoń do webhooka i zaktualizuj pole tekstowe event handler za pomocą utworzonej wcześniej funkcji: getSpellingWordList
  2. W sekcji Przejście kliknij menu i wybierz Zakończ rozmowę .
  3. Kliknij Zapisz .

Przetestuj zamiar YES w symulatorze

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

Aby przetestować tę intencję w symulatorze, wykonaj następujące kroki:

  1. Na pasku nawigacyjnym kliknij Testuj .
  2. Aby przetestować akcję w symulatorze, wpisz Talk to Spelling Practice w polu wejściowym i naciśnij Enter .
  3. Wpisz Yes w polu wejściowym i naciśnij klawisz Enter . Możesz też kliknąć element sugestii Yes .

Twoja akcja pobiera listę wszystkich słów do ćwiczeń pisowni i przechowuje je w sesji. Twoja akcja kończy sesję, ponieważ wybrałeś przejście End conversation dla zamiaru YES .

Utwórz intencję Phonetics

Aby utworzyć intencję Phonetics , wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w nawigacji.
  2. Kliknij opcję Niestandardowe intencje w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nazwij nową phonetics intencji i naciśnij Enter .
  4. Kliknij intencję phonetics , aby otworzyć stronę intencji phonetics .
  5. W sekcji Dodaj frazy szkoleniowe kliknij pole tekstowe Wprowadź frazę i wprowadź następujące frazy:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Kliknij Zapisz .

Dodaj intencję phonetics do sceny Start

Teraz Akcja może zrozumieć, kiedy użytkownik wyraża zamiar „fonetyczny” . Możesz dodać intencję użytkownika phonetics do sceny Start , ponieważ użytkownik odpowiada na monit Start („ Witamy w praktyce pisowni. Do przeliterowania słowa użyj alfabetu fonetycznego. 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 następujące kroki:

  1. Kliknij scenę Start w nawigacji.
  2. Kliknij znak + (plus) w scenie Start obok opcji Obsługa intencji użytkownika.
  3. Wybierz fonetykę z listy rozwijanej intencji.

67ee2e08000b2aee.png

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

Przejście ze sceny Start do sceny Pisownia

W tej sekcji utworzysz nową scenę o nazwie Spelling , która wysyła do użytkownika monit o przeliterowanie słowa przy użyciu alfabetu fonetycznego.

Aby utworzyć tę scenę i dodać do niej przejście, wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w górnym panelu nawigacyjnym. Następnie kliknij opcję Rozpocznij scenę w lewym panelu nawigacyjnym.
  2. W sekcji Obsługa intencji użytkownika kliknij when actions.intent.YES is matched , a po prawej stronie w sekcji przejścia kliknij menu rozwijane i wpisz Spelling w polu tekstowym.
  3. Kliknij Dodaj . Tworzy to scenę o nazwie Spelling i nakazuje akcji przejście do sceny Spelling po dopasowaniu z intencją YES.
  4. Rozwiń Sceny w lewym panelu nawigacyjnym, aby wyświetlić listę scen.
  5. W obszarze Sceny kliknij opcję Pisownia, aby wyświetlić scenę Spelling .
  6. Kliknij + w sekcji Po wejściu sceny Spelling .
  7. Kliknij opcję Zadzwoń do webhooka i wpisz getSpellingWord w polu tekstowym procedury obsługi zdarzeń.
  8. Wybierz opcję Wyślij monity .
  9. Zamień zdanie w polu speech ( Enter the response that users will see or hear... ) na {} . Rzeczywisty monit zostanie wypełniony przez element webhook.

Elementy sugestii oferują klikalne sugestie dla użytkownika, które Twoja Akcja przetwarza jako dane wejściowe użytkownika.

Aby dodać elementy sugestii do podpowiedzi sceny Spelling , wykonaj następujące kroki:

  1. W scenie Spelling kliknij sugestie poniżej edytora kodu. Ta akcja dodaje trzy żetony sugestii.
  2. W polu title zamień Suggested Response na 'Repeat' .
  3. Używając tego samego formatowania, ręcznie dodaj element sugestii zatytułowany 'Skip' .
  4. Używając tego samego formatowania, ręcznie dodaj element sugestii zatytułowany '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 Repeat intencję

Aby utworzyć intencję repeat , wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w nawigacji.
  2. Kliknij opcję Niestandardowe intencje w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nazwij nowe repeat intencji i naciśnij Enter .
  4. Kliknij intencję repeat , aby otworzyć stronę intencji definition .
  5. W sekcji Dodaj frazy szkoleniowe kliknij pole tekstowe Wprowadź frazę i wprowadź następujące frazy:
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. Kliknij Zapisz .

Dodaj zamiar repeat do sceny Spelling

Teraz akcja może zrozumieć, kiedy użytkownik wyraża zamiar „powtórzenia” . Możesz dodać intencję repeat użytkownika do sceny Spelling , ponieważ użytkownik odpowiada na monit Spelling („ Przeliteruj słowo przy użyciu alfabetu fonetycznego ”).

Aby dodać tę intencję użytkownika do sceny Spelling , wykonaj następujące kroki:

  1. Kliknij scenę Pisownia w nawigacji.
  2. Kliknij znak + (plus) w scenie Spelling obok opcji Obsługa intencji użytkownika .
  3. Wybierz opcję Powtórz z listy rozwijanej intencji.

5cfd623b25bedbed.png

  1. Zaznacz opcję Zadzwoń do webhooka i wpisz polecenie RepeatSpellingWord w polu tekstowym procedury obsługi zdarzeń, aby uzyskać definicję słowa.
  2. Zaznacz opcję Wyślij monity .
  3. Zastąp zdanie w polu speech ( Enter the response that users will see or hear... ) na „”. Rzeczywisty monit zostanie wypełniony przez element webhook.

Dodaj elementy sugestii do „Po dopasowaniu powtórzenia”

  1. W sekcji „ Po dopasowaniu powtórzenia ” w obszarze Obsługa intencji użytkownika kliknij sugestie poniżej edytora kodu. Ta akcja dodaje trzy żetony sugestii.
  2. W polu title zamień Suggested Response na 'Skip' .
  3. Używając tego samego formatowania, ręcznie dodaj sugestię zatytułowaną 'Quit' . Twój kod powinien wyglądać jak następujący fragment:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

ab40e4b0c432b97c.png

  1. Kliknij Zapisz.

Utwórz intencję definition

Aby utworzyć intencję definition , wykonaj następujące kroki:

  1. Kliknij opcję Rozwijaj w nawigacji.
  2. Kliknij opcję Niestandardowe intencje w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nazwij nową definition intencji i naciśnij klawisz Enter .
  4. Kliknij intencję definition , aby otworzyć stronę intencji definition .
  5. W sekcji Dodaj frazy szkoleniowe kliknij pole tekstowe Wprowadź frazę i wprowadź następujące frazy:
  • 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 sceny Spelling

Teraz Akcja może zrozumieć, kiedy użytkownik wyraża intencję „zdefiniowaną” . Możesz dodać intencję użytkownika definition do sceny Spelling , ponieważ użytkownik odpowiada na monit Spelling („ Przeliteruj słowo przy użyciu alfabetu fonetycznego ”).

Aby dodać ten użytkownik do sceny Spelling , wykonaj następujące kroki:

  1. Kliknij scenę pisowni podczas nawigacji.
  2. Kliknij + (znak plus) w scenie Spelling obok obsługi intencji użytkownika .
  3. Wybierz definicję w rozwijaniu zamiarów.

646BDCAC3AD3EB0C.PNG

  1. Sprawdź zadzwoń do WebHook i wprowadź definicję SPELLEWO WORDE w polu tekstowym zdarzenia, aby uzyskać definicję słowa.
  2. Sprawdź wyślij monity .
  3. Wymień zdanie w polu speech ( Enter the response that users will see or hear... ) na „”. Rzeczywisty monit zostanie wypełniony przez WebHook.

Dodaj układy sugestii do odpowiedzi Webhook

  1. Na scenie Start kliknij sugestie poniżej edytora kodu. Ta akcja dodaje trzy układy sugestii.
  2. W polu title zamień Suggested Response na 'Skip' .
  3. Korzystając z tego samego formatowania, ręcznie dodaj układ sugestii zatytułowany 'Quit' . Twój kod powinien wyglądać jak następujący fragment:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Kliknij Zapisz .

Utwórz skip pomijania

Aby utworzyć zamiar skip , wykonaj następujące kroki:

  1. Kliknij Opracuj w nawigacji.
  2. Kliknij Intenty w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nazwij nowe zamiary skip i naciśnij Enter .
  4. Kliknij skip , aby otworzyć stronę Intent skip .
  5. W sekcji Dodaj wyrażenia treningowe kliknij pole tekstowe Wprowadź wyrażenie i wprowadź następujące wyrażenia:
  • next word
  • go next
  • next
  • skip
  • skip word

D1C4908A3D7882f8.png

  1. Kliknij Zapisz .

Dodaj Skip pomijania sceny Spelling

Teraz akcja może zrozumieć, kiedy użytkownik wyraża zamiar „pomiń” . Możesz dodać intencję użytkownika skip do sceny Spelling , ponieważ użytkownik odpowiada na wiersz Spelling („ Przeliteruj słowo za pomocą alfabetu fonetycznego ”).

Aby dodać ten użytkownik do sceny Spelling , wykonaj następujące kroki:

  1. Kliknij scenę pisowni podczas nawigacji.
  2. Kliknij + (znak plus) na scenie Spelling obok Handlin Intent User Handlin G.
  3. Wybierz Pomiń rozwijanie zamiaru.

5465F97542217964.png

  1. W sekcji przejściowej po prawej stronie kliknij menu rozwijane i wybierz Spelling .

C8072485CA82BD3F.PNG

  1. Kliknij Zapisz .

Utwórz quit

Aby utworzyć zamiar Quit , wykonaj następujące kroki:

  1. Kliknij Opracuj w nawigacji.
  2. Kliknij Intenty w nawigacji, aby otworzyć listę intencji.
  3. Kliknij + (znak plus) na końcu listy intencji. Nazwij nowy zamiar Quit i naciśnij Enter .
  4. Kliknij stronę, aby otworzyć stronę Quit Definicja .
  5. W sekcji Dodaj wyrażenia treningowe kliknij pole tekstowe Wprowadź wyrażenie i wprowadź następujące wyrażenia:
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Kliknij Zapisz.

Dodaj Quit sceny Spelling

Teraz działanie może zrozumieć, kiedy użytkownik wyraża zamiar „rzucenia” . Możesz dodać zamiar quit użytkownika do sceny Spelling , ponieważ użytkownik odpowiada na wiersz Spelling („ Plikuj słowo za pomocą alfabetu fonetycznego ”).

Aby dodać ten użytkownik do sceny Spelling , wykonaj następujące kroki:

  1. Kliknij scenę pisowni podczas nawigacji.
  2. Kliknij + (znak plus) w scenie Spelling obok obsługi intencji użytkownika .
  3. Wybierz oprócz rozwijania zamiaru.

5F62FB18A3653D66.png

  1. W sekcji przejściowej po prawej stronie kliknij menu rozwijane i wybierz End conversation . 1FFBE35A7BBBB4B0.PNG
  2. Kliknij Zapisz .

Utwórz typ phonetic_alphabet

W tej sekcji tworzysz nowy typ o nazwie phonetic_alphabet , który określa opcje alfabetu fonetycznego, które użytkownicy mogą wybrać przeliterowanie słowa. Możesz także zdefiniować kilka synonimów tych opcji na wypadek, gdyby użytkownik powiedział coś podobnego. W późniejszej sekcji dodajesz typ phonetic_alphabet do gniazda, aby określić, że chcesz uzyskać odpowiedź użytkownika.

Aby utworzyć typ phonetic_alphabet , wykonaj następujące kroki:

  1. Kliknij Opracuj w nawigacji.
  2. Kliknij + (znak plus) w typach .
  3. Wpisz phonetic_alphabet i naciśnij Enter .
  4. Kliknij phonetic_alphabet , aby otworzyć opcje.
  5. W jakich wartościach będzie obsługiwał ten typ? sekcja, wybierz opcję słów i synonimów
  6. Wprowadź następujące wpisy i odpowiednie wartości w sekcji Dodaj wpisy :

A

Alpha, Apple, Amsterdam

B

Bravo, masło, Baltimore

C

Charlie, Cat, Casablanca

D

Delta, pies, Dania

mi

Echo, Edward, Edison

F

Foxtrot, Fox, Floryda

G

Golf, George, Gallipoli

H

Hotel, Harry, Hawana

I

Indie, atrament, Italia

J

Juliette, Johnny, Jerozolima

k

Kilo, król, kilogram

l

Lima, miłość, Londyn

M

Mike, pieniądze, Madagaskar

N

Listopad, Nowy Jork, Nancy

o

Oscar, Orange, Oslo

P

Papa, Paryż, Peter

Q

Quebec, królowa

R

Romeo, Roma, Robert

S

Sierra, Sugar, Santiago

T

Tango, Tommy, Trypolis

ty

mundur, parasol, wujek

v

Victor, Ocet, Walencja

w

Whisky, William, Waszyngton

X

prześwietlenie

y

Yankee, żółty, Yorker

z

Zulu, Zebra, Zurych

Twoja tabela wartości kluczowej powinna wyglądać jak następujące:

5B5A5CD9FA557E1B.PNG

  1. Kliknij Zapisz .

Skonfiguruj wypełnienie gniazda

Następnie musisz skonfigurować wypełnienie szczelin w scenie pisowni. Aby skonfigurować logikę wypełniania szczelin, wykonaj następujące kroki:

  1. Kliknij scenę pisowni podczas nawigacji.
  2. Kliknij + (znak plus) w scenie Spelling do wypełnienia automatów .
  3. W polu Enter Name Name dodaj userresponse jako nazwę gniazda.
  4. W rozwijaniu typu Wybierz wybierz Phonetic_alphabet jako typ szczelin.
  5. Sprawdź ten gniazdo akceptuje listę wartości
  6. Sprawdź, czy to gniazdo jest wymagane .
  7. Wybierz Dostosuj opcję pisania wartości gniazda i wprowadź UserResponse w polu tekstowym parametru sesji.

BA57A419877A07F3.PNG

  1. Kliknij Zapisz .

Dodaj warunek ekranu Spelling

Aby dodać warunek sceny Spelling , wykonaj następujące kroki:

  1. Kliknij scenę pisowni podczas nawigacji.
  2. Kliknij + (znak plus) w scenie Spelling obok warunku.
  3. Wprowadź scene.slots.status == "FINAL" jako warunek
  4. Sprawdź zadzwoń do WebHook i wprowadź Verifyspelling Word w polu tekstowym, aby sprawdzić odpowiedź użytkownika.
  5. Sprawdź wyślij monity.
  6. Wymień zdanie w polu speech ( Enter the response that users will see or hear... ) na {} . Rzeczywisty monit zostanie wypełniony przez WebHook.

Dodaj układy sugestii do odpowiedzi Webhook

  1. Na scenie Start kliknij sugestie poniżej edytora kodu. Ta akcja dodaje trzy układy sugestii.
  2. W polu title zamień Suggested Response na 'Next' .
  3. Korzystając z tego samego formatowania, ręcznie dodaj układ sugestii zatytułowany 'Quit' . Twój kod powinien wyglądać jak następujący fragment:
suggestions:
      - title: 'Next'
      - title: 'Quit'

AC3D7A93666EBC1B1.PNG

  1. Kliknij Zapisz .

12. Testuj praktykę pisowni w symulatorze

Aby przetestować działanie w symulatorze, wykonaj następujące kroki:

  1. Na pasku nawigacji kliknij test , aby zabrać do symulatora.
  2. Aby przetestować swoją akcję w symulatorze, Talk to Spelling Practice w polu wejściowym.
  3. Naciśnij enter . Twoja akcja powinna odpowiedzieć Main invocation i dodaną monit sceny Start : „Witaj w praktyce pisowni. Użyj alfabetu fonetycznego, aby przeliterować słowo. Na przykład alfa dla A, Bravo dla B, Charlie dla C itd. Czy chcesz Kontynuować?" .
  4. Powiedz tak, aby kontynuować
  5. Symulator odtworzy dźwięk słowa do przeliterowania
  6. Możesz przeliterować słowo za pomocą alfabetów fonetycznych. Na przykład dla lepszego powiedz lub wpisz „Bravo Echo Tango Tango Tango Echo Romeo”
  7. Symulator zareaguje z poprawną lub nieprawidłową odpowiedzią.
  8. Powiedz obok następnego słowa lub powiedz, że przestań wyjść z pętli gry.

13. Gratulacje

Gratulacje, z powodzeniem zbudowałeś swoją grę, praktyka pisowni !

Znasz teraz kluczowe kroki wymagane do zbudowania gry za pomocą Cloud Firestore, funkcji w chmurze i Boge Assistant Action Builder.

Co omówiłeś

  • Jak wchodzić w interakcje z Cloud Firestore
  • Jak używać gniazd do gromadzenia danych od użytkownika
  • Jak przetworzyć dane wejściowe użytkownika i zwrócić odpowiedź
  • Jak używać warunków, aby dodać logikę do sceny
  • Jak dodać pętlę gier

Dodatkowe zasoby edukacyjne

Możesz zbadać te zasoby do nauki o budowaniu działań dla Google Assistant:

Oczyść swój projekt [zalecany]

Aby uniknąć poniesienia możliwych opłat, zaleca się usuwanie projektów, których nie zamierzasz używać. Aby usunąć projekty utworzone w tym kodelab, wykonaj następujące kroki:

  1. Aby usunąć projekt i zasoby Firebase, wypełnij kroki wymienione w sekcji Projekty zamykania (usuwanie) .

Uwaga: Upewnij się, że wybierzesz poprawny projekt do usunięcia na stronie Ustawienia Konsoli Google Cloud.

  1. Opcjonalnie: Aby natychmiast usunąć projekt z konsoli akcji, wypełnij kroki wymienione w sekcji usuwania projektu . Jeśli nie ukończysz tego kroku, Twój projekt zostanie automatycznie usunięty po około 30 dniach.

Śledź @ActionSongoogle i @firebase na Twitterze, aby być na bieżąco z naszymi najnowszymi ogłoszeniami i tweet do #Googleio, aby udostępnić to, co zbudowałeś!