1. Introduction
Dans cet atelier, vous allez créer une action simple à l'aide de Dialogflow et apprendre à l'intégrer à l'Assistant Google.
Les exercices sont organisés selon une approche fréquemment suivie par les développeurs cloud :
- Créer un agent Dialogflow v2
- Créer des entités
- Créer des intents
- Configurer un webhook avec GCP Cloud Functions
- Importer des questions fréquentes à l'aide de la base de connaissances
- Tester le chatbot
- Activer l'intégration de l'Assistant Google
Objectif de cet atelier
Nous allons créer une application Assistant Google pour le groupe de rencontre Women in Voice. Il sera possible de demander quand aura lieu le prochain Meetup, réserver des conseils ou des questions générales sur le groupe de rencontre. |
Points abordés
- Créer un chatbot avec Dialogflow v2
- Créer une conversation linéaire avec Dialogflow
- Utiliser des entités
- Comment utiliser la base de connaissances
- Configurer des fulfillments webhook avec les fonctions Dialogflow et GCP
- Intégrer votre application à l'Assistant Google avec Actions on Google
Prérequis
- Pour créer un agent Dialogflow, vous devez disposer d'une adresse Gmail ou Google Identity.
- Nous vous offrirons des crédits cloud GCP pour l'utilisation de GCP Cloud Functions.
- Pour obtenir les données de l'agent, vous devez accéder à cette feuille de calcul Google Sheets publique.
- Ouvrez-le dans un nouvel onglet: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
- Il n'est pas nécessaire de connaître JavaScript de base, mais cela peut s'avérer utile si vous souhaitez modifier le code de traitement du webhook.
2. Configuration
Activer l'activité sur le Web dans votre navigateur
- Cliquez sur http://myaccount.google.com/activitycontrols.
- Assurez-vous que le Web et Le paramètre "Activité dans les applications" est activé:
Créer un agent Dialogflow
- Ouvrir: https://console.dialogflow.com
- Dans la barre de gauche, juste sous le logo, sélectionnez Create New Agent (Créer un agent). Si vous avez déjà des agents, cliquez d'abord sur le menu déroulant.
- Indiquez un nom d'agent:
yourname-wiv
(utilisez votre propre nom) - Sélectionnez la langue par défaut: English - en.
- Sélectionnez le fuseau horaire le plus proche de vous comme fuseau horaire par défaut.
- Ne sélectionnez pas Méga-agent. Cette fonctionnalité vous permet de créer un agent global qui peut orchestrer des "sous-agents". Nous n'en avons plus besoin pour l'instant.)
- Cliquez sur Créer.
Configurer Dialogflow
- Cliquez sur l'icône en forme de roue dentée dans le menu de gauche, à côté du nom de votre projet.
- Saisissez la description d'agent suivante: Women in Voice agent
- Faites défiler l'écran vers le bas jusqu'à Fonctionnalités bêta et activez les fonctionnalités bêta à l'aide du bouton bascule.
- Faites défiler la page vers le bas jusqu'à Log Settings (Paramètres des journaux), puis activez les deux options "Log the interactions of Dialogflow" (Consigner les interactions de Dialogflow) et "Consigner toutes les interactions dans Google Cloud Stackdriver". Nous en aurons besoin plus tard, au cas où nous voudrions déboguer notre action.
- Cliquez sur Enregistrer.
- Cliquez sur Terminé.
Configurer Actions on Google
- Cliquez sur le lien Assistant Google dans Découvrez son fonctionnement dans l'Assistant Google dans le panneau de droite.
La page http://console.actions.google.com s'ouvre.
REMARQUE: Assurez-vous d'être connecté avec le même compte Google que dans Dialogflow.
Si vous découvrez Actions on Google, vous devez d'abord remplir ce formulaire:
- Essayez d'ouvrir votre action dans le simulateur** en cliquant sur le nom du projet.**
- Sélectionnez Develop (Développer) dans la barre de menu.
Décochez la case Utiliser les paramètres linguistiques de l'utilisateur. Pour s'assurer que le synthétiseur vocal ne sera pas ignoré par la langue par défaut de l'Assistant.
- Cliquez sur Enregistrer.
- Sélectionnez Test dans la barre de menu.
- Vérifiez que le simulateur est défini sur English (Anglais) et cliquez sur Talk to my test-app (Parler à mon application test).
L'action vous salue avec l'intent par défaut Dialogflow de base. Cela signifie que l'intégration avec Action on Google a fonctionné !
Configurer Google Cloud
Pour ce tutoriel, vous aurez besoin d'un compte GCP avec un compte de facturation. Si vous n'en avez pas, suivez ces étapes pour en créer un.
Normalement, un compte de facturation nécessite un mode de paiement, tel qu'une carte de crédit. Pour cet atelier, nous pouvons utiliser des crédits qui vous permettent d'ignorer cette étape.
- Accéder à cette URL et se connecter
- Cliquer: Cliquez ici pour accéder à vos crédits
- Cliquez sur Accepter et Continuer
Tout est prêt. Vous avez créé un compte de facturation avec 25 dollars, ce qui devrait suffire à utiliser Cloud Functions pendant une longue période.
Activer l'API Google Sheets
Si votre agent a besoin de plus que des réponses d'intent statiques (par exemple, pour extraire des données d'un service Web, d'une base de données ou d'une feuille de calcul Sheets), vous devez utiliser le fulfillment pour connecter votre service Web à l'agent. La connexion à votre service Web vous permet d'effectuer des actions en fonction des expressions de l'utilisateur et de lui renvoyer des réponses dynamiques.
Par exemple, si un utilisateur souhaite recevoir une astuce pour un blog ou un livre, votre service Web peut consulter votre base de données et répondre à l'utilisateur en lui proposant un article à lire.
Dans ce tutoriel, nous n'utiliserons pas une base de données, mais une feuille de calcul Google Sheets. Une fois la feuille mise à jour, l'action de l'Assistant Google sera également modifiée. Excellent !
- Ouvrez cette feuille de calcul Google Sheets dans un nouvel onglet du navigateur, si ce n'est pas déjà fait:
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- IMPORTANT: Faites une copie de cette feuille. Cliquez sur Fichier > Créer une copie
- Une fois la feuille copiée, cliquez sur Partager.
- Nous devrons accorder des droits de modification au compte de service Dialogflow. Pour ce faire, ouvrez Dialogflow > Paramètres (roue dentée).
- Faites défiler la page jusqu'à Projet Google.
- Copiez l'adresse (adresse e-mail) du compte de service. Le résultat doit ressembler à ceci: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- Collez ce compte de service dans la fenêtre pop-up "Partager" de Google Sheets, puis accordez-lui des droits de modification.
- Nous devons ensuite mémoriser l'ID de la feuille de calcul sur laquelle nous travaillons actuellement.
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/ et /edit#gid=1240329448 (sans les barres obliques).
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.
- Ouvrir dans un autre onglet du navigateur http://console.cloud.google.com. (Si vous avez d'autres projets Google Cloud, activez le nouveau projet Dialogflow: votrenom-wiv.) - Dans la barre de recherche, recherchez API Google Sheets.
- Cliquez dessus,puis cliquez sur le bouton Activer l'API Google Sheets qui se trouve en haut.
3. Entités personnalisées
Les entités sont des objets sur lesquels votre application ou votre appareil effectue des actions. Considérez-les comme des paramètres / variables. Dans notre action, nous allons demander:
"J'aimerais vous donner un conseil pour lire
chatbots
/ J'aimerais avoir un conseil pour lire
voice*"*
Que vous partagiez les chatbots, les voix ou les deux, ces informations seront collectées à partir d'une entité personnalisée qui sera utilisée en tant que paramètre dans ma requête adressée à un service Web.
Voici plus d'informations sur les entités Dialogflow.
Créer l'entité de la chaîne
- Dans la console Dialogflow, cliquez sur l'élément de menu Entities (Entités).
- Cliquez sur Créer une entité.
- Nom de l'entité:
tech
(veillez à écrire tout en minuscules) - Spécifiez les options avec les synonymes. (vous pouvez naviguer dans l'interface à l'aide de la touche de tabulation).
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.** Passez en mode **Raw Edit** (Modification brute) en cliquant sur le bouton de menu à côté du bouton bleu d'enregistrement.
- Notez que vous auriez également pu saisir toutes les entités au format CSV. Cela peut s'avérer utile lorsque vous devez créer un grand nombre d'entités.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- Cliquez sur Enregistrer.
4. Intents
Dialogflow utilise des intents pour classer les intentions d'un utilisateur. Les intents comportent des phrases d'entraînement, qui sont des exemples de ce qu'un utilisateur pourrait dire à votre agent.
Par exemple, un utilisateur qui veut savoir qui veut savoir quand le prochain événement a lieu peut demander:
"Quand a lieu le prochain Meetup ?"
Lorsqu'un utilisateur écrit ou dit quelque chose (appelé expression utilisateur), Dialogflow fait correspondre cette expression avec l'intent le plus adapté dans votre agent. La mise en correspondance des intents est également appelée classification des intents.
En savoir plus sur les intents Dialogflow
Modifier l'intent d'accueil par défaut
Lorsque vous créez un agent Dialogflow, deux intents par défaut sont automatiquement créés. Default Welcome Intent (Intent d'accueil par défaut) est le premier flux auquel vous accédez lorsque vous démarrez une conversation avec l'agent. Default Fallback Intent (Intent de remplacement par défaut) est le flux que vous obtenez lorsque l'agent ne vous comprend pas ou ne peut pas faire correspondre un intent à ce que vous venez de dire.
- Cliquez sur Intents > Intent d'accueil par défaut
Dans le cas de l'Assistant Google, il démarrera automatiquement avec l'intent d'accueil par défaut. En effet, Dialogflow écoute l'événement de bienvenue. Cependant, vous pouvez également appeler l'intent en énonçant l'une des phrases d'entraînement saisies.
Voici le message de bienvenue de l'intent d'accueil par défaut:
Utilisateur | Agent |
"Ok Google, parle à <votrenom>-WIV" | "Bonjour, je suis Anna, l'agent virtuel de Women in Voice.""Vous pouvez me demander des informations sur les rencontres, Women in Voice ou un conseil de lecture."Que souhaitez-vous savoir ?" |
- Faites défiler la page jusqu'à Réponses.
- Effacer toutes les réponses textuelles.
- Dans l'onglet par défaut, créez les trois réponses suivantes. (Cliquez sur Ajouter des réponses > Texte ou réponse SSML pour chaque nouvelle ligne.)
- Bonjour, je suis Anna, l'agent virtuelle de Women in Voice.
- Vous pouvez me demander des informations sur les rencontres, Women in Voice ou un conseil de lecture.
- Que souhaitez-vous savoir ?
La configuration doit être semblable à celle présentée dans cette capture d'écran.
- La sortie précédente est utilisée pour les chatbots. Nous pouvons la modifier légèrement, en particulier pour l'Assistant Google. Nous allons utiliser le langage SSML (Speech Synthesis Markup Language) pour intégrer des pauses dans nos phrases. Cliquez sur l'onglet Assistant Google.
- N'activez pas l'option "Par défaut", car nous ne réutiliserons pas le message du chatbot.
- Cliquez sur Ajouter des réponses > Réponse simple
- Ajoutez la version textuelle suivante:
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?
- Cliquez ensuite sur Personnaliser la sortie audio.
- Ajoutez la version SSML suivante:
<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 configuration doit être semblable à celle présentée dans cette capture d'écran.
- Cliquez sur Enregistrer.
Vous trouverez ici plus d'informations sur le langage SSML pour Actions on Google.
- Testons cet intent. Nous pouvons commencer par le tester dans le simulateur Dialogflow.
Saisissez Hello. Ce message devrait s'afficher.
- Revenez maintenant à la console Actions on Google.
(Vous pouvez les conserver dans un autre onglet.)
Cliquez sur Parler à mon application de test. Écoutez ensuite le nouveau message de bienvenue.
Modifier l'intent de remplacement par défaut
- Cliquez sur Intents > Intent de remplacement par défaut
- Faites défiler la page jusqu'à Réponses.
- Effacer toutes les réponses textuelles.
- Dans l'onglet par défaut, créez les réponses suivantes, chacune sur une nouvelle ligne, afin d'alterner entre ces options:
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.
- Cliquez sur Enregistrer.
Notez que si vous ne saisissez pas de sortie pour l'Assistant Google, la valeur par défaut est utilisée.
Créer l'intent d'arrêt
- Cliquez sur l'élément de menu Intents.
- Cliquez sur Create Intent (Créer un intent).
- Saisissez le nom de l'intent:
Stop Intent
- Cliquez sur Add Training phrases (Ajouter des phrases d'entraînement).
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
- Faites défiler la page jusqu'à la section Responses (Réponses).> Ajouter une réponse
- Ajoutez les options de texte suivantes:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- Activez le bouton: Set this intent as the end of conversation (Définir cet intent comme fin de la conversation). Ainsi, une fois cet intent mis en correspondance, il fermera l'action de l'Assistant Google.
- Cliquez sur Enregistrer.
Créer l'intent de la rencontre
L'intent Meetup contiendra cette partie de la conversation:
Utilisateur | Agent |
"Quand a lieu le prochain Meetup ?" | "Le prochain Meetup aura lieu le <date>. à <time> à <location>. Le sujet sera <topic>. Et les haut-parleurs sont : <speakers>. Vous pouvez vous inscrire via notre newsletter." |
- Cliquez sur l'élément de menu Intents.
- Cliquez sur Create Intent (Créer un intent).
- Saisissez le nom de l'intent:
Meetup Intent
(veillez à utiliser un M majuscule et un I majuscule. Si vous écrivez l'intent différemment, le service de backend ne fonctionnera pas. - Cliquez sur Add Training phrases (Ajouter des phrases d'entraînement).
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?
- Cliquez sur Fulfillment > Activer le fulfillment
- Activez le bouton bascule Enable Webhook call for this intent (Activer l'appel webhook pour cet intent).
- Cliquez sur Enregistrer.
Créer l'intent de conseil
L'intent de conseil contiendra cette partie de la conversation:
Utilisateur | Agent |
"J'aimerais vous donner un conseil pour lire." | "Voulez-vous en savoir plus sur les chatbots, Voice ou les deux ?" |
"Voix" | "Voici le conseil du jour. La balise <type> <title> de <author>. Voulez-vous une autre astuce pour un livre ou un article ? Je peux également vous en dire plus sur les rencontres ou sur ce que nous faisons. Que puis-je faire pour vous aider ?" |
- Cliquez à nouveau sur l'élément de menu Intents.
- Cliquez sur Create Intent (Créer un intent).
- Saisissez le nom de l'intent:
Tip Intent
(veillez à utiliser un L majuscule et un I majuscule. Si vous écrivez l'intent différemment, le service de backend ne fonctionnera pas. - Cliquez sur Add Training phrases (Ajouter des phrases d'entraînement) et ajoutez les éléments suivants:
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
- Faites défiler la page jusqu'à la section Action et paramètres.
- Marquer tech comme nécessaire
Cliquez sur Define Prompt (Définir la requête) et saisissez les informations suivantes :
Do you want to read more about Chatbots, Voice or Both?
- Cliquez sur Fulfillment > Activer le fulfillment
Cette fois, nous ne codons pas la réponse en dur. La réponse proviendra de la fonction Cloud. Inversez donc le bouton bascule Enable Webhook call for this intent (Activer l'appel Webhook pour cet intent).
Cliquez sur Fulfillment > Activer le fulfillment
- Activez le bouton bascule Enable Webhook call for this intent (Activer l'appel webhook pour cet intent).
- Cliquez sur Enregistrer.
5. Connecteurs de connaissances
Les connecteurs de connaissances complètent les intents définis. Ils analysent des documents de base de connaissances pour trouver des réponses automatisées. (par exemple, FAQ ou articles issus de fichiers CSV, de sites Web en ligne ou même de fichiers PDF !) Pour les configurer, vous devez définir une ou plusieurs bases de connaissances, qui sont des collections de documents de base de connaissances.
En savoir plus sur les connecteurs de connaissances
Essayons ceci.
- Sélectionnez la balise en pour sélectionner la langue anglaise dans le menu supérieur.
- Sélectionnez Connaissances (bêta) dans le menu.
- Cliquez sur le bouton bleu droit: Créer une base de connaissances
- Saisissez le nom de la base de connaissances. Women in Voice et cliquez sur Enregistrer.
- Cliquez sur le lien Create the first one (Créer le premier).
- Une fenêtre s'ouvre.
Utilisez la configuration suivante:
Nom du document: Fiche des questions fréquentes sur les femmes dans Voice
Type de connaissance: questions fréquentes
Type MIME: CSV
- Nous aurons besoin des données de cette feuille, vérifiez qu'elle est ouverte et sélectionnez l'onglet Questions fréquentes.
- Sélectionnez Fichier > Télécharger > CSV
- De retour dans Dialogflow, cliquez sur Upload File from Computer (Importer un fichier depuis l'ordinateur) et sélectionnez le fichier CSV que vous avez téléchargé. Cliquez sur Créer.
Une base de connaissances a été créée:
- Cliquez sur Ajouter une réponse.
Créez les réponses suivantes, puis cliquez sur Enregistrer :
$Knowledge.Answer[1]
- Cliquez sur Afficher les détails.
Toutes les FAQ que vous avez implémentées dans Dialogflow s'affichent alors.
C'est facile !
Sachez que vous pouvez également pointer vers un site Web HTML en ligne contenant des FAQ pour importer des FAQ dans votre agent. Il est même possible d'importer un PDF contenant un bloc de texte, et Dialogflow trouvera lui-même des questions.
- Cliquez sur Knowledge (beta) (Connaissances (bêta)) dans le menu Dialogflow pour revenir à tous les connecteurs de la base de connaissances.
- Il est possible de modifier la force et la faiblesse de la base de connaissances. C'est logique, lorsque vous pensez que vos FAQ sont plus efficaces que vos propres intents, ou qu'elles ne le sont pas. Étant donné que nous n'avons pas beaucoup d'intents, renforçons un peu notre base de connaissances. Modifiez l'échelle sur -0,2. Après avoir fait glisser le curseur, la valeur est automatiquement enregistrée.
Les questions fréquentes doivent désormais être considérées comme des "extras" à ajouter à vos agents, à côté de vos flux d'intents. Les questions fréquentes des bases de connaissances ne permettent pas d'entraîner le modèle. Si vous posez des questions d'une manière complètement différente, vous risquez de ne pas obtenir de correspondance, car le modèle n'utilise pas la compréhension du langage naturel (modèles de machine learning). C'est pourquoi il est parfois utile de convertir vos FAQ en intents.
6. Fulfillment webhook
Créer une fonction Google Cloud
- Accédez à http://console.cloud.google.com dans un autre onglet du navigateur.
- Dans le menu de gauche, sélectionnez Cloud Functions.
- Cliquez sur Créer une fonction
- Spécifiez la configuration suivante:
- Nom :
dialogflow
- Mémoire allouée: 256 Mio
- Déclencheur: HTTP
- Copiez l'URL dans le presse-papiers.
- Sélectionnez Inline Editor (Éditeur intégré).
- Environnement d'exécution: NodeJS 8
- Fonction à exécuter:
dialogflow
- Assurez-vous que cette case d'authentification est cochée :
- Voici le contenu du fichier package.json. Copiez et collez ceci dans l'onglet package.json de l'éditeur.
Cet extrait de code charge les bibliothèques npm correctes dans 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
}
- Voici le contenu du fichier index.js. Copiez et collez ceci dans l'onglet "index.js" de l'éditeur.
Cet extrait de code s'intégrera à la bibliothèque googleapis afin d'extraire des données d'une feuille de calcul Google Sheets. Il utilise la bibliothèque actions-on-google pour afficher des cartes sur un appareil doté de l'Assistant Google. Il utilise la bibliothèque dialogflow-fulfillment pour classer les intents Dialogflow. Enfin, il utilise la bibliothèque moment pour gérer les objets "Date" et "Heure".
/* 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);
};
- Cliquez sur le lien Variables d'environnement, mise en réseau, délais avant expiration, etc.
- Sélectionnez le compte de service Dialogflow Integrations (Intégrations Dialogflow).
(Par défaut, il utilise un compte de service GAE App Engine, mais il doit s'agir du même compte de service que celui qui a été partagé dans Google Sheets dans les premières étapes de ce tutoriel.)
- Avant de déployer la fonction Cloud, Nous allons modifier une ligne de notre code dans l'onglet index.js. La troisième ligne de code:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
Dans l'une des premières étapes, nous avons écrit cette clé dans le Bloc-notes. Copiez-le et collez-le dans votre code.
- Nous sommes maintenant prêts. Cliquez sur le bouton Créer. Cela prendra un moment, car le déploiement de votre fonction sans serveur est en cours.
Activer les fulfillments dans Dialogflow
- Revenir à Dialogflow
- Cliquez sur Fulfillment dans le menu principal
- Activez le bouton bascule Webhook.
- Saisissez l'URL de la fonction Cloud qui a été copiée dans le presse-papiers.
Exemple: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- Cliquez sur Enregistrer.
- Testons le webhook pour voir si le code fonctionne et testons les flux directement dans le simulateur Dialogflow.
7. Actions associées à Google
Actions on Google est une plate-forme de développement pour l'Assistant Google. Elle permet le développement tiers d'"actions", c'est-à-dire des applets pour l'Assistant Google qui offrent des fonctionnalités étendues.
Vous devez appeler une action Google en demandant à Google d'ouvrir une application ou de lui parler.
L'action s'ouvre, la voix change, et vous quittez le mode natif. Champ d'application de l'Assistant Google. Autrement dit, vous devez créer toutes les questions que vous posez à l'agent. Vous ne pouvez pas demander soudainement à l'Assistant Google de vous fournir des informations sur la météo de Google, si c'est ce que vous souhaitez. vous devez d'abord quitter (fermer) la portée de votre action actuelle (votre application).
Tester votre action dans le simulateur de l'Assistant Google
Testons la conversation suivante:
Utilisateur | Assistant Google |
"Hey Google, parle à mon application de test." | "Obtenir la version de test de mon application." |
Utilisateur | Votre nom-WIV |
- | "Bonjour, je suis Anna, l'agent virtuelle de Women in Voice. Vous pouvez me demander des informations sur les rencontres, Women in Voice ou un conseil de lecture. Que souhaitez-vous savoir ?" |
Puis-je donner un conseil pour un blog ? | "Voulez-vous en savoir plus sur les chatbots, Voice ou les deux ?" |
chatbots | "Voici le conseil du jour. The Article Chatbots And The Challenge Of Invisible Affordances of Cobus Greyling.Voulez-vous obtenir un autre livre ou conseil ? Je peux également vous en dire plus sur les rencontres ou sur ce que nous faisons. Que puis-je faire pour vous aider ?" |
Quand a lieu le prochain Meetup ? | "Le prochain meetup aura lieu le 29 avril à 18h au cours d'un Hangout virtuel. Le thème sera "Atelier en ligne: Créer des actions Google avec Dialogflow". Vous pouvez vous inscrire via notre newsletter.Y a-t-il autre chose que je puisse faire pour vous aider ?" |
Quelle est l'URL de votre site Web ? | "Vous pouvez nous contacter à l'adresse www.womeninvoice.com. Y a-t-il autre chose que je puisse faire pour vous ?" |
Non, c'est tout, merci | "Très bien. Nous espérons vous retrouver à l'un de nos meetups." |
- Revenir au simulateur de l'Assistant Google
Ouvrir: https://console.actions.google.com
- Cliquez sur l'icône représentant un micro et posez les questions suivantes:
Talk to my test app.
- Maintenant, demandons:
Can I have a tip for a blog?
Cette opération devrait renvoyer les valeurs ci-dessous :
"Voulez-vous en savoir plus sur les chatbots, Voice ou les deux ?"
Chatbots
"Voici le conseil du jour. The Article Chatbots And The Challenge Of Invisible Affordances of Cobus Greyling.
Voulez-vous obtenir une autre astuce pour un livre ou un article ? Je peux également vous en dire plus sur les rencontres ou sur ce que nous faisons. Que puis-je faire pour vous aider ?"
- Essayons une autre version de la même question:
"Yes, I want to read more about Voice"
"Voici le conseil du jour. "The Book Designing Voice User Interfaces: Principles of Conversational Experiences". ... de Cathy Pearl.
Voulez-vous obtenir une autre astuce pour un livre ou un article ? Je peux également vous en dire plus sur les rencontres ou sur ce que nous faisons. Que puis-je faire pour vous aider ?"
Notez que vous n'avez jamais utilisé cette phrase d'entraînement dans Dialogflow auparavant. Il correspond simplement au bon intent.
Notez également que vous n'avez pas reçu de question de suivi, car vous avez fourni suffisamment d'informations pour que Dialogflow puisse continuer.
- Continuez à utiliser Dialogflow avec les phrases suivantes:
What's the URL for your website
Bye
Des erreurs ? Consultez les journaux.
Chaque fois que vous utilisez console.log()
dans le code de votre fonction Cloud, des données sont écrites dans vos journaux GCP (Stackdriver). Pour accéder à ces journaux, ouvrez la console Cloud > Journalisation.
Dans le premier menu déroulant, vous pouvez sélectionner Cloud Function > Dialogflow pour filtrer vos journaux.
8. Félicitations
Vous avez créé votre première action dans l'Assistant Google avec Dialogflow. Félicitations !
Comme vous l'avez peut-être remarqué, votre action était exécutée en mode test, qui est associé à votre compte Google. Si vous utilisez le même compte sur votre appareil Nest ou dans l'application Assistant Google sur votre téléphone iOS ou Android, Vous pouvez également tester votre action.
Voici maintenant une démonstration dans un atelier. Toutefois, lorsque vous créez réellement des applications pour l'Assistant Google, vous pouvez envoyer votre action pour approbation. Lisez ce guide pour en savoir plus.
Points abordés
- Créer un chatbot avec Dialogflow v2
- Créer des entités personnalisées avec Dialogflow
- Créer une conversation linéaire avec Dialogflow
- Configurer des fulfillments webhook avec Dialogflow et Google Cloud Functions
- Intégrer votre application à l'Assistant Google avec Actions on Google
Et ensuite ?
Vous avez apprécié cet atelier de programmation ? Découvrez ces ateliers très utiles !
- Créer une action TV Guide avec Dialogflow et Actions on Google
- Créer des actions pour l'Assistant Google avec Dialogflow (niveau 1)
- Créer des actions pour l'Assistant Google avec Dialogflow (niveau 2)
- Créer des actions pour l'Assistant Google avec Dialogflow (niveau 3)
- Comprendre le fulfillment en intégrant Dialogflow à Google Agenda
- Intégrer l'API Google Cloud Vision à Dialogflow