1. Przegląd
Platforma deweloperska Asystenta Google umożliwia tworzenie oprogramowania rozszerzającego funkcjonalność Asystenta Google, wirtualnego asystenta osobistego, na ponad miliardzie urządzeń, w tym na inteligentnych głośnikach, telefonach, samochodach, telewizorach, słuchawkach i innych. Użytkownicy rozmawiają z Asystentem, aby wykonywać różne czynności, np. kupować produkty spożywcze lub zamawiać przejazdy. Jako deweloper możesz używać platformy deweloperskiej Asystenta, aby łatwo tworzyć i zarządzać atrakcyjnymi i skutecznymi interakcjami głosowymi między użytkownikami a Twoją usługą realizacji zamówień.
To ćwiczenie obejmuje podstawowe koncepcje tworzenia aplikacji za pomocą pakietu Actions SDK dla Asystenta Google. Aby je ukończyć, nie musisz mieć wcześniejszego doświadczenia z tą platformą. W tym ćwiczeniu utworzysz prostą akcję dla Asystenta Google, która będzie przepowiadać użytkownikom przyszłość na początku ich przygody w mitycznej krainie Gryffinberg. W samouczku dotyczącym pakietu Actions SDK na poziomie 2 rozbudujesz tę akcję, aby dostosowywać wróżbę do danych wejściowych użytkownika.
Co utworzysz
W tym ćwiczeniu z programowania utworzysz prostą akcję z tymi funkcjami:
- odpowiada użytkownikom wiadomością powitalną,
- zadaje użytkownikom pytania i odpowiada na ich wybory;
- Zawiera sugestie, które użytkownicy mogą kliknąć, aby wprowadzić dane
- Modyfikuje wiadomość powitalną dla użytkownika w zależności od tego, czy jest on powracającym użytkownikiem.
Po ukończeniu tego laboratorium Twój gotowy Action będzie miał następujący przebieg rozmowy (tekst obok mikrofonu reprezentuje dane wejściowe użytkownika, a tekst obok głośnika – odpowiedź Action):


Czego się nauczysz
- Jak utworzyć projekt w konsoli Actions
- Jak używać narzędzia gactions do przesyłania projektu działania między konsolą Actions a lokalnym systemem plików
- Jak wysłać prompt do użytkownika po wywołaniu przez niego działania
- Jak przetwarzać dane wejściowe użytkownika i zwracać odpowiedź
- Testowanie działania w Symulatorze Actions
- Jak zaimplementować realizację za pomocą edytora Cloud Functions
Czego potrzebujesz
W środowisku muszą być dostępne te narzędzia:
- wybrane środowisko IDE lub edytor tekstu;
- terminal do uruchamiania poleceń powłoki dla Node.js i npm;
- przeglądarka internetowa, np. Google Chrome;
2. Skonfiguruj
W sekcjach poniżej znajdziesz informacje o tym, jak skonfigurować środowisko programistyczne i utworzyć projekt działań.
Sprawdzanie ustawień uprawnień Google
Aby przetestować działanie utworzone w tym module, musisz włączyć odpowiednie uprawnienia, aby symulator mógł uzyskać do niego dostęp.
Aby włączyć uprawnienia, wykonaj te czynności:
- Otwórz Zarządzanie aktywnością.
- Zaloguj się na swoje konto Google.
- Włącz te uprawnienia:
- Aktywność w internecie i aplikacjach
- W sekcji Aktywność w internecie i aplikacjach zaznacz pole Uwzględnij historię Chrome i aktywność na stronach, urządzeniach i w aplikacjach, które używają usług Google**.**
Tworzenie projektu w Actions
Projekt Actions jest kontenerem dla Twojej akcji.
Aby utworzyć projekt Actions na potrzeby tego laboratorium, wykonaj te czynności:
- Otwórz konsolę Actions.
- Kliknij Nowy projekt.
- Wpisz nazwę projektu, np.
actions-codelab. (Nazwa jest przeznaczona do użytku wewnętrznego. Później możesz ustawić zewnętrzną nazwę projektu).

- Kliknij Utwórz projekt.
- Na ekranie Jakiego rodzaju działanie chcesz utworzyć? wybierz kartę Niestandardowe.
- Kliknij Dalej.
- Na ekranie Jak chcesz go utworzyć? wybierz kartę Pusty projekt.
- Kliknij Rozpocznij tworzenie.
Zapisz identyfikator projektu dla działania
Identyfikator projektu to unikalny identyfikator Twojej działania. Identyfikator projektu będzie potrzebny w kilku krokach tego ćwiczenia.
Aby pobrać identyfikator projektu:
- W konsoli Działania kliknij 3 kropki w pionie (wstaw ikonę).
- Kliknij Ustawienia projektu.

- Skopiuj identyfikator projektu**.**
Powiązywanie konta rozliczeniowego
Jeśli nie masz jeszcze konta rozliczeniowego, musisz je utworzyć i powiązać z projektem w Google Cloud, aby później wdrożyć realizację za pomocą Cloud Functions.
Aby powiązać konto rozliczeniowe z projektem, wykonaj te czynności:
- Otwórz stronę rozliczeń Google Cloud Platform.
- Kliknij Dodaj konto rozliczeniowe lub Utwórz konto.
- Podaj dane do płatności.
- Kliknij Rozpocznij bezpłatny okres próbny lub Prześlij i włącz płatności.
- Otwórz stronę rozliczeń Google Cloud Platform.
- Kliknij kartę Moje projekty.
- Kliknij 3 kropki w sekcji Działania obok projektu Działań dla codelabu.
- Kliknij Zmień płatności.
- W menu wybierz skonfigurowane konto rozliczeniowe.
- Kliknij Ustaw konto.
Aby uniknąć naliczania opłat, wykonaj czynności opisane w sekcji Zwalnianie miejsca w projekcie na końcu tego ćwiczenia.
Instalowanie interfejsu wiersza poleceń gactions
W tym ćwiczeniu użyjesz narzędzia interfejsu wiersza poleceń gactions, aby zsynchronizować projekt działań między konsolą Actions a lokalnym systemem plików.
Aby zainstalować gactions CLI, postępuj zgodnie z instrukcjami w artykule Instalowanie narzędzia wiersza poleceń gactions.
Pobieranie projektu w Actions
Zacznij tworzyć akcję, pobierając projekt Actions z konsoli Actions.
Aby pobrać projekt działań:
- Aby utworzyć nowy katalog i przejść do niego, uruchom te polecenia:
mkdir myproject cd myproject
- Aby skopiować konfigurację projektu Actions do lokalnego systemu plików, uruchom to polecenie:
gactions pull --project-id <projectID>
Struktura pliku
Projekt działań pobrany z konsoli Actions jest reprezentowany w strukturze plików YAML. Obraz poniżej przedstawia ogólną strukturę pliku:

Struktura pliku składa się z tych elementów:
actions/: reprezentuje Twój projekt działań. System wywołuje funkcjęactions.yaml, gdy wywoływana jest Twoja czynność, która następnie wywołuje plikcustom/global/actions.intent.MAIN.yaml.custom/: katalog, w którym będziesz pracować, aby zmodyfikować działanie.global/: ten katalog zawiera intencje systemowe, które platforma automatycznie dodaje do Twojego projektu. Więcej informacji o intencjach systemowych znajdziesz w dalszej części tego ćwiczenia z programowania.manifest.yaml: plik zawierający informacje, które można przenosić lub które nie są specyficzne dla żadnego projektu i można je przenosić między projektami.settings/: reprezentuje ustawienia projektu Actions, takie jak wyświetlana nazwa, domyślny język i kategoria.
3. Rozpoczynanie rozmowy
Użytkownicy rozpoczynają rozmowę z Twoją akcją za pomocą wywołania. Jeśli na przykład masz działanie o nazwie MovieTime, użytkownicy mogą je wywołać, mówiąc na przykład „OK Google, porozmawiaj z MovieTime”, gdzie MovieTime to nazwa wyświetlana. Jeśli chcesz wdrożyć akcję w środowisku produkcyjnym, musi ona mieć wyświetlaną nazwę. Aby jednak przetestować akcję, nie musisz definiować wyświetlanej nazwy. Zamiast tego możesz użyć w symulatorze wyrażenia „Talk to my test app” (Porozmawiaj z aplikacją testową), aby wywołać akcję. Więcej informacji o symulatorze znajdziesz w dalszej części tej sekcji.
Musisz edytować główne wywołanie, aby określić, co się stanie po wywołaniu działania przez użytkownika.
Domyślnie Twoja akcja zawiera ogólny prompt, gdy zostanie wywołana („Zacznij tworzyć akcję od zdefiniowania głównego wywołania”.).
W następnej sekcji dostosujesz prompt dla głównego wywołania w pliku custom/global/actions.intent.MAIN.yaml.
Konfigurowanie głównego wywołania
Główny prompt wywołania możesz edytować w pliku actions.intent.MAIN.yaml.
Aby zmodyfikować prompt, który Twoja akcja wysyła do użytkownika, gdy ją wywołuje, wykonaj te czynności:
- Otwórz plik
custom/global/actions.intent.MAIN.yamlw edytorze tekstu. - Zastąp tekst w polu
speech(Start building your action...) tą wiadomością powitalną:A wondrous greeting, adventurer! Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you're on your way to an epic journey.
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: A wondrous greeting, adventurer! Welcome to the mythical land of
Gryffinberg! Based on your clothes, you are not from around these lands.
It looks like you're on your way to an epic journey.
transitionToScene: actions.scene.END_CONVERSATION
- Zapisz plik.
Testowanie głównego wywołania w symulatorze
Konsola Actions udostępnia narzędzie internetowe do testowania działania o nazwie symulator. Interfejs symuluje urządzenia i ich ustawienia, dzięki czemu możesz rozmawiać z działaniem tak, jakby było uruchomione na inteligentnym ekranie, telefonie, głośniku lub urządzeniu z KaiOS.
Po wywołaniu działania powinno ono teraz odpowiedzieć dostosowanym promptem, który został dodany („Witaj, wspaniały podróżniku…”).
Możesz użyć polecenia gactions deploy preview, aby przetestować działanie w konsoli bez aktualizowania wersji projektu działań. Gdy uruchomisz to polecenie, żadne zmiany wprowadzone w lokalnym systemie plików nie zostaną przeniesione do wdrożonych wersji projektu działania, ale możesz je przetestować w wersji podglądu.
Aby przetestować główne wywołanie działania w symulatorze:
- Aby wdrożyć projekt w konsoli Actions w celu przetestowania, uruchom w terminalu to polecenie:
gactions deploy preview
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Skopiuj podany adres URL i wklej go w przeglądarce.
- Aby wywołać działanie w symulatorze, wpisz
Talk to my test appw polu Input (Dane wejściowe) i naciśnijEnter.

Gdy wywołasz główną funkcję działania, Asystent odpowie spersonalizowaną wiadomością powitalną. W tym momencie rozmowa kończy się po tym, jak Asystent odpowie powitaniem. W następnej sekcji zmodyfikujesz działanie, aby rozmowa była kontynuowana.
Wyświetlanie dzienników zdarzeń
Gdy na karcie Test w konsoli Działania pojawi się panel z dziennikami zdarzeń, zobaczysz historię rozmowy w postaci dzienników zdarzeń. Każdy dziennik zdarzeń zawiera zdarzenia, które wystąpiły podczas danej tury rozmowy.
Twoja akcja ma obecnie 1 dziennik zdarzeń, który zawiera zarówno dane wejściowe użytkownika („Porozmawiaj z moją aplikacją testową”), jak i odpowiedź akcji. Na zrzucie ekranu poniżej widać dziennik zdarzeń akcji:

Jeśli w dzienniku zdarzeń klikniesz strzałkę w dół obok ikony Talk to my test app, zobaczysz zdarzenia, które wystąpiły w danym momencie rozmowy, ułożone chronologicznie:
userInput: Odpowiada danym wejściowym użytkownika („Porozmawiaj z aplikacją testową”).interactionMatch: odpowiada głównej odpowiedzi na wywołanie działania, która została wywołana przez dane wejściowe użytkownika. Jeśli rozwiniesz ten wiersz, klikając strzałkę, zobaczysz prompt dodany do głównego wywołania (A wondrous greeting, adventurer!...).endConversation: odpowiada wybranemu przejściu wMain invocationintencji, która obecnie kończy rozmowę. Więcej informacji o przejściach znajdziesz w następnej sekcji tego laboratorium.
Logi zdarzeń zapewniają wgląd w działanie Twojej akcji i są przydatnym narzędziem do debugowania w przypadku wystąpienia problemów. Aby wyświetlić szczegóły zdarzenia, kliknij strzałkę obok jego nazwy, jak pokazano na zrzucie ekranu poniżej:

4. Tworzenie rozmowy działania
Teraz, gdy już wiesz, co się stanie po wywołaniu Twojej akcji przez użytkownika, możesz rozbudować resztę rozmowy akcji. Zanim przejdziesz dalej, zapoznaj się z tymi terminami, aby zrozumieć, jak działa rozmowa w Twojej usłudze:
Twoja czynność może mieć jedną lub wiele scen, a każdą z nich musisz aktywować, zanim będzie można ją uruchomić. Działanie, które utworzysz w tym laboratorium, ma tylko 1 scenę o nazwie Start. Najczęstszym sposobem aktywowania sceny jest skonfigurowanie działania tak, aby gdy dane wejściowe użytkownika pasowały do intencji w scenie, ta intencja powodowała przejście do innej sceny i jej aktywowanie.
Wyobraź sobie na przykład hipotetyczną czynność, która dostarcza użytkownikowi ciekawostek o zwierzętach. Gdy użytkownik wywoła to działanie, zostanie dopasowany zamiar Main invocation, który spowoduje przejście do sceny o nazwie Facts.. To przejście aktywuje scenę Facts, która wysyła do użytkownika ten prompt: Would you like to hear a fact about cats or dogs?. W scenie Facts znajduje się niestandardowy zamiar o nazwie Cat, który zawiera frazy treningowe, jakie użytkownik może wypowiedzieć, aby usłyszeć ciekawostkę o kotach, np. „Chcę usłyszeć ciekawostkę o kotach” lub „kot”. Gdy użytkownik poprosi o ciekawostkę o kotach, zostanie dopasowany zamiar Cat, który spowoduje przejście do sceny o nazwie Cat fact.. Scena Cat fact zostanie aktywowana i wyśle do użytkownika prompt zawierający ciekawostkę o kotach.

Rysunek 1. Przebieg typowej tury rozmowy w akcji utworzonej za pomocą pakietu Actions SDK.
Sceny, intencje i przejścia tworzą logikę rozmowy i określają różne ścieżki, którymi użytkownik może podążać w rozmowie z akcją. W następnej sekcji utworzysz scenę i określisz, jak będzie ona aktywowana po wywołaniu działania przez użytkownika.
Przejście od głównego wywołania do sceny
W tej sekcji utworzysz nową scenę o nazwie Start, która wyświetla użytkownikowi pytanie, czy chce poznać swoją przyszłość. Dodajesz też przejście od głównego wywołania do nowej sceny Start.
Aby utworzyć tę scenę i dodać do niej przejście, wykonaj te czynności:
- Otwórz plik
custom/global/actions.intent.MAIN.yamlw edytorze tekstu. - Zastąp tekst w polu
transitionToScene(actions.scene.END_CONVERSATION) tym tekstem:transitionToScene: Start
actions.intent.MAIN.yaml
handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Welcome to the mythical land of Gryffinberg! Based on your clothes,
you are not from around these lands. It looks like you're on your way
to an epic journey.
transitionToScene: Start
Dzięki temu Twoja akcja przejdzie z głównego wywołania do sceny Start.
- Zapisz plik.
- W terminalu utwórz nowy katalog
scenesw katalogucustom:
mkdir custom/scenes
- Utwórz w katalogu
scenesnowy plik o nazwieStart.yaml, który reprezentuje scenęstartw Twojej akcji:
touch custom/scenes/Start.yaml
- Otwórz plik
Start.yamlw edytorze tekstu. - Wklej do pliku
Start.yamlten kod:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
W kodzie pliku Start.yaml znajduje się pole o nazwie onEnter, które jest pierwszym etapem cyklu życia sceny.
W tym przypadku prompt (Before you continue on your quest...) jest dodawany do kolejki promptów, gdy użytkownik po raz pierwszy wchodzi na scenę Start.
Dodawanie elementów z sugestiami
Elementy z sugestiami oferują klikalne sugestie dla użytkownika, które Twoja czynność przetwarza jako dane wejściowe użytkownika. W tej sekcji dodajesz sugestie Yes i No, które pojawiają się pod skonfigurowanym przed chwilą promptem (Before you continue on your quest, would you like your fortune told?), aby wspierać użytkowników urządzeń z ekranami.
Aby dodać podpowiedzi do promptu sceny Start, wykonaj te czynności:
- Zaktualizuj kod w sekcji
Start.yaml, aby pasował do tego fragmentu kodu, który zawiera kod konfiguracji sugestii:
Start.yaml
onEnter:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Before you continue on your quest, would you like your fortune
told?
suggestions:
- title: "Yes"
- title: "No"
- Zapisz plik.
Testowanie działania w symulatorze
W tym momencie Twoja czynność powinna przejść z głównego wywołania do sceny Start i zapytać użytkownika, czy chce poznać swoją przyszłość. W symulowanym wyświetlaczu powinny się też pojawić karty z sugestiami.
Aby przetestować działanie w symulatorze, wykonaj te czynności:
- W terminalu uruchom to polecenie:
gactions deploy preview
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Skopiuj podany adres URL i wklej go w przeglądarce.
- Kliknij Testuj, aby przejść do symulatora.
- Wpisz
Talk to my test appw polu Input (Dane wejściowe) i naciśnijEnter. Twoja czynność powinna odpowiedzieć promptemMain invocationi dodatkowym promptem scenyStart„Zanim wyruszysz w dalszą podróż, czy chcesz poznać swoją przyszłość?”, wyświetlając sugestie.
Na tym zrzucie ekranu widać tę interakcję:

- Aby odpowiedzieć na prompt, kliknij element z sugestią Tak lub Nie. (Możesz też powiedzieć „Tak” lub „Nie” albo wpisać
YeslubNow polu Wpisz).
Gdy odpowiesz na prompt, akcja odpowie komunikatem informującym, że nie rozumie Twoich danych wejściowych: „Przepraszam, nie zrozumiałem(-am). Czy możesz spróbować jeszcze raz? Ponieważ nie skonfigurowano jeszcze akcji tak, aby rozpoznawała i odpowiadała na dane wejściowe „Tak” lub „Nie”, akcja dopasowuje dane wejściowe do intencji NO_MATCH.
Domyślnie intencja systemowa NO_MATCH zapewnia ogólne odpowiedzi, ale możesz je dostosować, aby poinformować użytkownika, że nie rozumiesz jego danych wejściowych. Asystent kończy rozmowę użytkownika z Twoją akcją, gdy 3 razy nie uda mu się dopasować danych wejściowych użytkownika.
Dodawanie intencji yes i no
Teraz, gdy użytkownicy mogą odpowiadać na pytania zadawane przez Twoją czynność, możesz skonfigurować ją tak, aby rozpoznawała odpowiedzi użytkowników („Tak” lub „Nie”). W kolejnych sekcjach utworzysz niestandardowe intencje, które będą dopasowywane, gdy użytkownik powie „Tak” lub „Nie”, a następnie dodasz te intencje do sceny Start.
Tworzenie intencji yes
Aby utworzyć yes intencję, wykonaj te czynności:
- W terminalu utwórz w katalogu
customnowy katalog o nazwieintents:
mkdir custom/intents
- Utwórz nowy plik o nazwie
yes.yamlw kataloguintents:
touch custom/intents/yes.yaml
- Otwórz plik
yes.yamlw edytorze tekstu. - Wklej do pliku
yes.yamlten fragment kodu zawierający wyrażenia na potrzeby trenowania:
yes.yaml
trainingPhrases:
- of course
- let's do it
- ok
- sure
- "y"
- "yes"
- Zapisz plik.
Dodaj intencję yes do sceny Start
Teraz akcja może rozpoznawać, kiedy użytkownik wyraża zamiar „tak”. Możesz dodać yes niestandardową intencję do Start sceny, ponieważ użytkownik odpowiada na Start prompt („Zanim wyruszysz w dalszą podróż, czy chcesz poznać swoją przyszłość?”).
Aby dodać ten niestandardowy zamiar do sceny Start, wykonaj te czynności:
- Otwórz plik
custom/scenes/Start.yamlw edytorze tekstu. - Dodaj obsługę
intentEventsiyesna końcu plikuStart.yaml:
Start.yaml
intentEvents:
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: Your future depends on the item you choose to use for your quest. Choose wisely! Farewell, stranger.
intent: "yes"
transitionToScene: actions.scene.END_CONVERSATION
Gdy zostanie dopasowany yes, do kolejki promptów zostanie dodany prompt „Twoja przyszłość zależy od przedmiotu, którego użyjesz w swojej misji…”. Scena Start przechodzi następnie w scenę actions.scene.END_CONVERSATION systemu, która dostarcza prompty w kolejce promptów i kończy rozmowę.
Testowanie intencji yes w symulatorze
W tym momencie Twoja czynność rozumie, kiedy użytkownik chce poznać swoją przyszłość, i zwraca odpowiednią odpowiedź.
Aby przetestować ten zamiar w symulatorze, wykonaj te czynności:
- W terminalu uruchom to polecenie:
gactions deploy preview
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Skopiuj podany adres URL i wklej go w przeglądarce.
- Kliknij Testuj, aby przejść do symulatora.
- Aby przetestować działanie w symulatorze, wpisz
Talk to my test appw polu Input (Dane wejściowe) i naciśnijEnter. - Wpisz
Yesw polu Input (Dane wejściowe) i naciśnijEnter. Możesz też kliknąć element z sugestią Tak.

Twoja akcja odpowiada użytkownikowi i informuje go, że jego przyszłość zależy od wybranej pomocy. Działanie kończy sesję, ponieważ przejście End conversation zostało skonfigurowane dla intencji yes.
Tworzenie intencji no
Teraz możesz utworzyć intencję no, aby akcja mogła zrozumieć użytkownika i odpowiedzieć mu, gdy nie chce poznać swojej przyszłości.
Aby utworzyć ten zamiar, wykonaj te czynności:
- W terminalu utwórz w katalogu
intentsnowy plik o nazwieno.yaml:
touch custom/intents/no.yaml
- Otwórz plik
no.yamlw edytorze tekstu. - Wklej do pliku
no.yamlte wyrażenia na potrzeby trenowania:
no.yaml
trainingPhrases:
- nope
- I don't want
- "n"
- "no"
- nah
- no thanks
- Zapisz plik.
Dodaj intencję no do sceny Start
Teraz akcja może zrozumieć, kiedy użytkownik mówi „nie” lub coś podobnego do „nie”, np. „nie”. Musisz dodać no niestandardową intencję do Start sceny, ponieważ użytkownik odpowiada na Start prompt („Zanim wyruszysz w dalszą drogę, czy chcesz poznać swoją przyszłość?”).
Aby dodać ten zamiar do sceny Start, wykonaj te czynności:
- Otwórz plik
custom/scenes/Start.yamlw edytorze tekstu. - Dodaj ten moduł obsługi
nopod modułem obsługiyesw plikuStart.yaml:
Start.yaml
- handler:
staticPrompt:
candidates:
- promptResponse:
firstSimple:
variants:
- speech: I understand, stranger. Best of luck on your quest! Farewell.
intent: "no"
transitionToScene: actions.scene.END_CONVERSATION
- Zapisz plik.
Testowanie intencji no w symulatorze
W tym momencie Twoja akcja będzie wiedzieć, kiedy użytkownik nie chce poznać swojej przyszłości, i zwróci odpowiednią odpowiedź.
Aby przetestować ten zamiar w symulatorze, wykonaj te czynności:
- W terminalu uruchom to polecenie:
gactions deploy preview
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Skopiuj podany adres URL i wklej go w przeglądarce.
- Kliknij Testuj, aby przejść do symulatora.
- Wpisz
Talk to my test appw polu Input (Dane wejściowe) i naciśnijEnter. - Wpisz
Now polu Input (Dane wejściowe) i naciśnijEnter. Możesz też kliknąć element z sugestiąNo.

Zamiast przepowiadać przyszłość, Twoja akcja życzy użytkownikowi powodzenia w dalszej podróży. Działanie kończy sesję, ponieważ przejście End conversation zostało skonfigurowane dla intencji no.
5. Wdrożenie realizacji
Obecnie odpowiedzi akcji są statyczne. Gdy scena zawierająca prompt zostanie aktywowana, akcja za każdym razem wysyła ten sam prompt. W tej sekcji zaimplementujesz realizację, która zawiera logikę tworzenia dynamicznej odpowiedzi konwersacyjnej.
Usługa realizująca prośbę określa, czy użytkownik jest powracającym użytkownikiem czy nowym użytkownikiem, i modyfikuje powitanie w przypadku powracających użytkowników. Wiadomość powitalna dla powracających użytkowników jest skrócona i zawiera podziękowanie za powrót: „Witaj, wędrowcze! Witamy ponownie w mitycznej krainie Gryffinberg!
W tym ćwiczeniu do edytowania i wdrażania kodu realizacji użyjesz edytora Cloud Functions.
Twoja akcja może wywoływać elementy webhook, które powiadamiają o zdarzeniu występującym podczas wywołania lub w określonych częściach wykonania sceny. Gdy wywoływany jest webhook, Twoja akcja wysyła do realizacji żądanie z ładunkiem JSON oraz nazwą modułu obsługi, który ma przetworzyć zdarzenie. Ten moduł obsługi wykonuje pewne operacje logiczne i zwraca odpowiednią odpowiedź w formacie JSON.
Zbuduj swój system realizacji
W tej sekcji zmodyfikujesz realizację, aby generować różne prompty dla powracających i nowych użytkowników, gdy wywołują Twoją akcję.
Aby dodać tę logikę do realizacji zamówienia, wykonaj te czynności:
- W terminalu upewnij się, że jesteś w katalogu głównym projektu, i utwórz nowy katalog
webhooks:
mkdir webhooks
- Utwórz nowy plik o nazwie
ActionsOnGoogleFulfillment.yamlw kataloguwebhooks:
touch webhooks/ActionsOnGoogleFulfillment.yaml
- Otwórz plik
ActionsOnGoogleFulfillment.yamlw edytorze tekstu. - Dodaj do pliku
ActionsOnGoogleFulfillment.yamlobsługęgreetingi treśćinlineCloudFunction:
ActionsOnGoogleFulfillment.yaml
handlers:
- name: greeting
inlineCloudFunction:
executeFunction: ActionsOnGoogleFulfillment
Plik ActionsOnGoogleFulfillment.yaml definiuje moduły obsługi webhooka (np. moduł greeting) i informuje działanie, że ma używać Cloud Functions jako punktu końcowego webhooka.
- Utwórz nowy katalog
ActionsOnGoogleFulfillmentw kataloguwebhooks:
mkdir webhooks/ActionsOnGoogleFulfillment
- Utwórz nowy plik o nazwie
index.jsw kataloguActionsOnGoogleFulfillment:
touch webhooks/ActionsOnGoogleFulfillment/index.js
- Otwórz plik
index.jsw edytorze tekstu. - Dodaj do pliku
index.jsten kod:
index.js
const { conversation } = require('@assistant/conversation');
const functions = require('firebase-functions');
const app = conversation({debug: true});
app.handle('greeting', conv => {
let message = 'A wondrous greeting, adventurer! Welcome back to the mythical land of Gryffinberg!';
if (!conv.user.lastSeenTime) {
message = 'Welcome to the mythical land of Gryffinberg! Based on your clothes, you are not from around these lands. It looks like you\'re on your way to an epic journey.';
}
conv.add(message);
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);
Ten kod definiuje moduł obsługi greeting, który wysyła odpowiednie powitanie do
użytkownika.
- Zapisz plik.
- Utwórz nowy plik o nazwie
package.jsonw kataloguActionsOnGoogleFulfillment:
touch webhooks/ActionsOnGoogleFulfillment/package.json
Plik package.json określa zależności i inne metadane webhooka.
- Otwórz plik
package.jsonw edytorze tekstu. - Skopiuj kod z tego repozytorium GitHub i wklej go do pliku
package.json. - Zapisz plik.
Zrozumienie kodu
Realizacja, która korzysta z biblioteki Actions on Google Fulfillment dla Node.js, odpowiada na żądania HTTP od Asystenta Google.
W poprzednim fragmencie kodu definiujesz greeting, który sprawdza, czy użytkownik odwiedził wcześniej działanie z właściwością lastSeenTime. Jeśli właściwość lastSeenTime nie jest zdefiniowana, użytkownik jest nowy i otrzymuje powitanie przeznaczone dla nowych użytkowników. W przeciwnym razie wiadomość potwierdza powrót użytkownika i generuje zmodyfikowane powitanie.
Aktualizowanie głównego wywołania w celu wywołania webhooka
Po zdefiniowaniu funkcji greeting możesz skonfigurować w głównym zamiarze wywołania moduł obsługi zdarzeń greeting, aby Twoja akcja wiedziała, że ma wywołać tę funkcję, gdy użytkownik ją wywoła.
Aby skonfigurować działanie tak, aby wywoływało nowy moduł obsługi greeting, wykonaj te czynności:
- Otwórz plik
custom/global/actions.intent.MAIN.yamlw edytorze tekstu. - Zastąp kod w pliku
actions.intent.MAIN.yamltym kodem:
actions.intent.MAIN.yaml
handler:
webhookHandler: greeting
transitionToScene: Start
- Zapisz plik.
Gdy główny zamiar wywołania zostanie dopasowany, wywoływany jest moduł obsługi webhooka greeting.
Testowanie zaktualizowanego głównego wywołania w symulatorze
Aby przetestować działanie w symulatorze, wykonaj te czynności:
- W terminalu uruchom to polecenie:
gactions deploy preview
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. You can now test your changes in Simulator with this URL: http://console.actions.google.com/project/{project-id}/simulator?disableAutoPreview
- Skopiuj podany adres URL i wklej go w przeglądarce.
- Aby przetestować działanie w symulatorze, wpisz
Talk to my test appw polu Input (Dane wejściowe) i naciśnijEnter.
Ponieważ w tym laboratorium kodowania testujesz działanie wcześniej, nie jesteś nowym użytkownikiem, więc otrzymujesz skróconą wersję powitania: „Witaj, podróżniku! Witamy ponownie w mitycznej krainie Gryffinberg…"
6. Wizualizacja działania za pomocą narzędzia Actions Builder
Pakiet Actions SDK jest kompatybilny z internetowym środowiskiem IDE o nazwie Actions Builder, które jest zintegrowane z konsolą Actions. Możesz przesłać lokalny system plików do wersji roboczej działania w konsoli za pomocą polecenia gactions push. W przeciwieństwie do gactions deploy preview, które umożliwia testowanie działania tylko w symulatorze, gactions push przenosi całą zawartość z plików lokalnych do narzędzia Actions Builder.
Konsola Actions udostępnia wizualną reprezentację konfiguracji akcji. Wizualizacja działania może być przydatna podczas programowania i nie wpływa na wersję działania, która jest używana do testowania.
Aby przesłać projekt działań i wyświetlić go w konsoli Actions, wykonaj te czynności:
- Aby przesłać projekt do konsoli Actions, uruchom w terminalu to polecenie:
gactions push
Powinny pojawić się dane wyjściowe podobne do tych:
✔ Done. Files were pushed to Actions Console, and you can now view your project with this URL: https://console.actions.google.com/project/{project-id}/overview. If you want to test your changes, run "gactions deploy preview", or navigate to the Test section in the Console.
- Skopiuj podany adres URL i wklej go w przeglądarce.
- W Konsoli Actions na górnym pasku nawigacyjnym kliknij Rozwijaj.
- Kliknij strzałkę w dół obok opcji Sceny i kliknij Start. Powinna się wyświetlić wizualizacja sceny
Startakcji, jak na tym zrzucie ekranu:

Zwolnij miejsce w projekcie [zalecane]
Aby uniknąć ewentualnych opłat, zalecamy usunięcie projektów, których nie zamierzasz używać. Aby usunąć projekty utworzone w tym laboratorium, wykonaj te czynności:
- Aby usunąć projekt Cloud i zasoby, wykonaj czynności opisane w sekcji Zamykanie (usuwanie) projektów.
- Opcjonalnie: aby natychmiast usunąć projekt z Konsoli Actions, wykonaj czynności opisane w sekcji Usuwanie projektu. Jeśli nie wykonasz tego kroku, projekt zostanie automatycznie usunięty po około 30 dniach.
7. Gratulacje!
Znasz podstawy tworzenia akcji dla Asystenta Google za pomocą pakietu Actions SDK.
Co obejmuje ochrona
- Jak skonfigurować projekt w Actions w konsoli Actions
- Jak używać pakietu Actions SDK do tworzenia projektu akcji w lokalnym systemie plików
- Jak dodać prompt do głównego wywołania, aby użytkownicy mogli rozpocząć rozmowę z Twoją czynnością
- Jak utworzyć interfejs konwersacyjny ze scenami, intencjami, przejściami, sugestiami i realizacją
- Testowanie działania za pomocą Symulatora Actions
Więcej informacji
Aby dowiedzieć się więcej o tworzeniu działań dla Asystenta Google, zapoznaj się z tymi materiałami:
- Oficjalna witryna z dokumentacją dotyczącą tworzenia działań dla Asystenta Google
- Strona Actions on Google w GitHubie z przykładowym kodem i bibliotekami
- Oficjalna społeczność Reddit dla deweloperów korzystających z Asystenta
Obserwuj @ActionsOnGoogle na Twitterze, aby otrzymywać najnowsze ogłoszenia, i publikuj tweety z hashtagiem #AoGDevs, aby dzielić się swoimi projektami.
Ankieta dotycząca opinii
Zanim wyjdziesz, wypełnij krótką ankietę dotyczącą Twoich wrażeń.