Tworzenie działań dla Asystenta Google za pomocą narzędzia Actions Builder (poziom 2)

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 własną usługą realizacji zamówień.

Ten moduł obejmuje koncepcje na poziomie średniozaawansowanym dotyczące tworzenia aplikacji na Asystenta Google i bazuje na akcji utworzonej w module 1. Zdecydowanie zalecamy ukończenie ćwiczenia z poziomu 1 przed rozpoczęciem tego ćwiczenia.

Działanie, które utworzysz w tym samouczku, będzie przepowiadać użytkownikom przyszłość w ich wyprawie do mitycznej krainy Gryffinberg na podstawie wybranej przez nich pomocy.

Co utworzysz

W tym ćwiczeniu z programowania utworzysz zaawansowane działanie konwersacyjne z tymi funkcjami:

  • Zbiera dane od użytkownika i w zależności od ich wartości modyfikuje podpowiedzi w konwersacji.
  • odpowiada pytaniami uzupełniającymi, aby kontynuować rozmowę;
  • Tworzy pętlę gry, dzięki czemu użytkownik może ponownie wejść w interakcję z Action po otrzymaniu wróżby.

Zanim zaczniesz tworzyć akcję, możesz wypróbować ją na żywo na urządzeniu z Asystentem Google, mówiąc „OK Google, porozmawiaj z Wróżbą i Fortuną”. Domyślna ścieżka działania w przypadku powracającego użytkownika wygląda tak:

dd6f5c61296b8b50.png

eba043f546aa8c51.png

Czego się nauczysz

  • Jak używać slotów do zbierania danych od użytkowników
  • Jak używać warunków, aby dodać logikę do sceny
  • Jak dodać pętlę gry
  • Jak dodać ścieżkę wsparcia

Czego potrzebujesz

Wymagania wstępne dotyczące tego laboratorium obejmują:

Aby zrozumieć kod realizacji w tych ćwiczeniach z programowania, zdecydowanie zalecamy znajomość JavaScript (ES6), choć nie jest to wymagane.

2. Kontynuowanie tworzenia interfejsu konwersacyjnego

pierwszych ćwiczeniach z programowania utworzyliśmy prostą akcję do prowadzenia konwersacji z jedną sceną Start.

W tym ćwiczeniu z programowania rozszerzysz rozmowę z działaniem. W kolejnych sekcjach skonfigurujesz działanie w taki sposób, aby:

  • Przejście do nowej sceny Fortune, gdy użytkownik chce poznać swoją przyszłość
  • Zapytaj użytkownika, z jakiej pomocy chce skorzystać podczas podróży.
  • Wyświetlanie spersonalizowanych wróżb na podstawie wyboru użytkownika

Tworzenie sceny Fortune

W tej sekcji tworzysz Fortune i określasz, jak użytkownik przechodzi do niej podczas rozmowy.

Aby utworzyć nową scenę o nazwie Fortune, wykonaj te czynności:

  1. Otwórz projekt czynności na poziomie 1 w codelabs.
  2. Na pasku nawigacyjnym kliknij Tworzenie.
  3. W sekcji Sceny kliknij scenę Rozpocznij.
  4. Kliknij intencję tak (pole Gdy zostanie dopasowana odpowiedź „tak”), aby otworzyć opcje.
  5. Kliknij Wyślij prompty, aby usunąć prompta.
  6. W sekcji Przejście kliknij menu, a następnie kliknij pole tekstowe i wpisz Fortune.
  7. Kliknij Dodaj. Spowoduje to utworzenie nowej sceny o nazwie Fortune. Dodaje też przejście ze sceny Start do sceny Fortune, gdy użytkownik chce poznać swoją przyszłość.

56682a0c7459b98c.png

Określ logikę rozmowy dla sceny Fortune

W tym ćwiczeniu w Codelabs skonfigurujesz scenę Fortune, aby zadać użytkownikowi pytanie: „Co wybierasz, aby pomóc Ci w wyprawie: smoka, tłumacz czy kompas?”. Aby zebrać od użytkownika niezbędne informacje przed kontynuowaniem, możesz użyć funkcji wypełniania slotów.

Twoja akcja podaje wróżby dla 3 pomocników: smoka, tłumacza i kompasu. Aby skonfigurować działanie tak, aby rozpoznawało te 3 opcje w danych wejściowych użytkownika, musisz utworzyć nowy typ.

Podczas wypełniania slotów w scenie możesz używać typów, aby określić informacje, których oczekujesz od użytkownika. Gdy silnik NLU wykryje w danych wejściowych użytkownika dopasowanie do gniazda, wyodrębnia je jako parametr wpisany, dzięki czemu możesz używać go w scenie.

Tworzenie typu available_options

W tej sekcji utworzysz nowy typ o nazwie available_options, który określa 3 opcje, jakie użytkownicy mogą wybrać w odpowiedzi na prompt (dragon, translator i compass). Możesz też zdefiniować kilka synonimów tych opcji na wypadek, gdyby użytkownik powiedział coś podobnego. W dalszej części dodasz do slotu typ available_options, aby określić, że chcesz uzyskać wybór użytkownika.

Aby utworzyć typ available_options, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Typy.
  2. Kliknij + (znak plusa), wpisz available_options i naciśnij Enter.
  3. Kliknij available_options, aby otworzyć opcje.

Typy są konfigurowane jako pary klucz-wartość, gdzie klucz to nazwa typu, a wartości to synonimy tego klucza. Gdy zdefiniujesz klucz, zostanie on automatycznie dodany jako wartość.

Aby dodać 3 opcje, które użytkownik może wybrać, wykonaj te czynności:

  1. Przewiń do sekcji Dodaj wpisy.
  2. W polu Nowy wpis wpisz dragon i naciśnij Enter. Spowoduje to utworzenie klucza dragon.
  3. Wpisz hydra w polu Dodaj wartości i naciśnij Enter, aby dodać je jako wartość (synonim). Następnie powtórz ten krok w przypadku wartości lizard.
  4. Dodaj pozostałe klucze i odpowiednie wartości:
  • translator | translator, communicator, machine, decoder, translate
  • compass | compass, direction, guide

8333b1b67445f21.png

  1. Kliknij Zapisz.

Działanie rozumie teraz, że available_options to smok, tłumacz i kompas, a także rozpoznaje kilka odpowiednich synonimów.

Konfigurowanie wypełniania slotów

Następnie musisz skonfigurować wypełnianie slotów w Fortune scenie. Aby skonfigurować logikę wypełniania slotów, wykonaj te czynności:

  1. Na pasku nawigacyjnym w sekcji Sceny kliknij Fortune (Fortuna).
  2. W scenie Fortune kliknij + (znak plusa) w sekcji Wypełnianie slotów.
  3. W polu Wpisz nazwę slota dodaj chosenOptions jako nazwę slota.
  4. Na liście Wybierz typ wybierz available_options jako typ miejsca.
  5. Zaznacz pole wyboru Ten slot jest wymagany.

a461b906476e244.png

  1. Kliknij Wyślij prompty i dodaj te wiadomości oraz sugestie:
candidates:
  - first_simple:
      variants:
        - speech: >-
            What do you choose to help you on your quest, a dragon, a
            translator, or a compass?
    suggestions:
      - title: 'Dragon'
      - title: 'Translator'
      - title: 'Compass'
  1. Kliknij Zapisz.

Do slotu został dodany typ available_options, który informuje działanie, jakie informacje (wybór pomocy) należy zebrać od użytkownika przed kontynuowaniem. W slocie skonfigurowano też prompt, który jest dodawany do kolejki promptów, gdy użytkownik osiągnie etap wypełniania slotu w scenie.

Pamiętaj, że gdy nazwiesz boks chosenOptions, pole Dostosuj zapisywanie wartości boksu zostanie zaktualizowane o tę samą nazwę ($session.params.chosenOptions). Możesz uzyskać dostęp do tego parametru pod tą nazwą w Actions Builder i w realizacji za pomocą biblioteki klienta.

Konfigurowanie warunku scene.slots.status == "FINAL"

Gdy dodasz miejsce, warunek scene.slots.status == "FINAL" zostanie automatycznie dodany do listy warunków.

Warunek scene.slots.status == "FINAL" sprawdza, czy wypełnianie slotów zostało zakończone. Gdy wszystkie miejsca zostaną wypełnione, warunek może wywołać webhook, przejść do nowej sceny lub dodać prompty do kolejki promptów.

W tej sekcji skonfigurujesz scene.slots.status == "FINAL" tak, aby po wypełnieniu miejsc w kolejce promptów dodawał do niej prompt.

Aby dodać ten prompt do warunku FINAL, wykonaj te czynności:

  1. Kliknij scene.slots.status == "FINAL", aby otworzyć okno opcji.
  2. Kliknij Wyślij prompty i dodaj ten prompt:
candidates:
  - first_simple:
      variants:
        - speech: You picked $session.params.chosenOptions.
  1. Kliknij Zapisz.

Testowanie działania w symulatorze

Na tym etapie określasz, które opcje użytkownik powinien wybrać, aby wypełnić slot. Po uzyskaniu tych informacji od użytkownika działanie powinno wyświetlić prompta odwołującego się do wybranej przez niego opcji.

Aby przetestować działanie, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Kliknij lub wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. (Możesz też kliknąć sugestię Tak).

a899d45c542668f6.png

  1. Kliknij, wpisz lub powiedz dragon. Powinien wyświetlić się prompt „You picked dragon.” (Wybrano smoka).

W następnej sekcji dostosujesz prompty dla każdego narzędzia, które użytkownik może wybrać.

Dostosowywanie promptów za pomocą warunków

W tej sekcji dodajesz warunki dla każdej opcji, którą użytkownik może wybrać, oraz niestandardowy prompt dla każdego warunku.

Dostosowywanie wróżby dragon

Aby zaktualizować warunek i dostosować prompt, który będzie wyświetlany, gdy użytkownik wybierze „smoka”, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Tworzenie.
  2. Na pasku nawigacyjnym kliknij scenę Fortune.
  3. Kliknij scene.slots.status == "FINAL", aby otworzyć okno opcji.
  4. Zaktualizuj warunek na: scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"
  5. Kliknij Wyślij prompty.
  6. Zaktualizuj prompt za pomocą tego tekstu w edytorze kodu:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The people of Gryffinberg will be awestruck by the beauty and power
            of the ancient dragon. Much to your dismay, the townspeople fall
            into dispute over who will receive the honor of riding the dragon
            first. You return home from your quest without everlasting glory or
            a dragon.
  1. Kliknij Zapisz.

d31767232ad908bd.png

Teraz, gdy użytkownik powie „smok” lub coś podobnego, Twoja akcja poda wróżbę na podstawie tego wyboru. Następnie dodaj pozostałe 2 wybory.

Dostosowywanie wróżby translator

Aby dodać warunek i dostosować prompt, który będzie wyświetlany, gdy użytkownik wybierze „tłumacz”, wykonaj te czynności:

  1. Kliknij + (znak plusa) obok pozycji Warunek.
  2. Dodaj scene.slots.status == "FINAL" && session.params.chosenOptions == "translator" do pola else if.
  3. Kliknij Wyślij prompty.
  4. W edytorze kodu dodaj ten prompt:
candidates:
  - first_simple:
      variants:
        - speech: >-
            With the help of the translator, the rival factions in Gryffinberg
            are finally able to communicate with each other and resolve their
            disputes. You will complete your quest to restore peace in the town.
            The translator will be used on many subsequent journeys across the
            earth. After its work is done, it retires honorably to a premier
            location in the Gryffinberg History Museum.
  1. Kliknij Zapisz.

c1af65e70dbf3dfe.png

Dostosowywanie wróżby compass

Aby dodać warunek i dostosować prompt, który będzie się wyświetlać, gdy użytkownik wybierze „kompas”:

  1. Kliknij + (znak plusa) obok pozycji Warunek.
  2. Dodaj scene.slots.status == "FINAL" && session.params.chosenOptions == "compass" do pola tekstowego else if.
  3. Kliknij Wyślij prompty.
  4. W edytorze kodu dodaj ten prompt:
candidates:
  - first_simple:
      variants:
        - speech: >-
            The compass will help you find the mystical and ancient Library of
            Gryffinberg. Among its infinite stacks of dusty books, you find one
            entitled "Wisdom of the Ages". By the time you've read the
            50,000-page tome, the townspeople have forgotten their problems. You
            will write a second edition of "Wisdom of the Ages", but have
            limited commercial success.
  1. Kliknij Zapisz.

Testowanie działania w symulatorze

Na tym etapie Twoja akcja powinna wyświetlić użytkownikowi spersonalizowaną wróżbę na podstawie wybranej przez niego opcji.

Aby przetestować działanie, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć sugestię Tak.
  4. Kliknij, wpisz lub powiedz Translator.

29e17f950bd0dd71.png

Powinien wyświetlić się odpowiedni komunikat dla opcji „translator”.

3. Dodawanie pętli gry

W tej sekcji skonfigurujesz działanie w taki sposób, aby użytkownik mógł wybrać inną opcję i po dokonaniu wyboru usłyszeć inną przepowiednię. Ta zmiana jest podobna do komunikatu „Czy chcesz zagrać jeszcze raz?”, który pojawia się na końcu gry. Aby utworzyć tę pętlę, możesz ponownie wykorzystać utworzone wcześniej intencje yesno i dodać je do nowej sceny o nazwie Again.

Tworzenie sceny Again

W tej sekcji utworzysz nową Again scenę i dodasz prompt, który zapyta użytkownika, czy chce wybrać inną opcję.

Aby utworzyć Again scenę, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Tworzenie.
  2. Kliknij + (znak plusa) w sekcji Sceny.
  3. Wpisz Again i naciśnij Enter.
  4. Na pasku nawigacyjnym kliknij scenę Again.
  5. Kliknij + (znak plusa) obok opcji Po wejściu.
  6. Kliknij Wyślij prompty i dodaj ten prompt oraz te sugestie:
candidates:
  - first_simple:
      variants:
        - speech: >-
            That is what I see for you. Would you like to choose a different option and
            explore another future?
    suggestions:
      - title: 'Yes'
      - title: 'No'
  1. Kliknij Zapisz.

Dodawanie przejścia ze sceny Fortune do sceny Again

Po otrzymaniu wróżby przez użytkownika rozmowa musi przejść do nowej sceny Again.

Aby dodać przejście ze sceny Fortune do sceny Again, wykonaj te czynności:

  1. Kliknij scenę Fortune (Fortuna).
  2. Kliknij pierwszy warunek (scene.slots.status == "FINAL" && session.params.chosenOptions == "dragon"), aby otworzyć okno opcji.
  3. Przewiń i wybierz Again w sekcji Przejście.
  4. Kliknij Zapisz.
  5. Kliknij drugi warunek, aby otworzyć okno opcji.
  6. Przewiń i wybierz Again w sekcji Przejście.
  7. Kliknij Zapisz.
  8. Kliknij trzeci warunek, aby otworzyć okno opcji.
  9. Przewiń i wybierz Again w sekcji Przejście.
  10. Kliknij Zapisz.

Testowanie działania w symulatorze

W tym momencie Twoja akcja powinna wyświetlić użytkownikowi po otrzymaniu wróżby ten prompt: „To jest to, co widzę w Twojej przyszłości. Czy chcesz wybrać inną opcję i poznać inną przyszłość?

Aby przetestować działanie, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć sugestię Tak.
  4. Kliknij, wpisz lub powiedz dragon.

b299e9fed9aedb69.png

Powinna pojawić się wróżba dla opcji smoka i prompt Again.

Dodawanie intencji i przechodzenie do sceny Again

W tej sekcji dodasz intencje yesno do sceny Again, aby Twoja akcja wiedziała, czy użytkownik chce wybrać nową opcję. Dodajesz też odpowiednie przejścia dla intencji yesno. Intencja yes przechodzi do sceny Fortune, a intencja no przechodzi do sceny systemowej End conversation.

Aby dodać intencje i przejścia do sceny Again, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Tworzenie.
  2. Kliknij scenę Again.
  3. Kliknij + (znak plusa) obok opcji Obsługa zamiarów użytkownika.
  4. W menu intencji kliknij tak.
  5. W menu Przejście kliknij Fortune.
  6. Kliknij Zapisz.

c2efba35ea881b0d.png

  1. Kliknij + (znak plusa) obok opcji Obsługa zamiarów użytkownika.
  2. W menu intencji wybierz nie.
  3. W menu Przejście kliknij Zakończ rozmowę.
  4. Kliknij Wyślij prompty i dodaj w edytorze kodu ten prompt:
candidates:
  - first_simple:
      variants:
        - speech: >-
            It pleases me that you are satisfied with your choice. Best of luck on your quest. Farewell.
  1. Kliknij Zapisz.

Testowanie działania w symulatorze

Twoja czynność powinna teraz rozpoznawać, czy użytkownik chce wybrać nową opcję, czy zakończyć rozmowę.

Aby przetestować intencję yes, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć sugestię Tak.
  4. Kliknij, wpisz lub powiedz jedną z opcji.
  5. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter.

5d0690332efe2e29.png

Powinien pojawić się prompt „Co wybierzesz, aby pomóc Ci w wyprawie: smoka, tłumacza czy kompas?”

Aby przetestować intencję no, wykonaj te czynności:

  1. Kliknij, wpisz lub powiedz jedną z opcji.
  2. Wpisz No w polu wprowadzania i naciśnij Enter.

Powinien pojawić się prompt End conversation: „Cieszę się, że jesteś zadowolony(-a) ze swojego wyboru. Powodzenia w poszukiwaniach. Żegnaj”.

4. Dodawanie ścieżki wspierającej

Główna ścieżka, którą podąża większość użytkowników Twojej akcji, została już utworzona. Użytkownik może jednak odpowiedzieć na pytanie z Fortune sceny: „Co wybierasz, aby pomóc sobie w wyprawie: smoka, tłumacz czy kompas?”, wybierając opcję, która nie jest jedną z podanych.

W tej sekcji skonfigurujesz działanie tak, aby rozpoznawało, kiedy użytkownik wybierze „magia”, „pieniądze”, „koń” lub „telefon”, i aby w takim przypadku wyświetlało prośbę o wybranie jednej z pierwotnych 3 opcji. Aby skonfigurować tę logikę, musisz utworzyć nowy type, który zawiera te inne opcje, oraz nowy zamiar other_option, który jest dopasowywany, gdy użytkownik wybierze jedną z tych opcji. Musisz też oznaczyć wyrażenia na potrzeby trenowania w ramach intencji other_option, aby identyfikować i wyodrębniać parametry intencji.

Gdy silnik przetwarzania języka naturalnego (NLU) Asystenta wykryje w danych wejściowych użytkownika dopasowanie parametru, wyodrębnia wartość jako parametr wpisany, dzięki czemu możesz używać jej w scenie. W tym laboratorium kodowania skonfigurujesz działanie tak, aby wyodrębniało pomoc wybraną przez użytkownika i odwoływało się do tego wyboru w prompcie.

Tworzenie typu unavailable_options

Możesz teraz utworzyć typ unavailable_options, który zawiera różne opcje, aby Twoja czynność mogła identyfikować te dane w danych wejściowych użytkownika.

Aby utworzyć typ unavailable_options, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Tworzenie.
  2. Kliknij + (znak plusa) w sekcji Typy.
  3. Wpisz unavailable_options i naciśnij Enter.
  4. Kliknij unavailable_options, aby otworzyć opcje.
  5. W sekcji Dodaj wpisy wpisz te wpisy i odpowiadające im wartości:

horse

horse, stallion, steed

magic

magic, enchanted, spells

money

money, cash, gold

phone

phone, cell, apps

Tabela par klucz-wartość powinna wyglądać tak:

c9e119e0f5fb2a47.png

  1. Kliknij Zapisz.

Tworzenie intencji other_option

Następnie tworzysz intencję o nazwie other_option i dodajesz do niej frazy treningowe, które zawierają opcje typu unavailable_options. Ten zamiar jest dopasowywany, gdy użytkownik wybierze opcję zawartą w typie unavailable_options.

Aby utworzyć i skonfigurować intencję other_option, wykonaj te czynności:

  1. W sekcji Niestandardowe intencje kliknij + (znak plusa).
  2. Wpisz other_option i naciśnij Enter.
  3. Kliknij other_option, aby otworzyć okno.
  4. Dodaj te wyrażenia na potrzeby trenowania i po każdym z nich naciśnij Enter:
  • I want to use spells
  • I really really want to use a phone
  • magic!
  • cash
  • I want to ride a horse
  1. W sekcji Dodaj parametry intencji zmień nazwę parametru na chosenUnavailableOption.
  2. Kliknij Zapisz.

Podczas wpisywania przykładowych wypowiedzi narzędzie Actions Builder rozpoznaje słowa spells, phone, magic, cashhorse typu unavailable_options i automatycznie je wyróżnia (dodaje do nich adnotacje). Kreator działań automatycznie dodaje parametr intencji w sekcji Dodaj parametry intencji, jak pokazano na ilustracji poniżej.

Parametr intent umożliwia wyodrębnienie nazwy opcji i użycie jej w prompcie.

df61d4489f0910.png

Dodaj intencję other_option do sceny Fortune

Masz teraz intencję other_option, która może obsługiwać opcję podaną przez użytkownika, a nie należącą do pierwotnych opcji. W tej sekcji dodasz intencję other_option do sceny Fortune. Parametr intent służy do dostosowywania prompta na podstawie danych wejściowych użytkownika.

Aby dodać intencję other_option do sceny Fortune, wykonaj te czynności:

  1. Kliknij scenę Fortune (Fortuna).
  2. Kliknij + (znak plusa) obok opcji Obsługa zamiarów użytkownika.
  3. W menu intencji kliknij other_option.
  4. Kliknij Wyślij prompty i dodaj ten prompt:
candidates:
  - first_simple:
      variants:
        - speech: >-
            I have seen the future and a $intent.params.chosenUnavailableOption.original
            will not aid you on your journey. 

Wyrażenie $intent.params.chosenUnavailableOption odnosi się do obiektu parametru intencji, a $intent.params.chosenUnavailableOption.original – do wartości tego obiektu. Symbol original property odnosi się do danych wejściowych podanych przez użytkownika.

  1. Kliknij Zapisz.

4bab1efbe21056aa.png

Gdy użytkownik wypowie opcję wymienioną w unavailable_options podczas Fortune, zostanie dopasowany zamiar other_option i do kolejki promptów zostanie dodany prompt. Ponieważ nie określono przejścia, pętla wykonania sceny jest kontynuowana przez ponowną ocenę etapu warunków. Miejsce na reklamę chosenOptions dodaje wtedy swój prompt do kolejki promptów, która jest dostarczana użytkownikowi.

Testowanie działania w symulatorze

Działanie powinno teraz odpowiednio reagować, gdy użytkownik wybierze jedną z opcji wymienionych w unavailable_options type, i określać, które urządzenie pomocnicze zostało wybrane. Następnie Twoja czynność powinna poprosić użytkownika o wybranie jednej z pierwotnych opcji (smoka, tłumacza lub kompasu).

Aby przetestować działanie w symulatorze, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć sugestię Tak.
  4. Wpisz magic w polu Input (Dane wejściowe) i naciśnij Enter.

3a42c33eca435f32.png

Możesz zauważyć, że gdy użytkownik wybierze opcję „magia”, prompt nie brzmi poprawnie ze względu na umieszczony przed nim przedimek „a”. Rozwiązanie tego problemu znajdziesz w kolejnych sekcjach.

Dodaj moduł obsługi unavailable_options

Aby umieścić przedimek „a” przed odpowiednimi opcjami z typu unavailable_options, możesz skonfigurować w logice realizacji procedurę obsługi zdarzeń, która sprawdzi, czy wybrana przez użytkownika opcja wymaga przedimka „a”. Najpierw musisz skonfigurować działanie, aby wywoływało moduł obsługi w konsoli.

Aby dodać moduł obsługi unavailable_options, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Tworzenie.
  2. Kliknij scenę Fortune.
  3. W sekcji Obsługa intencji użytkownika kliknij Gdy zostanie dopasowana opcja other_option, aby otworzyć okno.
  4. Odznacz pole wyboru Wysyłaj prompty.
  5. Zaznacz pole wyboru Wywołaj webhooka.
  6. Wpisz unavailable_options w polu tekstowym modułu obsługi zdarzeń.

52a0fba115f1b377.png

  1. Kliknij Zapisz.

Aktualizowanie i wdrażanie realizacji

Po skonfigurowaniu działania tak, aby wywoływało moduł obsługi zdarzeń unavailable_options, możesz zaktualizować moduł obsługi w usłudze realizacji i wdrożyć go.

Aby zaktualizować realizację zamówienia, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Webhook.
  2. Pod modułem obsługi greeting dodaj ten kod:
app.handle('unavailable_options', conv => {
  const option = conv.intent.params.chosenUnavailableOption.original;
  const optionKey = conv.intent.params.chosenUnavailableOption.resolved;
  let message = 'I have seen the future and ';
  if(optionsNeedA.has(optionKey)){
    message = message + 'a ';
  }
  message = message + `${option} will not aid you on your journey. `;
  conv.add(message);
});
  1. Dodaj ten kod pod elementem const app = conversation();:
const optionsNeedA = new Set();
optionsNeedA.add('horse').add('phone');
  1. Kliknij Zapisz realizację.
  2. Kliknij Wdróż realizację. Po zakończeniu wdrażania nad edytorem pojawi się komunikat Wdrożenie funkcji w Cloud Functions jest aktualne.

Zrozumienie kodu

Procedura obsługi unavailable_options wykonuje te czynności:

  • Pobiera dane option z obiektu conv i przypisuje je do właściwości original, która jest surowym wejściem od użytkownika.option
  • Przypisuje wartość optionKey do właściwości resolved, która jest kluczem typu unavailable_options.
  • Sprawdza, czy optionKey jest jedną z opcji, które wymagają przedimka „a”; jeśli tak, tworzy komunikat z dodanym przedimkiem „a”.
  • Dodaje wiadomość za pomocą conv.add(message)

Testowanie działania w symulatorze

Działanie powinno teraz dostosować prompt na podstawie tego, czy wybór użytkownika z typu unavailable_options wymaga przedimka „a”.

Aby przetestować działanie, wykonaj te czynności:

  1. Na pasku nawigacyjnym kliknij Test.
  2. Kliknij lub wpisz Talk to my test app w polu Input (Dane wejściowe) i naciśnij Enter.
  3. Wpisz Yes w polu Input (Dane wejściowe) i naciśnij Enter. Możesz też kliknąć sugestię Tak.
  4. Wpisz magic w polu Input (Dane wejściowe) i naciśnij Enter.
  5. Wpisz horse w polu Input (Dane wejściowe) i naciśnij Enter.

54ee24c5c3c56e.png

Twoje działanie powinno dodać przedimek „a” przed wyborem „horse”, a podczas tworzenia promptu nie powinno dodawać przedimka „a” przed wyborem „magic”.

Wyczyść projekt [zalecane]

Aby uniknąć ewentualnych opłat, zalecamy usunięcie projektów, których nie zamierzasz używać. Aby usunąć projekty utworzone w tym laboratorium, wykonaj te czynności:

  1. Aby usunąć projekt Cloud i zasoby, wykonaj czynności opisane w sekcji Wyłączanie (usuwanie) projektów.
  1. Opcjonalnie: aby natychmiast usunąć projekt z konsoli Actions, przeczytaj artykuł Usuwanie projektu. Jeśli nie wykonasz tego kroku, Twój projekt zostanie automatycznie usunięty po około 30 dniach.

5. Gratulacje!

Poznałeś już umiejętności średniozaawansowane niezbędne do tworzenia działań dla Asystenta Google.

Omówione kwestie

  • Jak tworzyć działania konwersacyjne za pomocą biblioteki Node.js do obsługi żądań
  • Jak używać slotów do zbierania danych od użytkownika
  • Jak używać warunków do dodawania logiki do sceny
  • Jak dodać pętlę gry
  • Jak dodać ścieżkę wsparcia

Więcej informacji

Aby dowiedzieć się więcej o tworzeniu działań dla Asystenta Google, zapoznaj się z tymi materiałami:

Obserwuj @ActionsOnGoogle na Twitterze, aby być na bieżąco z naszymi najnowszymi ogłoszeniami, i publikuj tweety z hasztagiem #AoGDevs, aby dzielić się tym, co udało Ci się stworzyć.

Ankieta dotycząca opinii

Zanim wyjdziesz, wypełnij krótką ankietę dotyczącą Twoich wrażeń.