1. Introduzione
In questo lab creerai un'azione semplice utilizzando Dialogflow e imparerai a integrarla con l'Assistente Google.
L'ordine degli esercizi rispecchia un'esperienza di sviluppo cloud comune:
- Crea un agente Dialogflow v2
- Crea entità
- Crea intent
- Configura un webhook con Cloud Functions di Google Cloud
- Utilizza la knowledge base per importare le domande frequenti
- Testa il chatbot
- Attivare l'integrazione dell'Assistente Google
Cosa creerai
Creeremo un'app Assistente Google per il gruppo di Meetup Women in Voice. Potrai chiedere quando sarà il prossimo Meetup, articoli e per prenotare suggerimenti o domande generali sul gruppo del meetup. |
Cosa imparerai a fare
- Creare un chatbot con Dialogflow v2
- Come creare una conversazione lineare con Dialogflow
- Come utilizzare le entità
- Come utilizzare la knowledge base
- Come configurare i fulfillment webhook con Dialogflow e le funzioni Google Cloud
- Come portare la tua applicazione nell'Assistente Google con Actions on Google
Prerequisiti
- Per creare un agente Dialogflow, avrai bisogno di un indirizzo Gmail o di identità Google.
- Ti forniremo crediti cloud di Google Cloud per l'utilizzo di Google Cloud Cloud Functions
- Per recuperare i dati dell'agente, dovrai accedere a questo foglio Google pubblico.
- Aprilo in una nuova scheda: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
- Non è necessaria una conoscenza di base di JavaScript, ma può essere utile se vuoi modificare il codice di fulfillment webhook.
2. Preparazione
Attivare l'Attività web nel browser
- Fai clic su: http://myaccount.google.com/activitycontrols
- Assicurati che Web & L'impostazione Attività nelle app è attivata:
Crea un agente Dialogflow
- Nella barra a sinistra, proprio sotto il logo, seleziona "Create New Agent" (Crea nuovo agente). Se esistono già agenti, fai prima clic sul menu a discesa.
- Specifica il nome di un agente:
yourname-wiv
(utilizza il tuo nome) - Come lingua predefinita scegli: Italiano - en.
- Come fuso orario predefinito, scegli il fuso orario più vicino a te.
- Non selezionare Mega Agent. (Con questa funzionalità puoi creare un agente generale in grado di orchestrare gli agenti "sub". Al momento non è più necessario.)
- Fai clic su Crea
Configurare Dialogflow
- Fai clic sull'icona dell'ingranaggio nel menu a sinistra, accanto al nome del progetto.
- Inserisci la seguente descrizione dell'agente: Women in Voice agent
- Scorri verso il basso fino a Funzionalità beta e premi l'opzione per attivarle.
- Scorri verso il basso fino a Impostazioni log e attiva entrambe le opzioni per registrare le interazioni di Dialogflow e registrare tutte le interazioni in Google Cloud Stackdriver. Ne avremo bisogno in un secondo momento, nel caso in cui volessimo eseguire il debug della nostra azione.
- Fai clic su Salva.
- Fai clic su Fine.
Configurare Actions on Google
- Fai clic sul link Assistente Google nella sezione Scopri come funziona nell'Assistente Google nel riquadro a destra.
Si aprirà: http://console.actions.google.com
NOTA: assicurati di aver eseguito l'accesso con lo stesso Account Google di Dialogflow.
Se non hai mai utilizzato Actions on Google, dovrai prima compilare questo modulo:
- Prova ad aprire l'azione nel simulatore** facendo clic sul nome del progetto.**
- Seleziona Sviluppo nella barra dei menu.
Deseleziona Utilizza l'impostazione della lingua dell'utente. Per assicurarti che il sintetizzatore vocale non venga sostituito dalla lingua predefinita dell'assistente.
- Fai clic su Salva.
- Seleziona Verifica nella barra dei menu.
- Assicurati che il simulatore sia impostato su Inglese e fai clic su Parla con la mia app di prova.
L'azione ti accoglierà, con l'intent predefinito di Dialogflow. Ciò significa che la configurazione dell'integrazione con Action on Google ha funzionato.
Configurare Google Cloud
Per questo tutorial è necessario un account Google Cloud con un account di fatturazione. Se non ne hai ancora uno, puoi crearlo seguendo questi passaggi.
Generalmente un account di fatturazione richiede un metodo di pagamento come una carta di credito. Per questo workshop, possiamo utilizzare i crediti del workshop che possono saltare questo processo.
- Vai a questo URL ed esegui l'accesso
- Fai clic: Fai clic qui e accedi ai tuoi crediti
- Fai clic su Accetta e Continua
È tutto pronto. Hai creato un account di fatturazione con 25 $, il che dovrebbe essere più che sufficiente per utilizzare Cloud Functions per molto tempo.
Abilitare l'API Fogli Google
Se il tuo agente ha bisogno di più di risposte di intent statiche (ad esempio per recuperare i dati da un servizio web, un database o un foglio), devi utilizzare fulfillment per connettere il tuo servizio web all'agente. La connessione del servizio web ti consente di eseguire azioni basate sulle espressioni dell'utente e di inviare risposte dinamiche all'utente.
Ad esempio, se un utente desidera ricevere un suggerimento su un blog o un libro, il tuo servizio web può controllare il tuo database e rispondere con un articolo da leggere.
In questo tutorial non utilizzeremo un database, ma un foglio Google. Una volta aggiornato il foglio, verrà aggiornata anche l'azione dell'Assistente Google. Perfetto!
- Se non l'hai ancora fatto, apri questo foglio Google in una nuova scheda del browser:
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- IMPORTANTE: crea una copia di questo foglio. Fai clic su File > Crea una copia
- Una volta copiato il foglio, fai clic su Condividi.
- Dovremo concedere i diritti di modifica all'account di servizio Dialogflow. A questo scopo, apri Dialogflow > Impostazioni (ingranaggio).
- Scorri verso il basso fino a Progetto Google.
- Copia l'indirizzo dell'account di servizio (email). Dovrebbe avere un aspetto simile a questo: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- Incolla questo account di servizio nel popup Condividi di Fogli Google e assegnagli i diritti di modifica.
- Ora dobbiamo ricordare l'ID del foglio su cui stiamo lavorando.
The Sheets URL will look something like this:
https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448
But we are only interested in the Sheet id, which is the part between:
https://docs.google.com/spreadsheets/d/ e /edit#gid=1240329448 (senza le barre).
So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**
**Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
- Apri in un'altra scheda del browser; http://console.cloud.google.com. Se hai altri progetti Google Cloud, attiva il nuovo progetto Dialogflow: yourname-wiv. - Nella barra di ricerca, cerca API Google Fogli.
- Fai clic qui,quindi sul pulsante Abilita API Fogli Google in alto.
3. Entità personalizzate
Le entità sono oggetti su cui l'app o il dispositivo esegue azioni. Considerali come parametri / variabili. Nel corso della nostra azione, ti chiederemo:
"Voglio un suggerimento per leggere
chatbot
/ Voglio un suggerimento da leggere su
voice*"*
Che tu dica Chatbot, Voice o Entrambi, questi dati verranno raccolti da un'entità personalizzata che verrà utilizzata come parametro nella mia richiesta a un servizio web.
Ecco maggiori informazioni sulle entità Dialogflow.
Creazione dell'entità del canale
- Fai clic nella console di Dialogflow sulla voce di menu: Entities.
- Fai clic su Crea entità.
- Nome entità:
tech
(assicurati che sia tutto minuscolo) - Specifica le opzioni con i sinonimi. Puoi spostarti all'interno dell'interfaccia con il tasto Tab.
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.** Passa alla modalità **Raw Edit** (Modifica non elaborata) facendo clic sul pulsante del menu accanto al pulsante blu di salvataggio.
- Tieni presente che potresti aver inserito anche tutte le entità in formato CSV. Questo può essere utile quando devi creare molte entità.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- Fai clic su Salva.
4. Intent
Dialogflow utilizza gli intent per classificare le intenzioni di un utente. Gli intent contengono frasi di addestramento, che sono esempi di ciò che un utente potrebbe dire all'agente.
Ad esempio, un utente che vuole sapere chi vuole sapere quando si terrà il prossimo evento potrebbe chiedere:
"Quand'è il prossimo Meetup?"
Quando un utente scrive o dice qualcosa, noto come espressione utente, Dialogflow associa l'espressione utente all'intento migliore nel tuo agente. La corrispondenza di un intent è nota anche come classificazione dell'intent.
Ecco ulteriori informazioni sugli intent Dialogflow.
Modifica dell'intent di benvenuto predefinito
Quando crei un nuovo agente Dialogflow, vengono creati automaticamente due intent predefiniti. L'intent di benvenuto predefinito è il primo flusso a cui accedi quando inizi una conversazione con l'agente. L'intent di riserva predefinito è il flusso che segui quando l'agente non è in grado di capirti o non riesce ad associare un intent a ciò che hai appena detto.
- Fai clic su Intent > Intent di benvenuto predefinito
Nel caso dell'Assistente Google, l'intent di benvenuto predefinito si avvierà automaticamente. Questo perché Dialogflow è in ascolto dell'evento di benvenuto. Tuttavia, puoi anche richiamare l'intent dicendo una delle frasi di addestramento inserite.
Ecco il messaggio di benvenuto per l'intent di benvenuto predefinito:
Utente | Agente |
"Hey Google, parla con <tuonome>-WIV" | "Ciao, sono Anna, l'agente virtuale di Women in Voice." Puoi chiedermi informazioni sui meetup, su Women in Voice o su un suggerimento sulla lettura. "Cosa vuoi sapere?" |
- Scorri verso il basso fino a Risposte.
- Cancella tutte le risposte testuali.
- Nella scheda predefinita, crea le tre risposte seguenti. Fai clic su Aggiungi risposte > Testo o Risposta SSML, per ogni nuova riga:
- Ciao, sono Anna, l'agente virtuale di Women in Voice.
- Puoi chiedermi informazioni sui meetup, su Women in Voice o su un suggerimento sulla lettura.
- Che cosa vorresti sapere?
La configurazione dovrebbe essere simile a quella in questo screenshot.
- L'output precedente viene utilizzato per i chatbot, pertanto possiamo modificarlo un po', in particolare per l'Assistente Google. Utilizzeremo il linguaggio SSML (Speech Synthesis Markup Language) per inserire le pause nelle frasi. Fai clic sulla scheda Assistente Google.
- Non abilitare l'opzione di attivazione/disattivazione predefinita, in quanto il messaggio del chatbot non verrà riutilizzato.
- Fai clic su Aggiungi risposte > Risposta semplice
- Aggiungi la seguente versione di testo:
Hey there, I'm Anna, the virtual agent of Women in Voice.
You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?
- Quindi, fai clic su Personalizza l'uscita audio.
- Aggiungi la seguente versione SSML:
<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>
You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s>
What would you like to know?</s></p></speak>
La configurazione dovrebbe essere simile a quella in questo screenshot.
- Fai clic su Salva.
Qui puoi trovare ulteriori informazioni su SSML per Actions on Google.
- Proviamo questo intent. Per prima cosa possiamo testarlo nel Simulatore di Dialogflow.
Digita: Hello. Dovrebbe essere restituito questo messaggio.
- Ora torna alla console Actions on Google.
Ti consigliamo di conservarla in un'altra scheda.
Fai clic su: "Parla con la mia app di prova". E ascolta il nuovo messaggio di benvenuto.
Modifica dell'intent di riserva predefinito
- Fai clic su Intent > Intent di fallback predefinito
- Scorri verso il basso fino a Risposte.
- Cancella tutte le risposte testuali.
- Nella scheda predefinita, crea le seguenti risposte, ognuna su una nuova riga, in modo che le opzioni vengano alterne:
Sorry, can you repeat this?
I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.
- Fai clic su Salva.
Tieni presente che quando non inserisci un output dell'Assistente Google, verrà utilizzato il valore predefinito.
Creare l'intent di interruzione
- Fai clic sulla voce di menu Intent.
- Fai clic su Crea intent
- Inserisci il nome dell'intent:
Stop Intent
- Fai clic su Aggiungi frasi di addestramento.
No
That's it
Bye
I don't want that
Goodbye
It's ok for now
Quit
I want to stop
Close this
End the conversation
- Scorri verso il basso fino a Risposte.> Aggiungi risposta
- Aggiungi le seguenti opzioni di testo:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- Muovi l'interruttore: imposta questo intent come fine della conversazione. In questo modo, una volta trovata la corrispondenza di questo intent, l'azione dell'Assistente Google verrà chiusa.
- Fai clic su Salva.
Crea l'intent del Meetup
L'intent del Meetup conterrà questa parte della conversazione:
Utente | Agente |
"Quand'è il prossimo Meetup?" | "Il prossimo meetup sarà il giorno <data> alle <time> in <location>. L'argomento sarà <topic>. E gli altoparlanti sono: <speakers>. Puoi registrarti tramite la nostra newsletter." |
- Fai clic sulla voce di menu Intent.
- Fai clic su Crea intent
- Inserisci il nome dell'intent:
Meetup Intent
(assicurati di usare la M maiuscola e la I maiuscola. - Se si scrive l'intent in modo diverso, il servizio di backend non funzionerà.) - Fai clic su Aggiungi frasi di addestramento.
When is the next meetup?
Do you have any events?
Which events are in the planning?
Are there meetup events soon?
I would love to attend a meetup
Can I join a virtual meetup?
When will you get together?
Can I join?
What does your calendar look like?
- Fai clic su Fulfillment > Attiva fulfillment
- Sposta l'opzione Abilita chiamata webhook per questo intent.
- Fai clic su Salva.
Crea l'intent Tip
Il Tip Intent conterrà questa parte della conversazione:
Utente | Agente |
"Voglio un suggerimento per leggere." | "Vuoi leggere ulteriori informazioni sui chatbot, su Voice o su entrambi?" |
"Voce" | "Ok, ecco il consiglio della giornata. L'elemento <type> <title> di <author>. Vuoi un altro suggerimento su un libro o un articolo? Inoltre, posso fornirti ulteriori informazioni sui Meetup e su cosa facciamo. Come posso aiutarti?" |
- Fai di nuovo clic sulla voce di menu Intent.
- Fai clic su Crea intent
- Inserisci il nome dell'intent:
Tip Intent
(assicurati di usare la L e la I maiuscola). - Se si scrive l'intent in modo diverso, il servizio di backend non funzionerà.) - Fai clic su Aggiungi frasi di addestramento e aggiungi quanto segue:
Can I get a tip for an article?
I would like to receive a reading tip
Any book tips?
What's nice to read?
I want to learn more about Chatbots, what should I read?
What are nice blogs?
Do you have book suggestions?
I want to receive information about Both
Can I have Chatbots reading tip
I would like to read more about Voice
Voice please
Both are okay.
Reading tip
Tip
Blog
Article
Book
Book suggestions
Yes
Yeah
Another tip
Yes one more
- Scorri verso il basso fino ad Azione e parametri
- Contrassegna la tecnologia come richiesta
Fai clic su Definisci prompt e inserisci:
Do you want to read more about Chatbots, Voice or Both?
- Fai clic su Fulfillment > Attiva fulfillment
Questa volta non intendiamo applicare l'hardcoded di una risposta. La risposta proverrà dalla funzione Cloud Functions. Aziona quindi l'opzione Abilita chiamata webhook per questo intent.
Fai clic su Fulfillment > Attiva fulfillment
- Sposta l'opzione Abilita chiamata webhook per questo intent.
- Fai clic su Salva.
5. Connettori di conoscenza
I connettori di conoscenza integrano gli intent definiti. Analizzano i documenti informativi per trovare risposte automatiche. (ad esempio, domande frequenti o articoli da file CSV, siti web online o persino file PDF). Per configurarle, definisci una o più knowledge base, ovvero raccolte di documenti di conoscenza.
Scopri di più sui connettori di conoscenza.
Proviamo.
- Seleziona il tag en per selezionare la lingua inglese nel menu in alto.
- Seleziona Knowledge (beta) nel menu.
- Fai clic sul pulsante blu a destra: Crea Knowledge Base
- Digita come nome della Knowledge Base; Donne in Voice e premi Salva.
- Fai clic sul link Crea il primo
- Si aprirà una finestra.
Utilizza la seguente configurazione:
Nome del documento: Foglio delle domande frequenti sulle donne in Voice
Tipo di conoscenza: Domande frequenti
Tipo MIME: CSV
- Avremo bisogno dei dati di questo foglio, assicurati che il foglio dati sia aperto e seleziona la scheda Domande frequenti.
- Seleziona File > Scarica > CSV
- Torna in Dialogflow, fai clic su Carica file dal computer e seleziona il file CSV che hai scaricato. Fai clic su Crea.
È stata creata una knowledge base:
- Fai clic su Aggiungi risposta.
Crea le seguenti risposte e fai clic su Salva:
$Knowledge.Answer[1]
- Fai clic su Visualizza dettaglio.
Verranno visualizzate tutte le domande frequenti che hai implementato in Dialogflow.
È facile.
Tieni presente che puoi anche puntare a un sito web HTML online contenente le domande frequenti per importare le domande frequenti nel tuo agente. È persino possibile caricare un PDF con un blocco di testo e Dialogflow troverà delle domande.
- Fai clic su Knowledge (beta) nel menu Dialogflow per tornare a tutti i connettori della knowledge base.
- È possibile modificare i punti di forza e di debolezza della knowledge base. Questo ha senso quando si ha l'idea che le domande frequenti siano vincenti o perdenti a causa delle proprie intenzioni. Dato che non abbiamo molte intenzioni, rafforziamo un po' la nostra knowledge base. Imposta la scala su -0,2. Dopo aver trascinato il cursore, il valore verrà salvato automaticamente.
Le domande frequenti dovrebbero essere viste come "extra" da aggiungere ai tuoi agenti, accanto ai flussi di intent. Le domande frequenti sulla knowledge base non consentono di addestrare il modello. Di conseguenza, porre domande in un modo completamente diverso potrebbe non ottenere una corrispondenza perché non utilizza la comprensione del linguaggio naturale (modelli di machine learning). Ecco perché, a volte, vale la pena convertire le domande frequenti in intent.
6. Evasione del webhook
Crea una funzione Google Cloud Functions
- Vai a http://console.cloud.google.com in un'altra scheda del browser.
- Nel menu a sinistra, seleziona Cloud Functions
- Fai clic su Crea funzione
- Specifica la configurazione seguente:
- Nome:
dialogflow
- Memoria allocata: 256 MiB
- Attivatore: HTTP
- Copia l'URL negli appunti.
- Seleziona Editor incorporato.
- Runtime: NodeJS 8
- Funzione da eseguire:
dialogflow
- Assicurati che questa casella di controllo di autenticazione sia selezionata:
- Ecco i contenuti di package.json. Copia e incolla il codice nella scheda package.json dell'editor.
Questa porzione di codice carica le librerie npm corrette in Google Cloud:
{
"name": "dialogflow",
"description": "Cloud Functions",
"engines": {
"node": "8"
},
"dependencies": {
"request": "^2.85.0",
"request-promise": "^4.2.5",
"dialogflow-fulfillment": "^0.6.1",
"actions-on-google": "^2.2.0",
"googleapis": "^48.0.0",
"moment": "^2.24.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"ngrok": "^3.2.7"
},
"private": true
}
- Ecco i contenuti del file index.js. Copia e incolla il codice nella scheda index.js dell'editor.
Questa porzione di codice verrà integrata con la libreria googleapis per recuperare i dati da un foglio Google. Utilizza la libreria actions-on-google per visualizzare le schede su un dispositivo con l'Assistente Google. Utilizza la libreria dialogflow-fulfillment per classificare gli intent di Dialogflow. Utilizza inoltre il parametro moment della libreria per gestire gli oggetti relativi a data e ora.
/* jshint esversion: 8 */
'use strict';
process.env.DEBUG = 'dialogflow:debug';
const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';
const {
BasicCard,
Button,
} = require('actions-on-google');
const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;
const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
// Should change this to file.only probably
const auth = await google.auth.getClient({
scopes: [SHEETS_SCOPE],
});
return google.sheets({version: 'v4', auth});
}
/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
let datetime = moment(date, 'YYYY-MM-DD');
return `${datetime.format('D MMMM')}`;
};
/* When the tipIntent Intent gets invoked. */
function tipIntent(agent) {
var par = agent.parameters.tech;
var selection = [];
//console.log(par);
//console.log(books);
for(var i = 0; i<books.length; i++){
if(books[i][2].toLowerCase() == par.toLowerCase()) {
selection.push(books[i]);
}
}
var random = Math.floor(Math.random() * selection.length);
var booktip = selection[random];
//console.log(selection[random]);
let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
//console.log(booktip[8]);
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
let conv = agent.conv();
conv.ask(`<speak>${spokenText}</speak>`);
conv.ask(new BasicCard({
title: `Tip of the day!`,
subtitle: `${par}`,
text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
buttons: new Button({
title: 'Read',
url: `${booktip[8]}`,
})
}));
conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
// Add Actions on Google library responses to your agent's response
agent.add(conv);
} else {
agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
}
}
function meetupIntent(agent) {
let conv = agent.conv();
let record;
console.log(meetups);
for(var i = 0; i<meetups.length; i++){
let d = moment(meetups[i][0], 'YYYY-MM-DD');
let today = moment(new Date());
if(moment(d).isSameOrAfter(today)) {
// the i event is not in the past
record = meetups[i];
console.log(record);
break;
}
}
let date = getSpokenDate(record[0]);
let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
let spokenText3 = `You can register via our newsletter.`;
let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
conv.ask(new BasicCard({
title: `Meetup`,
subtitle: `${record[2]}`,
text: `${record[0]} ${record[1]} - ${record[3]}`,
buttons: new Button({
title: 'Register',
url: `http://www.meetup.com`
})
}));
conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
agent.add(conv);
} else {
agent.add(`${writtenText} Is there anything else I can help you with?`);
}
}
exports.dialogflow = async (request, response) => {
var agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
const client = await getSheetsClient();
const allBooks = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Books&Blogs!A:I',
});
const allEvents = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Meetups!A:D',
});
books = allBooks.data.values;
meetups = allEvents.data.values;
books.shift();
meetups.shift();
var intentMap = new Map();
intentMap.set('Tip Intent', tipIntent);
intentMap.set('Meetup Intent', meetupIntent);
agent.handleRequest(intentMap);
};
- Fai clic sul link Variabili di ambiente, networking, timeout e altro ancora
- Seleziona l'account di servizio Dialogflow Integrations.
Per impostazione predefinita, viene utilizzato un account di servizio App Engine di GAE, ma dovrebbe essere lo stesso account di servizio condiviso in Fogli Google nei primi passaggi di questo tutorial.
- Prima di eseguire il deployment della funzione Cloud Functions. Cambieremo una riga del codice nella scheda index.js. Terza riga di codice:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
In uno dei primi passaggi, abbiamo annotato il tasto in Blocco note. Copia e incolla questo ID nel codice.
- Ora siamo pronti. Fai clic su pulsante Crea. Ci vorrà qualche istante, perché verrà eseguito il deployment della tua funzione serverless.
Abilita i fulfillment in Dialogflow
- Torna a Dialogflow
- Fai clic su Fulfillment nel menu principale.
- Attiva l'opzione Webhook.
- Inserisci l'URL della funzione Cloud Functions che è stata copiata negli appunti.
Ad esempio: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- Fai clic su Salva.
- Testiamo il webhook per vedere se il codice funziona e i flussi vengono testati direttamente nel simulatore Dialogflow.
7. Azioni su Google
Azioni su Google è una piattaforma di sviluppo per l'Assistente Google. Consente lo sviluppo di "azioni" di terze parti, ossia app per l'Assistente Google che offrono funzionalità estese.
Dovrai richiamare un'azione Google chiedendo a Google di aprire o parlare con un'app.
Si aprirà l'azione, cambierà la voce e lasci lo stato "nativo" Ambito dell'Assistente Google. Il che significa che devi creare tutto ciò che chiedi all'agente fin qui. Per tua azione non puoi chiedere all'Assistente Google informazioni meteo a Google, se è quello che vuoi. devi prima chiudere l'ambito dell'azione corrente (la tua app).
Testare l'azione nel simulatore dell'Assistente Google
Proviamo a testare la seguente conversazione:
Utente | Assistente Google |
"Hey Google, parla con la mia app di prova." | "Recupero della versione di prova della mia app."" |
Utente | Il tuo-nome-WIV |
- | "Ciao, sono Anna, l'agente virtuale di Women in Voice. Puoi chiedermi informazioni sui Meetup, su Women in Voice o su un suggerimento sulla lettura. Cosa vorresti sapere?" |
Posso avere un suggerimento per un blog? | "Vuoi leggere ulteriori informazioni sui chatbot, su Voice o su entrambi?" |
chatbot, | "Ok, ecco il consiglio della giornata. I chatbot e la sfida di invisibili vantaggi di Cobus Greyling.Vuoi un altro suggerimento su un libro o su un articolo? Inoltre, posso fornirti ulteriori informazioni sui Meetup e su cosa facciamo. Come posso aiutarti?" |
Quando si terrà il prossimo Meetup? | "Il prossimo meetup sarà il 29 aprile alle 18:00 in un Hangout virtuale. L'argomento sarà Workshop online: crea azioni Google con Dialogflow. Puoi registrarti tramite la nostra newsletter.C'è altro che posso fare per te?" |
Qual è l'URL del tuo sito web? | "Ci trovi all'indirizzo www.womeninvoice.com. C'è qualcos'altro che posso fare per te?" |
No, grazie | "Ok. Speriamo di vederti a uno dei nostri Meetup." |
- Tornare al simulatore dell'Assistente Google
Apri: https://console.actions.google.com
- Fai clic sull'icona del microfono e chiedi:
Talk to my test app.
- Ora chiediamo:
Can I have a tip for a blog?
Dovrebbe essere restituito:
"Vuoi leggere ulteriori informazioni sui chatbot, su Voice o su entrambi?"
Chatbots
"Ok, ecco il consiglio della giornata. The Article Chatbots and The Challenge Of In invisibile Affordances of Cobus Greyling.
Vuoi un altro suggerimento su un libro o un articolo? Inoltre, posso fornirti ulteriori informazioni sui Meetup e su cosa facciamo. Come posso aiutarti?"
- Proviamo con un'altra versione della stessa domanda:
"Yes, I want to read more about Voice"
"Ok, ecco il consiglio della giornata. Il libro sulla progettazione di interfacce utente vocali: principi delle esperienze di conversazione. ... di Cathy Pearl.
Vuoi un altro suggerimento su un libro o un articolo? Inoltre, posso fornirti ulteriori informazioni sui Meetup e su cosa facciamo. Come posso aiutarti?"
Tieni presente che non hai mai utilizzato questa frase di addestramento in Dialogflow prima d'ora. Corrispondeva semplicemente all'intenzione giusta.
Tieni inoltre presente che non hai ricevuto una domanda aggiuntiva, perché hai fornito informazioni sufficienti per consentire a Dialogflow di continuare.
- Continua il Dialogflow con le seguenti frasi:
What's the URL for your website
Bye
Errori? Controlla i log.
Ogni volta che utilizzi console.log()
nel codice della funzione Cloud Functions, i dati vengono scritti nei log di Google Cloud (Stackdriver). Puoi accedere a questi log aprendo la console Cloud > Registrazione.
Nel primo menu a discesa, puoi selezionare Cloud Functions > Dialogflow per filtrare i log.
8. Complimenti
Hai creato la tua prima azione dell'Assistente Google con Dialogflow. Ottimo lavoro.
Come forse avrai notato, l'azione era in esecuzione in modalità di test associata al tuo Account Google. Se esegui l'accesso sul dispositivo Nest o nell'app Assistente Google sul tuo smartphone iOS o Android, con lo stesso account. Puoi anche testare l'azione.
Questa è una demo del workshop. Tuttavia, quando crei applicazioni per l'Assistente Google in modo reale, potresti inviare l'azione per l'approvazione. Leggi questa guida per saperne di più.
Argomenti trattati
- Creare un chatbot con Dialogflow v2
- Come creare entità personalizzate con Dialogflow
- Come creare una conversazione lineare con Dialogflow
- Come configurare i fulfillment webhook con Dialogflow e Google Cloud Functions
- Come portare la tua applicazione nell'Assistente Google con Actions on Google
Passaggi successivi
Ti è piaciuto questo codelab? Dai un'occhiata a questi fantastici lab!
- Creare un'azione guida TV con Dialogflow e Actions on Google
- Creare Azioni per l'Assistente Google con Dialogflow (livello 1)
- Creare Azioni per l'Assistente Google con Dialogflow (livello 2)
- Creare Azioni per l'Assistente Google con Dialogflow (livello 3)
- Comprendere il fulfillment integrando Dialogflow con Google Calendar
- Integrare l'API Google Cloud Vision con Dialogflow