Chapitre 9: Comment créer une application Google Home avec DialogFlow | Réalisation via l'éditeur en ligne

Maintenant que nous avons configuré l'environnement, créé l'agent, les intentions et l'entité nécessaires et les avons testés. Passons maintenant au module d’exécution où nous utiliserons l’éditeur intégré pour créer une réponse pertinente en fonction de l’entité (QuoteType).

Contenu de la série:

Chapitre 6: Didacticiel Google Home App: présentation

Chapitre 7: Didacticiel Google Home App: conception d'une conversation

Chapitre 8: Didacticiel Google Home App: Configuration de l'environnement

Chapitre 9: Didacticiel Google Home App: exécution via l'éditeur en ligne

Chapitre 10: Didacticiel Google Home App: réalisation via le magasin de données Cloud

Chapitre 11: Didacticiel Google Home App: exécution via Webhook

Chapitre 12: Didacticiel Google Home App: Déploiement d'applications

Récapitulatif et quelle partie de la grande image que nous abordons maintenant.

Étape 1: activez l'accomplissement pour l'intention de LookingForQuote.

Étape 2: - Réalisation via l'éditeur en ligne [Fonctions cloud pour Firebase]

Supprimer tout dans l'éditeur en ligne. Essayons d’écrire à partir de zéro, une ligne à la fois. Rien à craindre, reste avec moi.

Voici. La première ligne.

'use strict';

Strict:

"Use strict" a pour but d'indiquer que le code doit être exécuté en "mode strict". En mode strict, vous ne pouvez pas, par exemple, utiliser des variables non déclarées.

Tous les navigateurs modernes prennent en charge l’utilisation «strict», à l’exception d’Internet Explorer (IE) 9 et inférieur: Qui utilise Internet de toute façon… à moins que…

ok passer à autre chose.

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

Const définit fondamentalement quelque chose que cela ne va pas changer dans le programme pour toujours. Nous allons importer le module de fonctions de Firebase ici.

Ensuite, un peu plus de consts dont chacun tiendra nos intentions. Ces chaînes doivent correspondre au nom des intentions.

'use strict';
fonctions const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intention de bienvenue par défaut';
const FALLBACK_INTENT = 'Intention de repli par défaut';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';

Nous allons maintenant stocker l'objet dialogflow dans un const appelé app.

const app = dialogflow ();

Ensuite, nous allons définir les intentions et instancier un objet "conv" qui utilisera la fonction ask pour parler à l'utilisateur.

app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("Bienvenue à Dr. Motivation! Demandez une citation sur l'amitié, l'amour ou la motivation");
});

N'oubliez pas d'activer Webhook dans la section de réalisation dans «l'intention de bienvenue par défaut».

De même, nous allons définir les deux autres intentions également. Ne vous inquiétez pas, cela sera simple, car notre objectif est de faire en sorte que cet accomplissement s’exécute sans erreur.

un pour intention de repli

app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Arrête de marmonner et parle plus fort");
});

un pour notre intention personnalisée

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Les amis sont des thérapeutes, on peut boire avec");
});

Enfin, nous allons retourner l'application d'objet dialogflow lorsque l'exécution est appelée

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

le code complet ressemble à ceci

'use strict';
 
fonctions const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intention de bienvenue par défaut';
const FALLBACK_INTENT = 'Intention de repli par défaut';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("Bienvenue à Dr. Motivation! Demandez une citation sur l'amitié, l'amour ou la motivation");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Arrête de marmonner et parle plus fort");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     conv.ask ("Les amis sont des thérapeutes, on peut boire avec");
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Étape 3: déployer la fonction

Étape 4: Testez la fonction

Consultez la réponse relative à l'exécution en cliquant sur le bouton «Informations de diagnostic». Vous verrez maintenant la citation mentionnée dans le code.

Essayons la solution de secours par défaut sans activer la réalisation via webhook et avec elle.

Sans Webhook activé:

L'information de diagnostic a fondamentalement juste une réponse d'API RAW

Poursuivons à présent et autorisons l’accomplissement via webhook pour l’intention de repli… si vous ne l’avez pas déjà fait.

sortie:

maintenant que l'appel webhook est activé, nous obtenons également une réponse à son problème.

Étape 5: ajoutons plus de fonctionnalités au code.

Puisque nous obtenons QuoteType en tant que paramètre, essayons de l’utiliser dans notre code via de simples instructions If else.

d'abord définir l'entité QuoteType

const QUOTE_TYPE_ENTITY = 'QuoteType';

puis extraire la valeur du paramètre, la stocker dans une variable… la faire correspondre à des valeurs et pousser des citations différentes à chaque fois.

app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters (QUOTE_TYPE_ENTITY) .toLowerCase ();
     if (quote_type == "motivation") {
     conv.ask ("Ne sois pas un âne paresseux");
     } else if (quote_type == "frienship") {
     conv.ask ("Les amis sont des thérapeutes, on peut boire avec");
     } else if (quote_type == "romantique") {
     conv.ask ("quelque chose de romantique");
     } autre {
         conv.ask ("lève ton cul et travaille au lieu de me parler");
     }
});

Testez-le:

Vous pouvez également consulter la console Firebase pour connaître les journaux d’erreurs.

allez sur votre console de base de feu .. ou sous l'éditeur en ligne, cliquez sur le lien

ok..so conv.parameters n'est pas une fonction mais un tableau d'objets donc changez () en []

conv.parameters (QUOTE_TYPE_ENTITY)

à

conv.parameters [QUOTE_TYPE_ENTITY]

Le code final est donné ci-dessous:

'use strict';
 
fonctions const = require ('firebase-functions');
const {dialogflow} = require ('actions-on-google');
const WELCOME_INTENT = 'Intention de bienvenue par défaut';
const FALLBACK_INTENT = 'Intention de repli par défaut';
const LOOKING_FOR_QUOTE_INTENT = 'LookingForQuote';
const QUOTE_TYPE_ENTITY = 'QuoteType';
const app = dialogflow ();
app.intent (WELCOME_INTENT, (conv) => {
    conv.ask ("Bienvenue à Dr. Motivation! Demandez une citation sur l'amitié, l'amour ou la motivation");
});
app.intent (FALLBACK_INTENT, (conv) => {
    conv.ask ("Arrête de marmonner et parle plus fort");
});
app.intent (LOOKING_FOR_QUOTE_INTENT, (conv) => {
     const quote_type = conv.parameters [QUOTE_TYPE_ENTITY] .toLowerCase ();
     if (quote_type == "motivation") {
     conv.ask ("Ne sois pas un âne paresseux");
     } else if (quote_type == "frienship") {
     conv.ask ("Les amis sont des thérapeutes, on peut boire avec");
     } else if (quote_type == "romantique") {
     conv.ask ("quelque chose de romantique");
     } autre {
         conv.ask ("lève ton cul et travaille au lieu de me parler");
     }
});
exports.dialogflowFirebaseFulfillment = functions.https.onRequest (app);

Étape 6: Déployer et tester:

De toute évidence, cela ne peut pas être la version finale. Si vous devez le rendre vraiment dynamique, vous devez le connecter à une base de données pour extraire des données en fonction de la saisie de l'utilisateur.

Dans le chapitre suivant, nous allons utiliser le magasin de données en nuage de Google, qui est un type de base de données permettant d’en extraire des données et de fournir des devis à nos utilisateurs.

Cette histoire est publiée dans The Startup, la plus importante publication d’entrepreneurs de Medium, suivie de plus de 358 974 personnes.

Abonnez-vous pour recevoir nos meilleures histoires ici.