Poglavje 9: Kako sestaviti Google domačo aplikacijo z DialogFlow | Izpolnitev prek inline urejevalnika

Zdaj, ko smo postavili okolje, ustvarili potreben agent, namere in entiteto ter jih preizkusili. Pojdimo na modul izpolnjevanja, kjer bomo s pomočjo urejevalnika vdelali, da bomo ustvarili ustrezen odgovor na podlagi entitete (QuoteType)

Vsebina serije:

Poglavje 6: Tutorial Google Home App: Pregled

Poglavje 7: Tutorial Google Home App: Oblikovanje pogovorov

Poglavje 8: Vodič za Google Home App: Namestitev okolja

Poglavje 9: Vodič za Google Home App: Izpolnitev prek urejevalnika Inline

Poglavje 10: Vodič za Google Home App: Izpolnjevanje prek Cloud Datastore-ja

Poglavje 11: Tutorial Google Home App: Izpolnjevanje prek Webhook-a

Poglavje 12: Tutorial Google Home App: Uvajanje aplikacije

Povzemite in katerega dela velike slike se lotevamo zdaj.

1. korak: omogočite izpolnitev namere LookingForQuote.

2. korak: - Izpolnitev z inline urejevalnikom [Poganja ga oblačne funkcije za Firebase]

Odstranite vse iz inline urejevalnika. Poskusimo pisati iz nič naenkrat. Nič se ne bati, ostani z mano.

Tukaj gre. Prva vrstica.

'uporabljati strogo';

Stroga:

Namen "stroge uporabe" je navesti, da je treba kodo izvajati v "strogem načinu". S strogim načinom na primer ne morete uporabljati neprijavljenih spremenljivk.

Vsi sodobni brskalniki podpirajo "strogo uporabo", razen Internet Explorerja (IE) 9 in novejšega: Kdo vsekakor uporablja IE ... ne glede ...

ok, gremo naprej.

const funkcije = zahtevati ('firebase-funkcije');

Const v osnovi določa nekaj, česar se to v programu ne bo za vedno spremenilo. Tukaj bomo uvažali modul funkcij ognjene baze.

Potem še nekaj natečajev, od katerih bo vsak nameril. Ti nizi bi se morali ujemati z imenom namenov.

'uporabljati strogo';
const funkcije = zahtevati ('firebase-funkcije');
const {dialogflow} = zahtevati ('dejanja-v-googleu');
const WELCOME_INTENT = 'Privzeti namen dobrodošlice';
const FALLBACK_INTENT = 'Privzeti namen nadomestitve';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

Zdaj bomo shranili objekt dialog v aplikacijo const, ki se imenuje.

const app = dialog pretok ();

Nato bomo opredelili namere in sprožili predmet "conv", ki bo uporabljal funkcijo ask za pogovor z uporabnikom.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("dobrodošli v Dr.Motivation! Prosite za ponudbo o prijateljstvu ali romantiki ali motivaciji");
});

Ne pozabite omogočiti spletno klepetanje v razdelku o izpolnjevanju znotraj "privzetega namena dobrodošlice".

podobno bomo opredelili tudi druga dva namena. Ne skrbite, da bo to preprosto, saj je naš cilj, da to izpolnitev najprej izvedemo brez napak.

enega za rezervno namero

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Nehaj zmešati in govoriti");
});

enega za naš namen po meri

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Prijatelji so terapevti, lahko pijemo s");
});

končno bomo vrnili aplikacijo za pogovorni program pogovornega okna, ko se pokliče izpolnitev

export.dialogflowFirebaseFulfillment = funkcije.https.onRequest (aplikacija);

celotna koda izgleda tako

'uporabljati strogo';
 
const funkcije = zahtevati ('firebase-funkcije');
const {dialogflow} = zahtevati ('dejanja-v-googleu');
const WELCOME_INTENT = 'Privzeti namen dobrodošlice';
const FALLBACK_INTENT = 'Privzeti namen nadomestitve';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const app = dialog pretok ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("dobrodošli v Dr.Motivation! Prosite za ponudbo o prijateljstvu ali romantiki ali motivaciji");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Nehaj zmešati in govoriti");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Prijatelji so terapevti, lahko pijemo s");
});
export.dialogflowFirebaseFulfillment = funkcije.https.onRequest (aplikacija);

3. korak: namestite funkcijo

4. korak: preizkusite funkcijo

preglejte odgovor Izpolnitve s klikom na

Poskusimo privzeti nadomestni postopek, ne da bi omogočili izpolnitev prek spletnega koda in z njim.

Brez omogočenega Webhook-a:

Diagnostične informacije imajo v osnovi samo en odziv RAW API

Zdaj pa pojdimo naprej in omogočimo izpolnitev prek spletnega ključa za rezervno namero ... če tega še niste storili.

izhod:

zdaj, ko je omogočen klic v spletnem jeziku, smo deležni tudi odgovora.

5. korak: Dodaj kodo še več funkcionalnosti.

Ker dobimo QuoteType kot parameter, poskusimo uporabiti to v naši kodi s preprostimi stavki If if.

najprej določite entiteto QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

nato izvlecite vrednost parametra, ga shranite v spremenljivko… ga ujemite z vrednostmi in vsakič potisnite različne narekovaje.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quo_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase ();
     če (quote_type == "motivacijsko") {
     conv.ask ("Ne bodi len rit");
     } else if (quote_type == "frienship") {
     conv.ask ("Prijatelji so terapevti, lahko pijemo s");
     } else if (quote_type == "romantično") {
     conv.ask ("nekaj romantičnega");
     } else {
         conv.ask ("spusti se v rit in delaj, namesto da se pogovarjaš z mano");
     }
});

Preizkusite:

Prav tako si lahko ogledate konzolo ognjene baze glede dnevnikov napak.

pojdite na svojo konzolo za ogenj .. ali v inline urejevalniku kliknite povezavo

ok..so konv.parametri niso funkcija, ampak objektna matrika, zato spremenite () v []

konv. parametri (QUOTE_TYPE_ENTITY)

do

konv. parametri [QUOTE_TYPE_ENTITY]

Končna koda je navedena spodaj:

'uporabljati strogo';
 
const funkcije = zahtevati ('firebase-funkcije');
const {dialogflow} = zahtevati ('dejanja-v-googleu');
const WELCOME_INTENT = 'Privzeti namen dobrodošlice';
const FALLBACK_INTENT = 'Privzeti namen nadomestitve';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialog pretok ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("dobrodošli v Dr.Motivation! Prosite za ponudbo o prijateljstvu ali romantiki ali motivaciji");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Nehaj zmešati in govoriti");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quo_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     če (quote_type == "motivacijsko") {
     conv.ask ("Ne bodi len rit");
     } else if (quote_type == "frienship") {
     conv.ask ("Prijatelji so terapevti, lahko pijemo s");
     } else if (quote_type == "romantično") {
     conv.ask ("nekaj romantičnega");
     } else {
         conv.ask ("spusti se v rit in delaj, namesto da se pogovarjaš z mano");
     }
});
export.dialogflowFirebaseFulfillment = funkcije.https.onRequest (aplikacija);

6. korak: namestitev in preizkus:

Očitno to ne more biti končna različica, če moraš biti resnično dinamičen, ga moraš povezati z bazo podatkov, da potegne podatke na podlagi uporabnikovega vnosa.

V naslednjem poglavju bomo uporabili Googlovo podatkovno shrambo v oblaku, ki je vrsta baze podatkov, da iz njih potegnemo podatke in uporabnikom ponudimo ponudbe.

Ta zgodba je objavljena v največji podjetniški publikaciji The Startup, ki ji sledi 358.974+ ljudi.

Naročite se za prejem naših vrhunskih zgodb tukaj.