Capítol 9: Creació d'una aplicació Google Home amb DialogFlow | Compliment mitjançant editor en línia

Ara que hem creat l'entorn, hem creat i provat els agents, les intencions i les entitats necessàries. Passem al mòdul Fulfillment on fem servir l'editor en línia per crear una resposta rellevant basada en l'entitat (Tipus de pressupost).

Contingut de la sèrie:

Capítol 6: Tutorial de l'aplicació Google Home: visió general

Capítol 7: Tutorial de l'aplicació Google Home: disseny de converses

Capítol 8: Tutorial de l'aplicació Google Home: configuració del vostre entorn

Capítol 9: Tutorial de l'aplicació Google Home: compliment mitjançant Inline Editor

Capítol 10: Tutorial de l'aplicació Google Home: compliment mitjançant emmagatzematge de dades al núvol

Capítol 11: Tutorial de l'aplicació Google Home: compliment mitjançant Webhook

Capítol 12: Tutorial d'aplicacions de Google Home: desplegament d'aplicacions

Feu un resum i quina part del panorama general ens ocupem actualment.

Pas 1: activeu el compliment per a la intenció de LookingForQuote.

Pas 2: - Compliment mitjançant un editor en línia [impulsat per funcions del núvol per a Firebase]

Elimineu tot de l'editor en línia. Intentem escriure línia per línia des de zero. Res de què tenir por, quedi amb mi.

Aquí va. La primera línia.

"utilitzar estrictament";

Estricte:

El propòsit d '"utilitzar estrictament" és indicar que el codi s'ha d'executar en "mode estricte". Per exemple, en mode estricte no podeu utilitzar variables no declarades.

Tots els navegadors moderns admeten "ús estricte" a excepció d'Internet Explorer (IE) 9 i versions posteriors: qui utilitza IE de totes maneres?

D'acord, endavant.

funcions const = require ('firebase-functions');

Const bàsicament defineix alguna cosa que no canviarà per sempre al programa. Aquí importarem el mòdul de funcions de firebase.

Després, algunes constants més, cadascuna de les quals mantindrà les nostres intencions. Aquestes cadenes haurien de coincidir amb el nom de la intenció.

"utilitzar estrictament"; funcions const = require ('firebase-functions'); const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intenció de benvinguda per defecte'; const FALLBACK_INTENT = 'Intenció de reserva predeterminada'; const LOOKING_FOR_QUOTE_INTENT = 'MirantPerCita';

...

Ara emmagatzemem l'objecte de flux de diàleg en una constant anomenada aplicació.

const app = dialogflow ();

A continuació, definirem la intenció i instanciarem un objecte "conv" que utilitzarà la funció demana per parlar amb l'usuari.

app.intent (WELCOME_INTENT, (conv) => {conv.ask ("Benvingut a Dr.Motivation! Demaneu un pressupost sobre amistat, romanç o motivació");});

Recordeu que heu d’activar el webhook a la secció Compliance a Intent de salutació predeterminat.

De la mateixa manera, definirem també les altres dues intencions. No us preocupeu que això sigui fàcil, ja que el nostre objectiu és aconseguir que aquest compliment es faci sense errors al principi.

una per a intenció alternativa

app.intent (FALLBACK_INTENT, (conv) => {conv.ask ("Deixa de murmurar i parlar");});

un per al nostre propòsit personalitzat

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {conv.ask ("Els amics són terapeutes amb qui podem beure");});

Finalment, tornarem l’aplicació d’objectes de flux de diàleg quan es cridi el compliment

exportacions.dialogflowFirebaseFulfillment = functions.https.onRequest (aplicació);

El codi complet té aquest aspecte

"utilitzar estrictament"; funcions const = require ('firebase-functions'); const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intenció de benvinguda per defecte'; const FALLBACK_INTENT = 'Intenció de reserva predeterminada'; const LOOKING_FOR_QUOTE_INTENT = 'MirantPerCita';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {conv.ask ("Benvingut a Dr.Motivation! Demaneu un pressupost sobre amistat, romanç o motivació");});
app.intent (FALLBACK_INTENT, (conv) => {conv.ask ("Deixa de murmurar i parlar");});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {conv.ask ("Els amics són terapeutes amb qui podem beure");});
exportacions.dialogflowFirebaseFulfillment = functions.https.onRequest (aplicació);

Pas 3: desplegueu la funció

Pas 4: proveu la funció

Feu clic a

Provem la alternativa alternativa sense activar el compliment mitjançant el webhook i així.

Activat sense webhook:

La informació de diagnòstic bàsicament només té una resposta de l'API RAW

Ara activem el compliment de webhook per a la intenció alternativa, si encara no ho heu fet.

Sortida:

Ara que la trucada de webhook està activada, també obtindrem una resposta de compliment.

Pas 5: afegiu més funcions al codi.

Com que rebem QuoteType com a paràmetre, ho fem servir al nostre codi mitjançant sentències If else simples.

En primer lloc, definiu l'entitat QuoteType

const QUOTE_TYPE_ENTITY = 'Tipus de pressupost';

A continuació, extreu el valor del paràmetre i deseu-lo en una variable. Assigneu-lo als valors i introduïu cometes diferents cada vegada.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {const quote_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase (); if (quote_type == "motivacional") {conv.ask ("No siguis un cul mandrós");} altra cosa if (quote_type == "amistat") {conv.ask ("Els amics són terapeutes amb els quals podem beure");} else if (quote_type == "romantic") {conv.ask ("something romantic");} else {conv.ask ("Baixeu-vos del bum and work en lloc de parlar amb mi");}});

Intenta-ho:

També podeu cercar registres d’errors a la consola de Firebase.

Aneu a la consola Fire Base o feu clic a l'enllaç de l'editor en línia

ok .. així que conv.parameters no és una funció, sinó una matriu d'objectes, així que canvieu () a []

Paràmetres de conv. (QUOTE_TYPE_ENTITY)

a

paràmetres de conv. [QUOTE_TYPE_ENTITY]

A continuació es dóna el codi final:

"utilitzar estrictament"; funcions const = require ('firebase-functions'); const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intenció de benvinguda per defecte'; const FALLBACK_INTENT = 'Intenció de reserva predeterminada'; const LOOKING_FOR_QUOTE_INTENT = 'MirantPerCita'; const QUOTE_TYPE_ENTITY = 'Tipus de pressupost';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {conv.ask ("Benvingut a Dr.Motivation! Demaneu un pressupost sobre amistat, romanç o motivació");});
app.intent (FALLBACK_INTENT, (conv) => {conv.ask ("Deixa de murmurar i parlar");});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase (); if (quote_type == "motivacional") {conv.ask ("No siguis un cul mandrós");} altra cosa if (quote_type == "amistat") {conv.ask ("Els amics són terapeutes amb els quals podem beure");} else if (quote_type == "romantic") {conv.ask ("something romantic");} else {conv.ask ("Baixeu i treballeu en lloc de parlar-me");}});
exportacions.dialogflowFirebaseFulfillment = functions.https.onRequest (aplicació);

Pas 6: desplegament i prova:

Per descomptat, aquesta no pot ser la versió final. Si realment voleu fer-lo dinàmic, heu de connectar-lo a una base de dades per obtenir dades en funció de l’entrada de l’usuari.

Al següent capítol utilitzarem el magatzem de dades al núvol de Google, que és una mena de base de dades, per extreure’n dades i oferir ofertes als nostres usuaris.

Aquesta història va aparèixer a The Startup, la publicació empresarial més gran de Medium, seguida de més de 358.974 persones.

Subscriviu-vos a les nostres notícies més destacades aquí.