Poglavlje 10: Kako izraditi Google početnu aplikaciju s DialogFlow | Ispunjavanje putem Cloud Datastore-a

U ovom ćemo poglavlju vidjeti kako povezati podatkovnu trgovinu google oblaka kako bi imali skup navodnika s različitim kategorijama i povukli ih na temelju korisničkih unosa.

Sadržaj serije:

Poglavlje 6: Vodič za Google početnu aplikaciju: pregled

Poglavlje 7: Vodič za Google početnu aplikaciju: Dizajn razgovora

Poglavlje 8: Vodič za Google početnu aplikaciju: Postavljanje okoliša

Poglavlje 9: Vodič za Google Home App: Ispunjenje putem Inline Editora

Poglavlje 10: Vodič za Google Home App: Ispunjenje putem Cloud Datastore-a

Poglavlje 11: Vodič za Google početnu aplikaciju: Ispunjenje putem Webhooka

Poglavlje 12: Vodič za Google početnu aplikaciju: Uvođenje aplikacije

Sažetak i koji je dio velike slike kojom se bavimo sada:

Shvatimo što je baza podataka i kako se prvo razlikuje.

Što je Google Cloud Datastore?

Google Cloud Datastore je baza podataka NoSQL dokumenata izgrađena za automatsko skaliranje, visoke performanse i jednostavnost razvoja aplikacija.

Što je NoSQL baza podataka?

NoSQL (izvorno se odnosi na „ne SQL“ ili „ne relacijska“) baza podataka pruža mehanizam za pohranu i dohvaćanje podataka koji se modeliraju na drugačiji način od tabelarnih odnosa koji se koriste u relacijskim bazama podataka.

Usporedba s tradicionalnim bazama podataka

Iako sučelje Cloud Datastore ima mnogo istih značajki kao i tradicionalne baze podataka, noSQL baza podataka razlikuje se od njih u načinu na koji opisuje odnose između podataka podataka. Evo usporedbe na visokoj razini Cloud Datastore i relacijskih baza podataka:

Za razliku od redaka u tablici relacijske baze podataka, Cloud Datastore entiteti iste vrste mogu imati različita svojstva, a različiti entiteti mogu imati svojstva s istim nazivom, ali različite vrste vrijednosti. Ove jedinstvene karakteristike podrazumijevaju drugačiji način dizajniranja i upravljanja podacima kako bi se iskoristila mogućnost automatskog skaliranja.

Dovoljno s teorijom, započnimo.

Postavimo našu prodavaonicu podataka sada

1. korak: prijavite se na svoju Google oblačnu konzolu:

2. korak: Odaberite svoj projekt i kliknite na Datastore.

Korak 3: Stvorite entitet

Zapamtite entitet je samo stavka (redak). Vrsta (QuoteTable) je naziv tablice. Ostavite prostor imena kao zadanog.

Quote, QuoteID i QuoteType su svojstva [stupci]. Provjerite jesu li QuoteType i QuoteId indeksirani jer ćemo upotrebljavati ta svojstva za filtriranje na temelju korisničkog unosa.

Sad kad je postavljeno osnovno spremište podataka, u sljedećem ćemo poglavlju vidjeti kako izvući podatke iz ove funkcije u oblaku.

Vratimo se našem rednom uređivaču.

Do sada smo uređivali samo datoteku index.js, no ta je podatkovna trgovina u oblaku ovisnost koja se mora dodati datoteci package.json.

"@ google-cloud / datastore": "1.1.0"

Natrag na datoteku index.js.

Napravit ću kôd što je jednostavnije, ne očekujte standarde kodiranja :)

  1. instancirati objekt
const Datastore = zahtjev ('@ google-cloud / datastore');
// Instantirate klijent klijenta
const datastore = Datastore ();

2. Definirajte upite

const query1 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Motivational');
const query2 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Prijateljstvo');
const query3 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', "Romantic");

3. Pokrenite upit, snimite povratnu JSON datoteku i ispišite određeni citat.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     ako je (quote_type == "motivacijski") {
         vratiti datastore.runQuery (upit1) .then (rezultati => {
            conv.ask (rezultati [0] [1] .Quote);
        });
     } else if (quote_type == "prijateljstvo") {
        vratiti datastore.runQuery (upit2) .then (rezultati => {
            conv.ask (rezultati [0] [1] .Quote);
        });
     } else if (quote_type == "romantična") {
     vratiti datastore.runQuery (upit3) .then (rezultati => {
            conv.ask (rezultati [0] [0] .Quote);
        });
     } else {
         conv.ask ("skinite se s dupeta i radite umjesto da razgovarate sa mnom");
     }
});

Uzmimo jedan dio ovoga i shvatimo.

ako (quote_type == "prijateljstvo") {
        vratiti datastore.runQuery (upit2) .then (rezultati => {
            conv.ask (rezultati [0] [1] .Quote);
        });

Rezultati su JSON objekt koji ima dva dijela. Prvi dio sadrži filtrirane podatke, a drugi dio neke informacije. Ako ispisujemo ove vrijednosti i vidimo zapisnik vatrogasne baze, naći ćemo dolje.

pa uzmemo prvi objekt i unutar toga je teško kodiranje drugog citata koji će se prikazivati ​​cijelo vrijeme, ovo je usrano programiranje, ali uvijek možete petlju i pokazati slučajni citat.

4. Završni kod unutar index.js

// Pogledajte https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// za dokumente, uzorke i izvješćivanje o problemima knjižnice izvršavanja Dialogflowa
'koristiti strogi';
 
const funkcije = zahtijevaju ('firebase-funkcije');
const {dialogflow} = zahtjev ('akcije-na-googleu');
const Datastore = zahtjev ('@ google-cloud / datastore');
// Instantirate klijent klijenta
const datastore = Datastore ();
const WELCOME_INTENT = 'Zadana namjera dobrodošlice';
const FALLBACK_INTENT = 'Zadana povratna namjera';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("dobrodošli u Dr.Motivation! Zatražite citat o prijateljstvu ili romantiki ili motivaciji");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Prestani mrmljati i govori gore");
});
const query1 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Motivational');
const query2 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Prijateljstvo');
const query3 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', "Romantic");
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     ako je (quote_type == "motivacijski") {
         vratiti datastore.runQuery (upit1) .then (rezultati => {
            conv.ask (rezultati [0] [1] .Quote);
        });
     } else if (quote_type == "prijateljstvo") {
        vratiti datastore.runQuery (upit2) .then (rezultati => {
            conv.ask (rezultati [0] [1] .Quote);
        });
     } else if (quote_type == "romantična") {
     vratiti datastore.runQuery (upit3) .then (rezultati => {
            conv.ask (rezultati [0] [0] .Quote);
        });
     } else {
         conv.ask ("skinite se s dupeta i radite umjesto da razgovarate sa mnom");
     }
});
export.dialogflowFirebaseFulfillment = funkcije.https.onRequest (aplikacija);

5. Uvesti i testirati

Super, pa što smo ovdje radili?

Umjesto tvrdog citata unutar koda, sada izvlačimo citate iz Googleove trgovine podataka podataka u oblaku pomoću ugrađenog uređivača Izvršavanja.

Pa, to nije dovoljno, zar ne? Kad pišemo složene funkcije, možda će nam trebati ispravljanje pogrešaka i bolja kontrola nad kodom i paketima koje koristimo. Tako da je bolje postaviti razvojno okruženje i započeti tinkrotirati naš kod tamo

U sljedećem ćemo poglavlju vidjeti kako pomoću sučelja naredbenog retka firebase i JS uređivača premjestiti razvoj na naš lokalni stroj i rasporediti ga kao funkciju oblaka i koristiti webhook za to.

Ova priča objavljena je u najvećoj poduzetničkoj publikaciji The Startup, koju prati 358,974 i više ljudi.

Pretplatite se za primanje naših najboljih priča ovdje.