Capitolo 9: Come creare un'app Google Home con DialogFlow | Adempimento tramite Inline Editor

Ora che abbiamo impostato l'ambiente, creato l'agente, gli intenti e l'entità necessari e li abbiamo testati. Passiamo al modulo di evasione in cui utilizzeremo l'editor in linea per creare una risposta pertinente basata sull'entità (QuoteType)

Contenuto della serie:

Capitolo 6: Tutorial dell'app Google Home: panoramica

Capitolo 7: Tutorial dell'app Google Home: Progettazione della conversazione

Capitolo 8: Tutorial dell'app Google Home: configurazione dell'ambiente

Capitolo 9: Tutorial dell'app Google Home: Realizzazione tramite Inline Editor

Capitolo 10: Tutorial dell'app Google Home: realizzazione tramite Cloud Datastore

Capitolo 11: Tutorial dell'app Google Home: realizzazione tramite Webhook

Capitolo 12: Tutorial dell'app Google Home: Distribuzione dell'app

Ricapitolando e quale parte del quadro generale stiamo affrontando ora.

Passaggio 1: abilitare Adempimento per l'intento LookingForQuote.

Passaggio 2: - Realizzazione tramite editor inline [Powered by Cloud funzioni per Firebase]

Rimuovi tutto all'interno dell'editor in linea. Proviamo a scrivere da zero una riga alla volta. Niente di cui aver paura, resta con me.

Ecco qui. La prima riga.

'usa rigoroso';

Rigoroso:

Lo scopo di "Usa rigoroso" è di indicare che il codice deve essere eseguito in "Modalità rigorosa". Con la modalità rigorosa, ad esempio, non è possibile utilizzare variabili non dichiarate.

Tutti i browser moderni supportano "usa rigoroso" tranne Internet Explorer (IE) 9 e versioni precedenti: chi utilizza IE comunque ... a meno che ...

ok andiamo avanti.

const funzioni = require ('firebase-Functions');

Const in sostanza definisce qualcosa che questo non cambierà per sempre nel programma. Importeremo qui il modulo delle funzioni di firebase.

Quindi qualche altro passo ciascuno dei quali terrà i nostri intenti. Queste stringhe dovrebbero corrispondere al nome degli intenti.

'usa rigoroso';
const funzioni = require ('firebase-Functions');
const {dialogflow} = request ('actions-on-google');
const WELCOME_INTENT = 'Intento di benvenuto predefinito';
const FALLBACK_INTENT = 'Intento di fallback predefinito';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

...

Ora memorizzeremo l'oggetto dialogflow in una const chiamata app.

const app = dialogflow ();

Successivamente, definiremo gli intenti e creeremo un'istanza di un oggetto "conv" che utilizzerà la funzione ask per parlare con l'utente.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("benvenuto in Dr.Motivation! Richiedi un preventivo su amicizia, romanticismo o motivazione");
});

Ricorda di abilitare il webhook nella sezione relativa agli "intenti di benvenuto predefiniti".

allo stesso modo definiremo anche gli altri due intenti ... non ti preoccupare che questo sia semplice, poiché il nostro obiettivo è far sì che questo adempimento venga eseguito senza errori prima.

uno per intento di fallback

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Smetti di borbottare e parla");
});

uno per il nostro intento personalizzato

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Gli amici sono terapisti, possiamo bere con");
});

infine restituiremo l'app dell'oggetto dialogflow quando viene chiamato l'adempimento

exports.dialogflowFirebaseFulfillment = Functions.https.onRequest (app);

il codice completo è simile al seguente

'usa rigoroso';
 
const funzioni = require ('firebase-Functions');
const {dialogflow} = request ('actions-on-google');
const WELCOME_INTENT = 'Intento di benvenuto predefinito';
const FALLBACK_INTENT = 'Intento di fallback predefinito';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("benvenuto in Dr.Motivation! Richiedi un preventivo su amicizia, romanticismo o motivazione");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Smetti di borbottare e parla");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Gli amici sono terapisti, possiamo bere con");
});
exports.dialogflowFirebaseFulfillment = Functions.https.onRequest (app);

Passaggio 3: distribuire la funzione

Passaggio 4: testare la funzione

controlla la risposta di Realizzazione facendo clic su

Proviamo il fallback predefinito senza abilitare la realizzazione tramite webhook e con esso.

Senza Webhook abilitato:

Le informazioni di diagnostica hanno sostanzialmente una sola risposta API RAW

Ora, andiamo avanti e abilitiamo la realizzazione tramite webhook per l'intento di fallback ... se non l'hai già fatto.

produzione:

ora che la chiamata webhook è abilitata stiamo ottenendo anche una risposta di adempimento.

Passaggio 5: aggiungiamo più funzionalità al codice.

Poiché stiamo ottenendo QuoteType come parametro, proviamo a utilizzarlo nel nostro codice tramite semplici istruzioni If else.

prima definire l'entità QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

quindi estrarre il valore del parametro, memorizzarlo in una variabile ... abbinarlo ai valori e inviare virgolette diverse ogni volta.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase ();
     if (quote_type == "motivazionale") {
     conv.ask ("Non essere un coglione");
     } else if (quote_type == "frienship") {
     conv.ask ("Gli amici sono terapisti, possiamo bere con");
     } else if (quote_type == "romantico") {
     conv.ask ("qualcosa di romantico");
     } altro {
         conv.ask ("togliti dal culo e lavora invece di parlarmi");
     }
});

Provalo:

Puoi anche controllare la console di firebase per i log degli errori.

vai alla tua console Fire Base oppure, sotto l'editor in linea, fai clic sul link

ok..so conv.parameters non è una funzione ma una matrice di oggetti, quindi change () in []

conv.parameters (QUOTE_TYPE_ENTITY)

per

conv.parameters [QUOTE_TYPE_ENTITY]

Il codice finale è riportato di seguito:

'usa rigoroso';
 
const funzioni = require ('firebase-Functions');
const {dialogflow} = request ('actions-on-google');
const WELCOME_INTENT = 'Intento di benvenuto predefinito';
const FALLBACK_INTENT = 'Intento di fallback predefinito';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("benvenuto in Dr.Motivation! Richiedi un preventivo su amicizia, romanticismo o motivazione");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Smetti di borbottare e parla");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motivazionale") {
     conv.ask ("Non essere un coglione");
     } else if (quote_type == "frienship") {
     conv.ask ("Gli amici sono terapisti, possiamo bere con");
     } else if (quote_type == "romantico") {
     conv.ask ("qualcosa di romantico");
     } altro {
         conv.ask ("togliti dal culo e lavora, invece di parlarmi");
     }
});
exports.dialogflowFirebaseFulfillment = Functions.https.onRequest (app);

Passaggio 6: distribuzione e test:

Ovviamente, questa non può essere la versione finale, se devi renderla davvero dinamica devi collegarla a un database per estrarre i dati in base all'input dell'utente.

Nel prossimo capitolo, useremo il datastore cloud di Google, che è un tipo di database per estrarre i dati da loro e fornire preventivi ai nostri utenti.

Questa storia è pubblicata in The Startup, la più grande pubblicazione sull'imprenditoria di Medium seguita da oltre 358.974 persone.

Iscriviti per ricevere le nostre storie migliori qui.