Jeu d'exercices orthographiques avec l'Assistant Google et Cloud Firestore

1. Présentation

La plate-forme de développement Assistant Google vous permet de créer des logiciels pour étendre les fonctionnalités de l'Assistant Google, un assistant personnel virtuel, sur plus d'un milliard d'appareils, y compris des enceintes intelligentes, des téléphones, des voitures, des téléviseurs, des casques audio et plus encore. Cet assistant simplifie la vie des utilisateurs qui lui demandent d'accomplir des tâches (par exemple, faire des courses, réserver un chauffeur, etc.). En tant que développeur, vous pouvez utiliser la plate-forme de développement Assistant pour créer et gérer facilement des expériences de conversation agréables et efficaces entre les utilisateurs et votre propre service de traitement tiers.

Cet atelier de programmation aborde les concepts de niveau intermédiaire du développement avec l'Assistant Google, Cloud Functions et Cloud Firestore. Dans cet atelier de programmation, vous allez créer un jeu appelé "Entraînement orthographique" qui utilise l'Assistant Google pour demander aux utilisateurs d'épeler des mots.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez créer un jeu sophistiqué avec les fonctionnalités suivantes :

  • Reçoit les réponses orthographiques de l'utilisateur et, en fonction de la valeur, modifie les invites de conversation
  • Répond avec des indices sur l'orthographe du mot, comme sa définition ou sa répétition
  • Créer une boucle de jeu pour que l'utilisateur puisse interagir à nouveau avec l'Assistant après avoir orthographié le mot

Avant de commencer à créer cette action, vous pouvez interagir avec l'action en direct sur votre appareil avec l'Assistant Google intégré en disant "Hey Google, parle à Spelling Practice". La conversation par défaut via cette action pour un utilisateur connu ressemble à l'interaction suivante :

Une fois cet atelier de programmation terminé, votre action se présentera comme suit:

2e9f94dc0ceafc96.png

Points abordés

  • Interagir avec Cloud Firestore
  • Utiliser des emplacements pour collecter des données auprès de l'utilisateur
  • Traiter l'entrée utilisateur et y répondre
  • Utiliser des conditions pour ajouter une logique à une scène
  • Ajouter une boucle de jeu

Prérequis

Les prérequis pour cet atelier de programmation sont les suivants :

  • Un navigateur Web, tel que Google Chrome
  • Un IDE pour écrire des fonctions Cloud
  • Un mode de paiement. Cet atelier de programmation utilise Cloud Functions for Firebase, ce qui nécessite que votre projet soit associé au forfait Firebase Blaze (en savoir plus).
  • Un terminal pour exécuter des commandes shell
  • Node.js 10 ou version ultérieure

2. Obtenir le code des fonctions

Clonez le dépôt GitHub à partir de la ligne de commande :

$ git clone https://github.com/FirebaseExtended/codelab-actions-firestore

3. Créer un projet Firebase et configurer votre application

Créer un projet Firebase

  1. Connectez-vous à Firebase.
  2. Dans la console Firebase, cliquez sur Ajouter un projet (ou Créer un projet), puis nommez votre projet Firebase Spelling-Practice.

66ae8d1894f4477.png

  1. Cliquez sur les options de création de projet. Si vous y êtes invité, acceptez les conditions d'utilisation de Firebase. Passez l'étape de configuration d'Analytics (vous n'en aurez pas besoin pour cette application).

Pour en savoir plus sur les projets Firebase, consultez Comprendre les projets Firebase.

Passer à la formule Blaze

Pour utiliser Cloud Functions for Firebase, vous devez mettre à niveau votre projet Firebase vers la formule Blaze, ce qui signifie que vous devez associer un compte de facturation Google Cloud à votre projet. Pour cela, vous devez fournir une carte de crédit ou un autre mode de paiement.

Tous les projets Firebase, y compris ceux du forfait Blaze, ont toujours accès aux quotas d'utilisation sans frais pour Cloud Functions. Les étapes décrites dans cet atelier de programmation respecteront les limites d'utilisation sans frais. Cependant, vous constaterez des frais minimes ( environ 0,03 $) de Cloud Storage, utilisé pour héberger vos images de compilation Cloud Functions.

4. Installer la CLI Firebase

La CLI (interface de ligne de commande) Firebase vous permet de déployer vos fonctions Cloud.

Il existe plusieurs options d'installation de la CLI Firebase en fonction de votre système d'exploitation et de votre cas d'utilisation. Les étapes suivantes décrivent l'option la plus courante si vous utilisez également Cloud Functions.

  1. Assurez-vous d'avoir installé npm, qui est généralement fourni avec Node.js.
  2. Installez ou mettez à niveau la CLI en exécutant la commande npm suivante:
$ npm -g install firebase-tools
  1. Vérifiez que la CLI a été installée correctement en exécutant la commande suivante :
$ firebase --version

Assurez-vous que la version de la CLI Firebase est la version 9.0.0 ou une version ultérieure afin de disposer des dernières fonctionnalités requises pour Cloud Functions. Si ce n'est pas le cas, exécutez npm install -g firebase-tools pour effectuer la mise à niveau, comme indiqué ci-dessus.

  1. Autorisez la CLI Firebase en exécutant la commande suivante:
$ firebase login
  1. Dans le répertoire spelling-functions-start, configurez la CLI Firebase pour qu'elle utilise votre projet Firebase. Exécutez la commande suivante, sélectionnez l'ID de votre projet, puis suivez les instructions. Lorsque vous y êtes invité, vous pouvez choisir n'importe quel alias, par exemple codelab.
$ firebase use --add

5. Répertoire des fonctions

Vous allez maintenant ajouter une fonctionnalité à l'aide du SDK Firebase pour Cloud Functions afin de créer le backend du jeu, Orthographe.

Cloud Functions vous permet d'exécuter du code dans le cloud sans avoir à configurer de serveur. Cet atelier de programmation vous explique comment créer des fonctions qui réagissent aux événements Firebase Authentication, Cloud Storage et Firebase Realtime Database. Commençons par l'authentification.

Par défaut, le SDK Firebase pour Cloud Functions stocke le code Functions dans le répertoire functions. Pour vous faciliter la tâche, nous avons déjà créé le fichier functions/index.js dans lequel votre code sera placé. N'hésitez pas à inspecter le répertoire functions avant de continuer.

$ cd functions
$ ls

Votre code de fonctions est également une application Node.js. Il a donc besoin d'un package.json qui fournit des informations sur votre application et liste les dépendances.

Si vous ne connaissez pas Node.js, il peut être utile d'en apprendre davantage à son sujet avant de poursuivre l'atelier de programmation.

Le fichier package.json répertorie déjà deux dépendances obligatoires: le SDK Firebase pour Cloud Functions et le SDK Admin Firebase. Pour les installer localement, exécutez npm install à partir du répertoire functions:

$ npm install

Examinons maintenant le fichier index.js :

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */
// TODO(DEVELOPER): Import the Cloud Functions for Firebase and Firebase Admin modules here. Also import the Actions SDK here.
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Vous commencerez par importer les modules requis, puis vous écrirez quatre fonctions à la place de TODO. Passez à l'étape suivante de l'atelier de programmation pour importer les modules.

6. Importer les modules requis

Cet atelier de programmation nécessite trois modules.

  • Le module firebase-functions nous permet d'écrire les déclencheurs de nos fonctions Cloud
  • Le module firebase-admin nous permet d'utiliser la plate-forme Firebase sur un serveur avec un accès administrateur, par exemple pour écrire dans Cloud Firestore.
  • La bibliothèque de traitement Node.js du SDK Actions traite les gestionnaires du SDK Actions pour l'Assistant Google.
  1. Installez le SDK Actions en exécutant la commande npm suivante :
$ npm install @assistant/conversation
  1. Dans le fichier index.js, remplacez le premier TODO par ce qui suit.

Ces modifications importent chacun des modules requis.

De plus, le SDK Admin Firebase peut être configuré automatiquement lorsqu'il est déployé dans un environnement Cloud Functions ou un autre conteneur Google Cloud. C'est ce qui se passe lorsque nous appelons admin.initializeApp(); dans les modifications ci-dessous.

index.js

/**
 * Copyright 2021 Google Inc. All Rights Reserved.
 * ...
 */

// Import the Actions SDK
const {conversation} = require('@assistant/conversation');
const https = require('https');
const app = conversation();
const cors = require('cors')({origin: true});

// Import the Firebase SDK for Cloud Functions.
const functions = require('firebase-functions');
// Import and initialize the Firebase Admin SDK.
const admin = require('firebase-admin');
admin.initializeApp();
// To access Cloud Firestore
const db = admin.firestore();
// TODO(DEVELOPER): Write the getWordDetailsFromDictionaryAPI function here.
// TODO(DEVELOPER): Write the createSpellingPracticeWord function here.
// TODO(DEVELOPER): Write the shuffleWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWordList function here.
// TODO(DEVELOPER): Write the app Handle getSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle repeatSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle definitionOfSpellingWord function here.
// TODO(DEVELOPER): Write the app Handle verifySpellingWord function here.

Ajoutons maintenant une logique métier à l'aide de fonctions pour prendre en charge les actions de l'Assistant.

7. Créer des fonctions

Obtenir les définitions des mots et les écrire dans Cloud Firestore

Vous utiliserez l'API publique dictionaryapi.dev pour obtenir les définitions des mots.

Dans le fichier index.js, remplacez l'élément TODO pour getWordDetailsFromDictionaryAPI par ce qui suit:

index.js

// Retrieves word definition and audio pronunciation from api.dictionaryapi.dev service
// Function uses service provided by https://dictionaryapi.dev/
async function getWordDetailsFromDictionaryAPI(word) {
  let responseData="";
  let req = https.request({
    host: 'api.dictionaryapi.dev',
    port: 443,
    path:'/api/v2/entries/en/' + word,
    method:'GET'
  }, (res) => {
    res.setEncoding('utf8');
    res.on('data', d => {
        responseData+=d;
    })
    res.on('end',function(){
        let object = JSON.parse(responseData)
        const wordListRef = db.collection('wordlist');
        wordListRef.doc(object[0].word).set(
          object[0]
        );
       return responseData;
     });
  });
  req.end();
}

Ajouter un déclencheur Cloud Firestore

Vous allez maintenant créer une fonction Cloud qui se déclenche chaque fois qu'un document est créé dans Cloud Firestore. Elle appelle l'API dictionaryapi.dev pour obtenir les définitions des mots via la fonction getWordDetailsFromDictionaryAPI que nous avons écrite juste au-dessus.

Dans le fichier index.js, remplacez l'élément TODO pour createSpellingPracticeWord par ce qui suit:

index.js

// Déclencheur Firestore qui récupère les définitions de mots via getWordDetailsFromDictionaryAPI pour chaque nouveau document Firestore

exports.createSpellingPracticeWord = functions.firestore
  .document('wordlist/{word}')
  .onCreate((snap, context) => {
    const newValue = snap.data();
    const word = newValue.word;
    getWordDetailsFromDictionaryAPI(word);
});

Obtenir une liste de mots pour le jeu

Vous pouvez écrire une fonction Cloud qui récupère une liste de mots d'entraînement orthographique à partir de Cloud Firestore pour l'Assistant. Pour cela, nous utilisons le gestionnaire d'applications.

Dans le fichier index.js, remplacez la tâche TODO pour getSpellingWordList par ce qui suit.

Ajouter cette fonction à l'objet spécial app.handle permet de la rendre accessible depuis l'Assistant.

index.js

// Store the list of spelling words in Assistant session
app.handle('getSpellingWordList', conv => {
  const wordListRef = db.collection('wordlist').limit(50);
  const snapshot = wordListRef;

  if (snapshot.empty) {
    console.log('No matching documents.');
    return;
  }
  VocabularyList = []

  return snapshot.get().then(snapshot => {
    snapshot.forEach(doc => {
      if (doc.data().word) {
          let definition = 'unknown';
          let audio = 'unknown';
          try {
            if(doc.data().hasOwnProperty('meanings')) {
              if(doc.data().meanings[0].hasOwnProperty('definitions')) {
                  definition = doc.data().meanings[0].definitions[0].definition;
              }
            }
            if(doc.data().hasOwnProperty('phonetics')) {
              if(doc.data().phonetics.length > 0)
                audio = doc.data().phonetics[0].audio;
            }
          } catch (error) {
            console.log(error);
          }

          let obj = {
            word: doc.data().word,
            answer: doc.data().word.split("").join(" "),
            definition: definition,
            audio: audio
          }
          VocabularyList.push(obj);
      }
      // Shuffle the array
      let currentIndex = VocabularyList.length, temporaryValue, randomIndex;
      while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = VocabularyList[currentIndex];
        VocabularyList[currentIndex] = VocabularyList[randomIndex];
        VocabularyList[randomIndex] = temporaryValue;
      }
      conv.session.params.vocabWord = VocabularyList;
      conv.session.params.vocabWordIndex = 0;
    });
  });
})

Obtenir un mot de la session avec l'Assistant

Vous pouvez écrire une fonction Cloud qui renvoie le mot suivant dans la liste de mots.

Dans le fichier index.js, remplacez l'élément TODO pour getSpellingWord par ce qui suit:

index.js

// Returns a spelling practice word to Google Assistant and uses Speech Synthesis Markup Language (SSML) to format the response
app.handle('getSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    conv.session.params.vocabWordIndex+=1;
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word.</audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Permettre au jeu de répéter le mot

Vous pouvez écrire une fonction Cloud qui répète le mot actuel pour le jeu.

Dans le fichier index.js, remplacez la tâche TODO pour repeatSpellingWord par ce qui suit :

index.js

// Returns current spelling word
app.handle('repeatSpellingWord',  conv => {
  if (!conv.session.params.vocabWord.empty) {
    const ssml = '<speak>' +
    '<audio src="'+ conv.session.params.vocabWord[conv.session.params.vocabWordIndex].audio +'">Use phonetics to spell the word. </audio> ' +
    '</speak>';
    conv.add(ssml);
  }
  else
    conv.add('Great job! You completed the Spelling practice');
});

Obtenir la définition du mot

Vous pouvez écrire une fonction Cloud qui fournit la définition du mot actuel pour le jeu.

Dans le fichier index.js, remplacez la tâche TODO pour definitionOfSpellingWord par ce qui suit :

index.js

// Returns spelling word definition from Assistant session parameter
app.handle('definitionOfSpellingWord',  conv => {
  conv.add( 'It means ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].definition);
});

Vérifier l'orthographe de la réponse de l'utilisateur

Vous pouvez écrire une fonction Cloud qui vérifie la réponse de l'utilisateur sur l'orthographe du mot actuel du jeu.

Dans le fichier index.js, remplacez la tâche TODO pour verifySpellingWord par ce qui suit :

index.js

// Verifies user spelling response
app.handle('verifySpellingWord', conv => {
  try {
    userResponse = conv.intent.params.userresponse.resolved.join("");
    if (userResponse.toLowerCase() === conv.session.params.vocabWord[conv.session.params.vocabWordIndex].word.toLowerCase()) {
      conv.add('You are correct. Say next to continue.');
    }
    else {
      conv.add('Sorry, wrong answer. The correct answer is ' + conv.session.params.vocabWord[conv.session.params.vocabWordIndex].answer + ' . Say next to continue.');
    }
  } catch (error) {
    conv.add('Sorry. I did not understand your response' );
  }
});
exports.ActionsOnGoogleFulfillment = functions.https.onRequest(app);

Déployer toutes vos fonctions

Vos fonctions Cloud ne seront actives qu'après avoir été déployées dans Firebase.

À la racine du répertoire spelling-functions-start, exécutez la commande suivante:

$ firebase deploy --only functions

La console doit afficher le résultat suivant :

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
⚠  functions: missing necessary APIs. Enabling now...
i  env: ensuring necessary APIs are enabled...
⚠  env: missing necessary APIs. Enabling now...
i  functions: waiting for APIs to activate...
i  env: waiting for APIs to activate...
✔  env: all necessary APIs are enabled
✔  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...
i  functions: packaged functions (X.XX KB) for uploading
✔  functions: functions folder uploaded successfully
i  starting release process (may take several minutes)...
i  functions: creating function createSpellingPracticeWord(us-central1)...
✔  functions[createSpellingPracticeWord(us-central1)]: Successful create operation.
i  functions: creating function ActionsOnGoogleFulfillment(us-central1)...
✔  functions[ActionsOnGoogleFulfillment(us-central1)]: Successful create operation.

✔  Deploy complete!
Project Console: https://console.firebase.google.com/project/spelling-practice-1234/overview

Notez l'URL du point de terminaison HTTP de la fonction ActionsOnGoogleFulfillment pour une utilisation ultérieure. Pour obtenir le point de terminaison, ouvrez la console Firebase, puis cliquez sur le projet spelling-practice. Ouvrez le tableau de bord Functions pour afficher le point de terminaison de la fonction.

332cb0437411a242.png

Vous avez ajouté toutes les fonctions requises. Passons maintenant à la configuration de Cloud Firestore.

8. Activer Cloud Firestore

Vous devez activer Cloud Firestore.

Dans la section Build (Créer) de la console Firebase, cliquez sur Firestore. Cliquez ensuite sur Créer une base de données.

5c0b4abf4410ffcf.png

L'accès aux données dans Cloud Firestore est contrôlé par des règles de sécurité. Pour commencer, vous devez définir quelques règles de base sur les données. Cliquez sur Firestore, puis dans l'onglet Rules (Règles) de la console Firebase, ajoutez les règles suivantes, puis cliquez sur Publish (Publier).

Les règles suivantes limitent l'accès aux données aux utilisateurs connectés, ce qui empêche les utilisateurs non authentifiés de lire ou d'écrire.

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      //
      // WARNING: These rules are insecure! We will replace them with
      // more secure rules later in the codelab
      //
      allow read, write: if request.auth != null;
    }
  }
}

9. Ajouter des données de mots d'orthographe à Cloud Firestore

Au cours de cette étape, vous allez écrire des données de mots d'orthographe dans Cloud Firestore afin de pouvoir générer une liste de mots pour l'Assistant (et le jeu).

Les données Cloud Firestore sont structurées en collections, documents, champs et sous-collections. Chaque mot du jeu sera stocké en tant que document dans une collection de premier niveau appelée wordlist. Pour chaque nouveau document de la collection Firestore, la fonction createSpellingPracticeWord est déclenchée pour obtenir les détails du mot auprès du service de l'API Dictionary.

Créer une collection Cloud Firestore

  1. Dans la console Firebase, accédez à la section Cloud Firestore.
  2. Cliquez sur + Commencer une collection.
  3. Dans la zone de texte ID de collection, saisissez wordlist, puis cliquez sur Suivant.

1b4ccadb90f52f02.png

Nous allons ensuite créer un document pour un mot : accord

  1. Dans la zone de texte ID du document, saisissez agreement.
  2. Dans la zone de texte Champ, saisissez word, puis dans la zone de texte Valeur, saisissez agreement.
  3. Cliquez sur Enregistrer.

379037e011e8511e.png

Lorsque vous ajoutez ce document à Cloud Firestore, votre fonction createSpellingPracticeWord est déclenchée pour récupérer les informations de définition du mot. Ajoutez d'autres mots (par exemple : "émerveillement", "voiture", "vrai", "raconter", "mieux", "aller-retour", etc.) en créant un document pour chacun d'eux.

10. Configurer l'Assistant Google

Les sections suivantes expliquent comment configurer votre environnement de développement pour l'Assistant Google et créer votre projet Actions.

Vérifier vos paramètres d'autorisation Google

Pour tester l'action que vous créez dans cet atelier de programmation, vous devez activer les autorisations nécessaires pour que le simulateur puisse accéder à votre action. Pour activer les autorisations, procédez comme suit :

  1. Accédez à la page Commandes relatives à l'activité.
  2. Connectez-vous à votre compte Google (si ce n'est pas déjà fait).
  3. Activez les autorisations suivantes:
  • Activité sur le Web et les applications
  • Sous Web et Activité dans les applications, cochez la case Inclure l'historique Chrome et l'activité liée aux sites, aux applications et aux appareils qui utilisent les services Google.

c988e1e639e6d6e1.png

Créer un projet Actions

Votre projet Actions est un conteneur pour votre action. Pour créer votre projet Actions pour cet atelier de programmation, procédez comme suit:

  1. Ouvrez la console Actions.
  2. Cliquez sur Nouveau projet.
  3. Accepter les conditions d'utilisation

b174d45710b8086b.png

  1. Saisissez ou sélectionnez le fichier spelling-practice-codelab que vous avez créé à l'aide de la console Firebase. Ce nom est à usage interne. Vous pourrez par la suite définir un nom externe pour votre projet.)

a2951de5d2001fac.png

  1. Cliquez sur Importer le projet.
  2. Sur l'écran What type of Action do you want to build? (Quel type d'action voulez-vous créer ?), sélectionnez la fiche Custom (Personnalisée).
  3. Cliquez sur Suivant.
  4. Sélectionnez la fiche Projet vide.
  5. Cliquez sur Start building (Commencer).
  6. Saisissez Exercices d'orthographe comme nom à afficher, puis cliquez sur "Enregistrer".

L'utilisateur appelle votre action pour démarrer une conversation. Par exemple, les utilisateurs peuvent appeler votre action en disant Hey Google, parle à Exercice d'orthographe, où Exercice d'orthographe est le nom à afficher.

Votre action doit avoir un nom à afficher si vous souhaitez la déployer en production. Toutefois, pour tester votre action, vous n'avez pas besoin de définir le nom à afficher. À la place, vous pouvez utiliser l'expression Talk to my test app (Parler à mon application de test) dans le simulateur pour appeler votre action.

Configurer le fulfillment

Vous devez connecter à l'Assistant les gestionnaires d'événements des fonctions Cloud que vous avez écrites et déployées précédemment dans cet atelier de programmation.

Pour configurer votre traitement, procédez comme suit :

  1. Cliquez sur Webhook dans le menu de navigation latéral.
  2. Sélectionnez Point de terminaison HTTPS comme option de traitement :

d523bf003e96e66f.png

  1. Saisissez l'URL du point de terminaison de votre fonction dans le champ de texte Point de terminaison HTTPs, puis cliquez sur Enregistrer.

Be53e2cd0d914d54.png

Dans la section suivante, vous allez personnaliser l'invite associée à votre appel principal dans la console Actions.

Configurer l'appel principal

Vous devez modifier l'appel principal pour définir ce qui se passe après qu'un utilisateur a appelé votre action.

Par défaut, Actions Builder fournit une invite générique au lancement de l'appel (Commencer à créer votre action en définissant l'appel principal).

Pour modifier l'invite que votre action renvoie à l'utilisateur quand il appelle votre action :

  1. Dans le menu de navigation, cliquez sur Main invocation (Appel principal).

9ff088c04c995cde.png

  1. Cochez Call your webhook et ajoutez le nom du gestionnaire d'événements getSpellingWordList dans la zone de texte.
  2. Dans l'éditeur de code, remplacez le texte du champ speech par le message de bienvenue suivant : Welcome to Spelling Practice

Remarque : Vous pouvez modifier vos invites au format YAML ou JSON.

  1. Cliquez sur Enregistrer.

Tester l'appel principal dans le simulateur

La console Actions fournit un outil Web appelé simulateur pour tester votre action. L'interface simule des appareils et leurs paramètres. Vous pouvez ainsi discuter avec votre action comme si elle était exécutée sur un écran connecté, un téléphone, une enceinte ou KaiOS.

Pour tester l'appel principal de votre action dans le simulateur, procédez comme suit:

  1. Dans la barre de navigation supérieure, cliquez sur Test (Tester) pour accéder au simulateur.
  2. Pour appeler votre action dans le simulateur, saisissez Talk to Spelling Practice dans le champ de saisie en haut à gauche, puis appuyez sur Entrée sur votre clavier.

651fc8da1ac9aa0a.png

Lorsque vous déclenchez l'appel principal de votre action, l'Assistant répond par votre message de bienvenue personnalisé. À ce stade, la conversation se termine une fois que l'Assistant a communiqué ce message.

Afficher les journaux des événements

Dans l'onglet Test, le panneau de droite affiche les journaux des événements, qui affichent l'historique des conversations sous forme de journaux d'événements. Chaque journal des événements affiche les événements qui se produisent au cours de ce tour de conversation. Pour afficher le journal des événements, cliquez sur l'icône grise située avant l'événement.

Un seul journal des événements a été créé pour votre action. Il comporte à la fois l'entrée utilisateur ("Talk to Spelling Practice") et la réponse de votre action. La capture d'écran suivante montre le journal des événements de votre action:

a6fb192f94426824.png

11. Créer la conversation pour l'exercice de l'orthographe

Maintenant que vous avez défini ce qui se passe après qu'un utilisateur a appelé votre action, vous pouvez créer le reste de la conversation. Exercice d'orthographe comporte quatre scènes, et vous devez activer chaque scène avant qu'elle puisse être exécutée. La méthode la plus courante pour activer une scène consiste à configurer votre action de sorte que, quand une correspondance est établie entre un utilisateur et un intent utilisateur dans une scène, cet intent déclenche la transition vers une autre scène et l'active.

Ajouter une transition entre l'appel principal et la scène de démarrage

Dans cette section, vous allez créer une scène appelée Start, qui envoie une invite à l'utilisateur pour lui demander s'il souhaite commencer à jouer à Entraînement orthographique. Vous allez également ajouter une transition entre l'appel principal et la nouvelle scène Start.

Pour créer cette scène et y ajouter une transition, procédez comme suit:

  1. Cliquez sur Develop (Développer) dans la barre de navigation supérieure. Cliquez ensuite sur Main invocation (Appel principal) dans le panneau de navigation de gauche.
  2. Dans la section Transition à droite, cliquez sur le menu déroulant, puis saisissez Start dans le champ de texte.

Dd4f1807a57f794d.png

  1. Cliquez sur Ajouter. Vous créez ainsi une scène intitulée Start, qui indique à l'action de passer à la scène Start après que cette action a envoyé l'invite de bienvenue à l'utilisateur.
  2. Cliquez sur Scenes (Scènes) dans le panneau de navigation de gauche pour afficher la liste des scènes.
  3. Sous Scenes (Scènes), cliquez sur Start (Démarrer) pour afficher la scène Start.
  4. Cliquez sur + dans la section On enter (Lors de l'entrée) de la scène Start.
  5. Cochez la case Send prompts (Envoyer des invites).
  6. Remplacez la phrase dans le champ speech (Enter the response that users will see or hear...) par une question à poser à l'utilisateur: Use phonetic alphabet to spell the word. For example alpha for a, bravo for b, charlie for c etc. Do you want to continue?

Les chips de suggestion proposent à l'utilisateur des suggestions cliquables que votre action traite en tant qu'entrée utilisateur. Dans cette section, vous allez ajouter des chips de suggestion qui s'affichent sous l'invite que vous venez de configurer (Do you want to play).

Spelling Practice

?) pour prendre en charge les utilisateurs sur les appareils dotés d'écrans.

Pour ajouter des chips de suggestion à l'invite de la scène Start, procédez comme suit:

  1. Dans la scène Start, cliquez sur les suggestions sous l'éditeur de code. Un seul chip de suggestion est alors ajouté.
  2. Dans le champ title, remplacez Suggested Response par 'Yes'.
  3. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'No' et 'Help with Phonetics'. Le code doit ressembler à l'extrait de code suivant:
  4. Cliquez sur Enregistrer.

5ff2ecdc56801b91.png

Tester votre action dans le simulateur

À ce stade, votre action doit passer de l'appel principal à la scène Démarrer, puis demander à l'utilisateur s'il souhaite continuer. Les chips de suggestion devraient également apparaître sur l'écran de simulation.

Pour tester votre action dans le simulateur :

  1. Dans la barre de navigation, cliquez sur Test (Tester) pour accéder au simulateur.
  2. Pour tester votre action dans le simulateur, saisissez Talk to Spelling Practice dans le champ de saisie.
  3. Appuyez sur Entrée. Votre action doit répondre par l'invite Main invocation et l'invite de scène Start ajoutée, "Welcome to Spelling Practice. Écrivez le mot en utilisant l'alphabet phonétique. (par exemple, "alpha" pour "a", "bravo" pour "b", "charlie" pour "c", etc. Voulez-vous continuer ?")

La capture d'écran suivante illustre cette interaction :

338c9570b02a618e.png

  1. Cliquez sur le chip de suggestion Yes, No ou Help with Phonetics pour répondre à l'invite. Vous pouvez également dire Oui, Non ou Aide en phonétique, ou saisir Yes, No ou Help with Phonetics dans le champ Entrée.

Lorsque vous répondez à l'invite, votre action renvoie le message indiquant qu'elle ne comprend pas votre entrée: "Désolé, je n'ai pas compris. Pouvez-vous réessayer ?" Comme vous n'avez pas encore configuré votre action pour qu'elle comprenne et réponde à l'entrée Yes ou No, elle établit une correspondance entre votre entrée et un intent NO_MATCH.

Par défaut, l'intent système NO_MATCH fournit des réponses génériques. Toutefois, vous pouvez personnaliser ces réponses pour indiquer à l'utilisateur que vous n'avez pas compris son entrée. L'Assistant met fin à la conversation de l'utilisateur avec votre action s'il ne parvient pas à faire correspondre l'entrée utilisateur trois fois.

Ajouter des intents phonétiques et "aucun"

Maintenant que l'utilisateur peut répondre à la question que pose votre action, vous pouvez configurer votre action pour qu'elle comprenne les réponses de l'utilisateur (Yes ou No ou Help with Phonetics). Dans les sections suivantes, vous allez créer des intents utilisateur qui sont mis en correspondance lorsque l'utilisateur dit Oui, Non ou "Aide phonétique". et ajoutez ces intents à la scène Start. Nous allons utiliser l'intent système yes et créer d'autres intents.

Créer l'intent no

Vous devez maintenant créer l'intent no pour comprendre l'entrée utilisateur et y répondre si l'utilisateur ne veut pas jouer au jeu. Pour créer cet intent, procédez comme suit:

  1. Dans le menu de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur Intents personnalisés dans le menu de navigation pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent no et appuyez sur Entrée.
  4. Cliquez sur no (non) pour ouvrir la page de l'intent no.
  5. Dans la section Add training phrases (Ajouter des phrases d'entraînement), cliquez dans la zone de texte Enter Phrase (Saisir une expression) et saisissez les expressions suivantes:
  • No
  • N
  • I don't want
  • nope

98b0c9a7b67ea9b9.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent no à la scène Start

Désormais, l'action peut comprendre quand un utilisateur exprime non ou quelque chose de semblable à non, comme non. Vous devez ajouter l'intent utilisateur no à la scène Start, car l'utilisateur répond à l'invite Start ("Bienvenue dans les exercices d'orthographe. Utilisez l'alphabet phonétique pour épeler le mot. Par exemple, alpha pour a, bravo pour b, charlie pour c, etc. Voulez-vous continuer ?").

Pour ajouter cet intent à la scène Start, procédez comme suit:

  1. Cliquez sur la scène Start (Démarrer) dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Start à côté de "Gestion des intents utilisateur".
  3. Dans la section Intent, sélectionnez no (non) dans la liste déroulante.

51f752e78c8b4942.png

  1. Cliquez sur Send prompts (Envoyer des invites) et remplacez le contenu du champ speech par le texte suivant : Good Bye.

Le code dans l'éditeur doit ressembler à l'extrait ci-dessous :

candidates:
  - first_simple:
      variants:
        - speech: >-
             Goodbye.
  1. Dans la section Transition, sélectionnez End conversation (Terminer la conversation) dans le menu déroulant.
  2. Cliquez sur Enregistrer.

Tester l'intent no dans le simulateur

À ce stade, votre action comprend quand l'utilisateur ne veut pas jouer au jeu et renvoie la réponse appropriée.

Pour tester cet intent dans le simulateur, procédez comme suit:

  1. Dans la barre de navigation, cliquez sur Test.
  2. Saisissez Talk to Spelling Practice dans le champ "Input" (Entrée), puis appuyez sur Enter.
  3. Saisissez No dans le champ Input (Entrée), puis appuyez sur Entrée. Vous pouvez également cliquer sur le chip "Aucune suggestion".

7727a456b522f31b.png

Ajouter l'intent système YES à la scène Start

Nous allons maintenant ajouter l'intent SYSTEM "YES" à la scène Start, car l'utilisateur répond oui à l'invite Start ("Bienvenue dans les exercices d'orthographe. Utilisez l'alphabet phonétique pour épeler le mot. Par exemple, alpha pour a, bravo pour b, charlie pour c, etc. Voulez-vous continuer ?").

Pour ajouter cet intent utilisateur à la scène Start, procédez comme suit :

  1. Cliquez sur la scène Start (Démarrer) dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Start à côté de User intent management (Gestion des intents utilisateur).
  3. Sous "All System Intents" (Tous les intents système), sélectionnez YES (OUI) dans la liste déroulante de l'intent.

f6cbe789cde49e8f.png

  1. Cliquez sur Call your webhook (Appeler votre webhook) et remplacez le contenu du champ de texte event handler par la fonction que vous avez créée précédemment : getSpellingWordList.
  2. Dans la section Transition, cliquez sur la liste déroulante et sélectionnez End conversation (Terminer la conversation).
  3. Cliquez sur Enregistrer.

Tester l'intent YES dans le simulateur

À ce stade, votre action comprend quand l'utilisateur veut jouer au jeu et renvoie la réponse appropriée.

Pour tester cet intent dans le simulateur, procédez comme suit:

  1. Dans la barre de navigation, cliquez sur Test (Tester).
  2. Pour tester votre action dans le simulateur, saisissez Talk to Spelling Practice dans le champ Input (Entrée), puis appuyez sur Entrée.
  3. Saisissez Yes dans le champ Input (Entrée), puis appuyez sur Entrée. Vous pouvez également cliquer sur le chip de suggestion Yes.

Votre action récupère la liste de tous les mots d'exercice d'orthographe et les stocke dans la session. Elle met ensuite fin à la session, car vous avez sélectionné la transition End conversation pour l'intent YES.

Créer l'intent Phonetics

Pour créer l'intent Phonetics :

  1. Dans le menu de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur Intents personnalisés dans le menu de navigation pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent phonetics, puis appuyez sur Enter.
  4. Cliquez sur l'intent phonetics pour ouvrir la page de l'intent phonetics.
  5. Dans la section "Add training phrases" (Ajouter des phrases d'entraînement), cliquez sur la zone de texte Enter Phrase (Saisir une expression) et saisissez les expressions suivantes:
  • how do I spell words
  • phonetics
  • help me with phonetics
  • phonetic alphabet

1455bdfca8dae46.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent phonetics à la scène Start

Votre action peut maintenant comprendre quand un utilisateur formule l'intent phonetics. Vous pouvez ajouter l'intent utilisateur phonetics à la scène Start, car l'utilisateur répond à l'invite Start ("Bienvenue dans les exercices d'orthographe. Utilisez l'alphabet phonétique pour épeler le mot. Par exemple, alpha pour a, bravo pour b, charlie pour c, etc. Voulez-vous continuer ?").

Pour ajouter cet intent utilisateur à la scène Start, procédez comme suit:

  1. Dans le panneau de navigation, cliquez sur la scène Start (Démarrer).
  2. Cliquez sur le signe + (plus) dans la scène Start à côté de "Gestion des intents utilisateur".
  3. Sélectionnez phonétiques dans la liste déroulante de l'intent.

67ee2e08000b2aee.png

  1. Dans la section Transition, cliquez sur le menu déroulant, puis sélectionnez End conversation (Terminer la conversation).
  2. Cliquez sur Enregistrer.

Transition de la scène de début à la scène orthographique

Dans cette section, vous allez créer une scène intitulée Spelling (Écrire), qui invite l'utilisateur à épeler le mot à l'aide de l'alphabet phonétique.

Pour créer cette scène et y ajouter une transition, procédez comme suit:

  1. Dans la barre de navigation en haut de l'écran, cliquez sur Develop (Développer). Dans le panneau de navigation de gauche, cliquez sur la scène Start (Démarrer).
  2. Dans la section Gestion des intents utilisateur, cliquez sur when actions.intent.YES is matched. À droite, dans la section Transition, cliquez sur le menu déroulant, puis saisissez Spelling dans le champ de texte.
  3. Cliquez sur Ajouter. Vous créez ainsi une scène intitulée Spelling, qui indique à l'action de passer à la scène Spelling après la mise en correspondance avec l'intent OUI.
  4. Développez Scènes dans le panneau de navigation de gauche pour afficher la liste des scènes.
  5. Sous Scenes (Scènes), cliquez sur "Spelling" (Orthographe) pour afficher la scène Spelling.
  6. Dans la section On enter (Lors de l'entrée) de la scène Spelling, cliquez sur +.
  7. Cliquez sur Call your webhook (Appeler votre webhook), puis saisissez getSpellingWord dans la zone de texte du gestionnaire d'événements.
  8. Sélectionnez Send invites (Envoyer des invites).
  9. Remplacez la phrase du champ speech (Enter the response that users will see or hear...) par {}. L'invite réelle sera renseignée par le webhook.

Les chips de suggestion proposent à l'utilisateur des suggestions cliquables que votre action traite en tant qu'entrée utilisateur.

Pour ajouter des chips de suggestion à l'invite de la scène Spelling :

  1. Dans la scène Spelling, cliquez sur les suggestions sous l'éditeur de code. Cette action ajoute trois chips de suggestion.
  2. Dans le champ title, remplacez Suggested Response par 'Repeat'.
  3. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'Skip'.
  4. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'Quit'. Votre code doit ressembler à l'extrait suivant :
  5. Cliquez sur Enregistrer.
suggestions:
      - title: 'Repeat'
      - title: 'Skip'
      - title: 'Quit'

E1d437f714ea1539.png

Créer l'intent Repeat

Pour créer l'intent repeat, procédez comme suit:

  1. Dans le menu de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur Intents personnalisés dans le menu de navigation pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent repeat, puis appuyez sur Enter.
  4. Cliquez sur l'intent repeat pour ouvrir la page de l'intent definition.
  5. Dans la section Add training phrases (Ajouter des expressions d'entraînement), cliquez sur la zone de texte Enter Phrase (Saisissez une expression), puis saisissez les expressions suivantes :
  • one more time please
  • say the word again
  • repeat the word
  • tell me again
  • repeat

e61f0b9f80510bc9.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent repeat à la scène Spelling

Désormais, l'action peut comprendre quand un utilisateur exprime un intent répété. Vous pouvez ajouter l'intent utilisateur repeat à la scène Spelling, car l'utilisateur répond à l'invite Spelling ("Écris le mot à l'aide de l'alphabet phonétique").

Pour ajouter cet intent utilisateur à la scène Spelling, procédez comme suit :

  1. Cliquez sur la scène Orthographe dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Spelling à côté de User intent handling (Gestion des intents utilisateur).
  3. Dans le menu déroulant des intents, sélectionnez repeat (répéter).

5cfd623b25bedbed.png

  1. Cochez la case Call your webhook (Appeler votre webhook), puis saisissez repeatSpellingWord dans la zone de texte du gestionnaire d'événements pour obtenir la définition du mot.
  2. Cochez la case Send prompt (Envoyer des invites).
  3. Remplacez la phrase du champ speech (Enter the response that users will see or hear...) par "'. L'invite réelle sera renseignée par le webhook.

Ajout de chips de suggestion à "Lorsque la répétition correspond"

  1. Dans Lorsque la répétition est identique Sous "User Intent management" (Gestion des intents utilisateur), cliquez sur Suggestions sous l'éditeur de code. Cette action ajoute trois chips de suggestion.
  2. Dans le champ title, remplacez Suggested Response par 'Skip'.
  3. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'Quit'.Votre code devrait ressembler à l'extrait suivant:
suggestions:
      - title: 'Skip'
      - title: 'Quit'

Ab40e4b0c432b97c.png

  1. Cliquez sur Enregistrer.

Créer un intent definition

Pour créer l'intent definition :

  1. Dans le menu de navigation, cliquez sur Develop (Développer).
  2. Cliquez sur Intents personnalisés dans le menu de navigation pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent definition, puis appuyez sur Enter.
  4. Cliquez sur l'intent definition pour ouvrir la page de l'intent definition.
  5. Dans la section Add training phrases (Ajouter des phrases d'entraînement), cliquez sur la zone de texte Enter Phrase (Saisir une expression) et saisissez les expressions suivantes:
  • I would like to know the definition
  • tell me the definition
  • what does it mean
  • meaning
  • definition
  • what is the definition?

C1b88a9c0b1ac082.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent definition à la scène Spelling

Désormais, l'action peut comprendre quand un utilisateur exprime un intent "définition". Vous pouvez ajouter l'intent utilisateur definition à la scène Spelling, car l'utilisateur répond à l'invite Spelling ("Épeler le mot en alphabet phonétique").

Pour ajouter cet intent utilisateur à la scène Spelling, procédez comme suit:

  1. Cliquez sur la scène Orthographe dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Spelling à côté de User intent management (Gestion des intents utilisateur).
  3. Sélectionnez definition (définition) dans la liste déroulante de l'intent.

646bdcac3ad3eb0c.png

  1. Cochez la case Appeler votre webhook, puis saisissez definitionOfSpellingWord dans la zone de texte du gestionnaire d'événements pour obtenir la définition du mot.
  2. Cochez la case Send prompt (Envoyer des invites).
  3. Remplacez la phrase du champ speech (Enter the response that users will see or hear...) par "`". L'invite réelle sera renseignée par le webhook.

Ajouter des chips de suggestion à la réponse du webhook

  1. Dans la scène Start, cliquez sur suggestions sous l'éditeur de code. Cette action ajoute trois chips de suggestion.
  2. Dans le champ title, remplacez Suggested Response par 'Skip'.
  3. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'Quit'. Votre code doit ressembler à l'extrait suivant :
suggestions:
      - title: 'Skip'
      - title: 'Quit'

25227545839d933f.png

  1. Cliquez sur Enregistrer.

Créer l'intent skip

Pour créer l'intent skip :

  1. Dans le menu de navigation, cliquez sur Develop (Développer).
  2. Dans le menu de navigation, cliquez sur Intents pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent skip, puis appuyez sur Enter.
  4. Cliquez sur l'intent skip pour ouvrir la page de l'intent skip.
  5. Dans la section Add training phrases (Ajouter des phrases d'entraînement), cliquez sur la zone de texte Enter Phrase (Saisir une expression) et saisissez les expressions suivantes:
  • next word
  • go next
  • next
  • skip
  • skip word

d1c4908a3d7882f8.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent Skip à la scène Spelling

Votre action peut maintenant comprendre quand un utilisateur formule l'intent Skip (Ignorer). Vous pouvez ajouter l'intent utilisateur skip à la scène Spelling, car l'utilisateur répond à l'invite Spelling ("Écris le mot à l'aide de l'alphabet phonétique").

Pour ajouter cet intent utilisateur à la scène Spelling, procédez comme suit:

  1. Cliquez sur la scène Orthographe dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Spelling à côté de User intent handling (Gestion des intents utilisateur).
  3. Dans la liste déroulante des intents, sélectionnez skip (ignorer).

5465f97542217964.png

  1. Dans la section Transition à droite, cliquez sur le menu déroulant, puis sélectionnez Spelling.

c8072485ca82bd3f.png

  1. Cliquez sur Enregistrer.

Créer un intent quit

Pour créer l'intent Quit, procédez comme suit:

  1. Cliquez sur Develop (Développer) dans le menu de navigation.
  2. Dans le menu de navigation, cliquez sur Intents pour ouvrir la liste des intents.
  3. Cliquez sur + (signe plus) à la fin de la liste des intents. Nommez le nouvel intent Quit, puis appuyez sur Enter.
  4. Cliquez sur l'intent Quit pour ouvrir la page de l'intent definition (Définition).
  5. Dans la section Add training phrases (Ajouter des expressions d'entraînement), cliquez sur la zone de texte Enter Phrase (Saisissez une expression), puis saisissez les expressions suivantes :
  • I quit
  • Goodbye
  • Cancel
  • Exit
  • Quit

9916f77b8766541e.png

  1. Cliquez sur Enregistrer.

Ajouter l'intent Quit à la scène Spelling

Votre action peut maintenant comprendre quand un utilisateur formule l'intent quit. Vous pouvez ajouter l'intent utilisateur quit à la scène Spelling, car l'utilisateur répond à l'invite Spelling ("Écris le mot à l'aide de l'alphabet phonétique").

Pour ajouter cet intent utilisateur à la scène Spelling, procédez comme suit :

  1. Cliquez sur la scène Orthographe dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Spelling à côté de User intent handling (Gestion des intents utilisateur).
  3. Dans la liste déroulante des intents, sélectionnez quit (quitter).

5f62fb18a3653d66.png

  1. Dans la section Transition à droite, cliquez sur le menu déroulant et sélectionnez End conversation . 1ffbe35a7bbbb4b0.png
  2. Cliquez sur Enregistrer.

Créer le type phonetic_alphabet

Dans cette section, vous allez créer un type appelé phonetic_alphabet, qui spécifie les options de l'alphabet phonétique que les utilisateurs peuvent choisir pour épeler le mot. Vous pouvez également définir plusieurs synonymes pour ces options, au cas où l'utilisateur prononcerait un mot similaire. Dans une section ultérieure, vous ajouterez le type phonetic_alphabet à un emplacement pour indiquer que vous souhaitez obtenir la réponse de l'utilisateur.

Pour créer le type phonetic_alphabet, procédez comme suit:

  1. Cliquez sur Develop (Développer) dans le menu de navigation.
  2. Cliquez sur + (signe plus) sous Types.
  3. Saisissez phonetic_alphabet, puis appuyez sur Enter.
  4. Cliquez sur phonetic_alphabet pour ouvrir les options.
  5. Dans la section Quels sont les types de valeurs acceptés par ce type ?, sélectionnez l'option Mots et synonymes.
  6. Saisissez les entrées et valeurs correspondantes suivantes dans la section Add entries (Ajouter des entrées) :

a

alpha, apple, amsterdam

B

bravo, beurre, baltimore

C

charlie, chat, Casablanca

delta, chien, danemark

e

echo, edward, edison

F

foxtrot, fox, florida

g

golf, georges, gallipoli

h

hôtel, harry, havane

india, ink, italia

J

juliette, johnny, jerusalem

K

kilo, king, kilogramme

l

lima, amour, londres

min

mike, argent, madagascar

n

novembre, new york, nancy

o

oscar, orange, oslo

p

papa, paris, peter

q

quebec, queen

r

romeo, roma, robert

s

sierra, sugar, santiago

tango, tommy, tripoli

u

uniforme, parapluie, oncle

v

victor, vinaigre, Valence

W

whiskey, william, Washington

x

rayons X

y

yankee, jaune, yorker

z

zulu, zebra, zurich

Le tableau des paires clé/valeur devrait se présenter comme suit :

5b5a5cd9fa557e1b.png

  1. Cliquez sur Enregistrer.

Configurer le remplissage d'emplacements

Vous devez ensuite configurer le remplissage d'emplacements dans la scène "Orthographe". Pour configurer la logique de remplissage d'emplacements, procédez comme suit :

  1. Dans le menu de navigation, cliquez sur la scène Spelling (Orthographe).
  2. Cliquez sur + (signe plus) dans la scène Spelling pour le remplissage de cases.
  3. Dans le champ Enterslot name (Saisir un nom d'emplacement), ajoutez userresponse comme nom d'emplacement.
  4. Dans la liste déroulante Select type (Sélectionner un type), sélectionnez phonetic_alphabet comme type d'emplacement.
  5. Cochez la case Cet emplacement accepte une liste de valeurs.
  6. Cochez la case This slot is required (Cet emplacement est obligatoire).
  7. Sélectionnez l'option Customizeslot value writeback (Personnaliser l'écriture de la valeur d'emplacement), puis saisissez la réponse de l'utilisateur dans la zone de texte du paramètre de session.

BA57a419877a07f3.png

  1. Cliquez sur Enregistrer.

Ajouter une condition à l'écran Spelling

Pour ajouter une condition à la scène Spelling, procédez comme suit:

  1. Cliquez sur la scène Orthographe dans le panneau de navigation.
  2. Cliquez sur + (signe plus) dans la scène Spelling à côté de "Condition".
  3. Saisissez scene.slots.status == "FINAL" comme condition
  4. Cochez la case Appeler votre webhook, puis saisissez verifySpellingWord dans la zone de texte du gestionnaire d'événements pour valider la réponse de l'utilisateur.
  5. Cochez l'option Send prompts (Envoyer des invites).
  6. Remplacez la phrase dans le champ speech (Enter the response that users will see or hear...) par {}. L'invite réelle sera renseignée par le webhook.

Ajouter des chips de suggestion à la réponse du webhook

  1. Dans la scène Start, cliquez sur suggestions sous l'éditeur de code. Cette action ajoute trois chips de suggestion.
  2. Dans le champ title, remplacez Suggested Response par 'Next'.
  3. En utilisant la même mise en forme, ajoutez manuellement un chip de suggestion intitulé 'Quit'. Votre code doit ressembler à l'extrait suivant :
suggestions:
      - title: 'Next'
      - title: 'Quit'

ac3d7a9366ebc1b1.png

  1. Cliquez sur Enregistrer.

12. Tester l'entraînement orthographique dans le simulateur

Pour tester votre action dans le simulateur:

  1. Dans la barre de navigation, cliquez sur Test (Tester) pour accéder au simulateur.
  2. Pour tester votre action dans le simulateur, saisissez Talk to Spelling Practice dans le champ de saisie.
  3. Appuyez sur Entrée. Votre action doit répondre par l'invite Main invocation et l'invite de scène Start ajoutée, "Welcome to Spelling Practice. Écrivez le mot en utilisant l'alphabet phonétique. (par exemple, "alpha" pour "a", "bravo" pour "b", "charlie" pour "c", etc. Voulez-vous continuer ?")
  4. Dites Oui pour continuer.
  5. Le simulateur jouera un mot sonore à épeler
  6. Vous pouvez épeler le mot à l'aide d'alphabets phonétiques. Par exemple, pour mieux, dites ou saisissez "bravo echo tango tango écho romeo".
  7. Le simulateur répondra avec la réponse correcte ou incorrecte.
  8. Dites suivant pour passer au mot suivant ou quitter pour quitter la boucle de jeu.

13. Félicitations

Félicitations, vous avez créé votre jeu Exercice d'orthographe.

Vous connaissez désormais les principales étapes requises pour créer un jeu à l'aide de Cloud Firestore, de Cloud Functions et de l'outil de création d'actions de l'Assistant Google.

Points abordés

  • Interagir avec Cloud Firestore
  • Utiliser des emplacements pour collecter des données auprès de l'utilisateur
  • Traiter l'entrée utilisateur et y répondre
  • Utiliser des conditions pour ajouter une logique à une scène
  • Ajouter une boucle de jeu

Autres ressources de formation

Vous pouvez explorer ces ressources pour en savoir plus sur la création d'actions pour l'Assistant Google:

Nettoyer votre projet (recommandé)

Pour éviter de vous facturer des frais, nous vous recommandons de supprimer les projets que vous ne comptez pas utiliser. Pour supprimer les projets que vous avez créés dans cet atelier de programmation, procédez comme suit:

  1. Pour supprimer votre projet et vos ressources Firebase, suivez la procédure décrite dans la section Arrêter (supprimer) des projets.

Attention: Veillez à sélectionner le projet à supprimer sur la page Paramètres de la console Google Cloud.

  1. Facultatif: Pour supprimer immédiatement votre projet de la console Actions, suivez la procédure décrite dans la section Supprimer un projet. Si vous ne le faites pas, votre projet sera supprimé automatiquement après un délai de 30 jours environ.

Suivez @ActionsOnGoogle et @Firebase sur Twitter pour connaître nos dernières annonces, et tweetez avec #GoogleIO pour partager votre création.