Kapitola 10: Ako zostaviť domácu aplikáciu Google pomocou Plnenie prostredníctvom cloudových údajov

V tejto kapitole sa dozvieme, ako prepojiť datové úložisko google cloudu s množinou ponúk s rôznymi kategóriami a vytiahnuť ich na základe používateľských vstupov.

Obsah série:

Kapitola 6: Výukový program pre domáce aplikácie Google: Prehľad

Kapitola 7: Výukový program pre domáce aplikácie Google: Návrh konverzácie

Kapitola 8: Výukový program pre aplikáciu Google Home App: Nastavenie prostredia

Kapitola 9: Výukový program pre domáce aplikácie Google: Plnenie pomocou editora Inline

Kapitola 10: Výukový program pre domáce aplikácie Google: Plnenie prostredníctvom cloudového dátového skladu

Kapitola 11: Výukový program pre domáce aplikácie Google: Plnenie cez Webhook

Kapitola 12: Výukový program pre domáce aplikácie Google: Nasadenie aplikácií

Zhrnutie a s ktorou časťou celkového obrazu sa teraz zaoberáme:

Poďme pochopiť, čo je dátový sklad a ako sa líši prvý.

Čo je Google Cloud Datastore?

Google Cloud Datastore je databáza dokumentov NoSQL vytvorená pre automatické škálovanie, vysoký výkon a ľahký vývoj aplikácií.

Čo je databáza NoSQL?

Databáza NoSQL (pôvodne odkazujúca na „non SQL“ alebo „non relalation“) poskytuje mechanizmus na ukladanie a získavanie údajov, ktorý je modelovaný inými prostriedkami ako tabuľkovými vzťahmi používanými v relačných databázach.

Porovnanie s tradičnými databázami

Aj keď rozhranie Cloud Datastore má mnoho rovnakých funkcií ako tradičné databázy, ako databáza NoSQL sa od nich líši spôsobom, ktorý popisuje vzťahy medzi dátovými objektmi. Tu je porovnanie úrovne cloudových úložísk a relačných databáz na vysokej úrovni:

Na rozdiel od riadkov v relačnej databázovej tabuľke môžu mať entity Cloud Datastore toho istého druhu rôzne vlastnosti a rôzne entity môžu mať vlastnosti s rovnakým názvom, ale s rôznymi typmi hodnôt. Tieto jedinečné vlastnosti znamenajú odlišný spôsob navrhovania a správy údajov, aby sa využila možnosť automatickej mierky.

Dosť teórie, začnime.

Poďme teraz nastaviť náš dátový sklad

Krok 1: Prihláste sa do cloudovej konzoly Google:

Krok 2: Vyberte svoj projekt a kliknite na Datastore.

Krok 3: Vytvorenie entity

Pamätajte, že entita je iba položka (riadok). Druh (QuoteTable) je názov tabuľky. Ponechajte menný priestor ako predvolený.

Quote, QuoteID a QuoteType sú vlastnosti [stĺpce]. Uistite sa, že QuoteType a QuoteId sú indexované, pretože tieto vlastnosti použijeme na filtrovanie na základe vstupu používateľa.

Teraz, keď je základné úložisko údajov nastavené v nasledujúcej kapitole, uvidíme, ako z neho vytiahnuť údaje z našej cloudovej funkcie.

Vráťme sa k nášmu inline editoru.

Doteraz sme upravovali iba súbor index.js, ale toto cloudové dátové úložisko je závislosť, ktorá sa musí pridať do súboru package.json.

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

Späť na súbor index.js.

Spravím kód čo najjednoduchším, neočakávam štandardy kódovania :)

  1. inštanciu objektu
const Datastore = vyžadovať ('@ google-cloud / datastore');
// Okamžité sprístupnenie klienta údajov
const datastore = Datastore ();

2. Definujte dotazy

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

3. Spustite dotaz, zachytite návratový súbor JSON a vytlačte konkrétnu ponuku.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motivational") {
         return datastore.runQuery (query1) .then (results => {
            conv.ask (Výsledky [0] [1] .Quote);
        });
     } inak, ak (quote_type == "priateľstvo") {
        return datastore.runQuery (query2) .then (results => {
            conv.ask (Výsledky [0] [1] .Quote);
        });
     } inak, ak (quote_type == "romantický") {
     return datastore.runQuery (query3) .then (results => {
            conv.ask (Výsledky [0] [0] .Quote);
        });
     } else {
         conv.ask ("vystúpte zo zadku a namiesto práce so mnou pracujte");
     }
});

Zoberme si to a pochopíme to.

if (quote_type == "priateľstvo") {
        return datastore.runQuery (query2) .then (results => {
            conv.ask (Výsledky [0] [1] .Quote);
        });

Výsledkom je objekt JSON, ktorý má dve časti. Prvá časť obsahuje filtrované údaje a druhá časť obsahuje niektoré informácie. Ak tieto hodnoty vytlačíme a pozrieme si protokol firebase, nájdeme nižšie.

takže berieme prvý objekt a v rámci toho tvrdo kódujeme druhú ponuku, ktorá sa má zobrazovať po celú dobu, je to hovno programovanie, ale vždy môžete opakovať a zobraziť náhodnú ponuku.

4. Konečný kód v index.js

// Pozri https://github.com/dialogflow/dialogflow-fulfillment-nodejs
// pre dokumenty, ukážky a hlásenia problémov v knižnici Dialogflow
„použitie prísne“;
 
const function = vyžadovať ('funkcie firebase');
const {dialogflow} = vyžadovať ('actions-on-google');
const Datastore = vyžadovať ('@ google-cloud / datastore');
// Okamžité sprístupnenie klienta údajov
const datastore = Datastore ();
const WELCOME_INTENT = 'Predvolený uvítací zámer';
const FALLBACK_INTENT = 'Predvolený záložný zámer';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask („vitajte na Dr.Motivácii! Požiadajte o cenovú ponuku týkajúcu sa priateľstva alebo romantiky alebo motivácie“);
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask („Zastaviť mumlanie a hovoriť“);
});
const query1 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Motivational');
const query2 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', 'Friendship');
const query3 = datastore.createQuery ('QuoteTable'). filter ('QuoteType', '=', "Romantic");
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motivational") {
         return datastore.runQuery (query1) .then (results => {
            conv.ask (Výsledky [0] [1] .Quote);
        });
     } inak, ak (quote_type == "priateľstvo") {
        return datastore.runQuery (query2) .then (results => {
            conv.ask (Výsledky [0] [1] .Quote);
        });
     } inak, ak (quote_type == "romantický") {
     return datastore.runQuery (query3) .then (results => {
            conv.ask (Výsledky [0] [0] .Quote);
        });
     } else {
         conv.ask ("vystúpte zo zadku a namiesto práce so mnou pracujte");
     }
});
exporty.dialogflowFirebaseFulfillment = function.https.onRequest (app);

5. Nasadenie a testovanie

Super, tak čo sme tu urobili?

Namiesto tvrdých kódovacích úvodzoviek v kóde teraz sťahujeme cenové ponuky z úložiska cloudových údajov Google pomocou vloženého editora Fulfillment.

Nestačí to, že? Keď píšeme komplexné funkcie, možno budeme potrebovať lepšie ladenie a lepšiu kontrolu nad kódom a balíkmi, ktoré využívame. Je preto lepšie vytvoriť vývojové prostredie a začať tam hrať náš kód

V ďalšej kapitole si ukážeme, ako používať rozhranie príkazového riadku firebase a editor JS na presunutie vývoja do nášho lokálneho počítača a jeho nasadenie ako cloudovej funkcie a na to urobiť pomocou webhook.

Tento príbeh je publikovaný v The Startup, najväčšej podnikovej publikácii pre médiá, po ktorej nasleduje 358 974+ ľudí.

Prihláste sa na odber noviniek tu.