Rozdział 9: Jak zbudować aplikację domową Google za pomocą DialogFlow | Realizacja poprzez Inline Editor

Teraz, gdy skonfigurowaliśmy środowisko, stworzyliśmy niezbędnego agenta, intencje i byt i przetestowaliśmy je. Przejdźmy do modułu realizacji, w którym użyjemy wbudowanego edytora, aby utworzyć odpowiednią odpowiedź na podstawie encji (QuoteType)

Treść serialu:

Rozdział 6: Samouczek aplikacji Google Home: Przegląd

Rozdział 7: Samouczek aplikacji Google Home: Projektowanie konwersacji

Rozdział 8: Samouczek aplikacji Google Home: Konfiguracja środowiska

Rozdział 9: Samouczek aplikacji Google Home: Realizacja za pomocą Inline Editor

Rozdział 10: Samouczek aplikacji Google Home: Realizacja za pośrednictwem magazynu danych Cloud

Rozdział 11: Samouczek aplikacji Google Home: Realizacja za pośrednictwem Webhook

Rozdział 12: Samouczek aplikacji Google Home: Wdrażanie aplikacji

Podsumuj i która część dużego obrazu, z którym mamy teraz do czynienia.

Krok 1: Włącz realizację dla intencji LookingForQuote.

Krok 2: - Realizacja za pomocą wbudowanego edytora [Obsługiwane przez funkcje chmury dla Firebase]

Usuń wszystko z wbudowanego edytora. Spróbujmy pisać od początku po jednym wierszu. Nie ma się czego bać, zostań ze mną.

Tutaj idzie. Pierwsza linia.

„stosować ścisłe”;

Ścisły:

Celem „use strict” jest wskazanie, że kod powinien być wykonywany w „trybie ścisłym”. W trybie ścisłym nie można na przykład używać niezadeklarowanych zmiennych.

Wszystkie nowoczesne przeglądarki obsługują „używaj ścisłego”, z wyjątkiem Internet Explorera (IE) 9 i niższych: Kto i tak używa IE… .unless…

ok, ruszam dalej.

const Funkcje = wymagają („funkcje bazy ogniowej”);

Const w zasadzie definiuje coś, czego nie zmieni się w programie na zawsze. Tutaj zaimportujemy moduł funkcji bazy ogniowej.

Potem jeszcze kilka stałych, z których każda będzie podtrzymywać nasze zamiary. Te ciągi powinny pasować do nazwy intencji.

„stosować ścisłe”;
const Funkcje = wymagają („funkcje bazy ogniowej”);
const {dialogflow} = wymagany ('Actions-on-google');
const WELCOME_INTENT = 'Domyślna intencja powitalna';
const FALLBACK_INTENT = 'Domyślne zamieszczenie awaryjne';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

Teraz będziemy przechowywać obiekt dialogflow w stałej o nazwie app.

const app = dialogflow ();

Następnie zdefiniujemy zamiary i utworzymy obiekt „konwekcyjny”, który użyje funkcji ask do rozmowy z użytkownikiem.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask („witamy w Dr.Motivation! Poproś o cytat o przyjaźni, romansie lub motywacji”);
});

Pamiętaj, aby włączyć funkcję Webhook w sekcji spełnienia w ramach „domyślnej intencji powitalnej”.

podobnie zamierzamy również zdefiniować pozostałe dwa zamiary .. nie martw się, że będzie to proste, ponieważ naszym celem jest, aby spełnienie było realizowane bez żadnych błędów.

jeden dla zamiaru awaryjnego

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask („Przestań mamrotać i odezwać się”);
});

jeden dla naszych niestandardowych intencji

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask („Przyjaciele są terapeutami, z którymi możemy pić”);
});

w końcu zwrócimy aplikację obiektu dialogflow po wywołaniu spełnienia

export.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

pełny kod wygląda następująco

„stosować ścisłe”;
 
const Funkcje = wymagają („funkcje bazy ogniowej”);
const {dialogflow} = wymagany ('Actions-on-google');
const WELCOME_INTENT = 'Domyślna intencja powitalna';
const FALLBACK_INTENT = 'Domyślne zamieszczenie awaryjne';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask („witamy w Dr.Motivation! Poproś o cytat o przyjaźni, romansie lub motywacji”);
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask („Przestań mamrotać i odezwać się”);
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask („Przyjaciele są terapeutami, z którymi możemy pić”);
});
export.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Krok 3: Wdróż funkcję

Krok 4: Przetestuj funkcję

sprawdź odpowiedź Realizacja, klikając „Informacje diagnostyczne”. Zobaczysz cytat, o którym wspominaliśmy w kodzie teraz.

Wypróbujmy domyślny system zastępczy bez włączania realizacji za pomocą haka internetowego i przy jego użyciu.

Bez włączonego Webhook:

Informacje diagnostyczne mają w zasadzie tylko jedną odpowiedź RAW API

A teraz chodźmy i włączmy realizację za pomocą haka internetowego w celu wycofania się ... jeśli jeszcze tego nie zrobiłeś.

wynik:

teraz, gdy włączona jest funkcja Webhook, otrzymujemy również odpowiedź dotyczącą spełnienia.

Krok 5: Dodajmy więcej funkcji do kodu.

Ponieważ otrzymujemy QuoteType jako parametr, spróbujmy użyć tego w naszym kodzie za pomocą prostych instrukcji If else.

najpierw zdefiniuj jednostkę QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

następnie wyodrębnij wartość parametru, zapisz ją w zmiennej… dopasuj ją do wartości i wypychaj różne cudzysłowy za każdym razem.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase ();
     if (quote_type == "motywacyjny") {
     conv.ask („Nie bądź leniwym dupkiem”);
     } else if (quote_type == "frienship") {
     conv.ask („Przyjaciele są terapeutami, z którymi możemy pić”);
     } else if (quote_type == "romantic") {
     conv.ask („coś romantycznego”);
     } else {
         conv.ask („odejdź od siebie i pracuj zamiast ze mną rozmawiać”);
     }
});

Przetestuj to:

Możesz także sprawdzić konsolę Firebase pod kątem dzienników błędów.

przejdź do konsoli bazy ognia .. lub w edytorze wbudowanym kliknij link

ok..so conv.parameters nie jest funkcją, ale tablicą obiektową, więc zmień () na []

parametry konw. (QUOTE_TYPE_ENTITY)

do

parametry konw. [QUOTE_TYPE_ENTITY]

Ostateczny kod podano poniżej:

„stosować ścisłe”;
 
const Funkcje = wymagają („funkcje bazy ogniowej”);
const {dialogflow} = wymagany ('Actions-on-google');
const WELCOME_INTENT = 'Domyślna intencja powitalna';
const FALLBACK_INTENT = 'Domyślne zamieszczenie awaryjne';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask („witamy w Dr.Motivation! Poproś o cytat o przyjaźni, romansie lub motywacji”);
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask („Przestań mamrotać i odezwać się”);
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motywacyjny") {
     conv.ask („Nie bądź leniwym dupkiem”);
     } else if (quote_type == "frienship") {
     conv.ask („Przyjaciele są terapeutami, z którymi możemy pić”);
     } else if (quote_type == "romantic") {
     conv.ask („coś romantycznego”);
     } else {
         conv.ask („odejdź od siebie i pracuj, zamiast ze mną rozmawiać”);
     }
});
export.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Krok 6: Wdróż i przetestuj:

Oczywiście nie może to być wersja ostateczna, jeśli musisz uczynić ją naprawdę dynamiczną, musisz połączyć ją z bazą danych, aby pobierać dane na podstawie danych wprowadzonych przez użytkownika.

W następnym rozdziale wykorzystamy magazyn danych w chmurze Google, który jest rodzajem bazy danych, aby pobierać z nich dane i podawać zapytania naszym użytkownikom.

Ta historia została opublikowana w The Startup, największej publikacji na temat przedsiębiorczości na średnim poziomie, a następnie 358 974 osób.

Zapisz się, aby otrzymywać nasze najlepsze historie tutaj.