Traitement des builds (Dialogflow)

Le fulfillment définit l'interface de conversation par laquelle votre action doit obtenir l'entrée utilisateur et la logique pour traiter l'entrée et finir par la traiter l'action.

Définir votre conversation

Maintenant que vous avez défini des actions, vous pouvez créer la conversation correspondante pour ces actions. Pour ce faire, vous devez Création d'intents Dialogflow qui définissent la grammaire ou ce dont les utilisateurs ont besoin déclencher l'intent et le fulfillment correspondant pour traiter l'intent lorsqu'il est déclenché.

Vous pouvez créer autant d'intents que vous le souhaitez pour définir l'ensemble de la conversation et grammaire.

Créer des intents

Cliquez sur le signe + à côté de l'élément de menu Intents dans le le panneau de navigation de gauche. L'éditeur d'intent s'affiche et vous permet de saisir les informations suivantes:

  • Intent name (Nom de l'intent) est le nom de l'intent affiché dans l'IDE.
  • Les contextes vous permettent de limiter le déclenchement de l'intent à des cas spécifiques. Lisez la documentation Dialogflow sur les contextes. pour en savoir plus.
  • Les événements déclenchent des intents sans que les utilisateurs aient besoin de dire quoi que ce soit. Un l'événement GOOGLE_ASSISTANT_WELCOME, qui permet à Google Assistant pour appeler votre action. Cet événement est utilisé pour l'événement action par défaut. Reportez-vous à notre documentation pour en savoir plus sur les intents d'assistance intégrés.
  • Les phrases d'entraînement définissent ce que les utilisateurs doivent dire (la grammaire) pour déclencher l'intent. Saisissez ici (5 à 10) quelques phrases de ce que les utilisateurs peuvent dire pour déclencher l'intent. Dialogflow gère automatiquement les variations naturelles de l'exemple expressions que vous fournissez.
  • Le champ Action and parameters (Action et paramètres) définit les données à transmettre au fulfillment, si les le fulfillment est activé pour cet intent. Cela inclut les données analysées à partir du saisie utilisateur et le nom que vous pouvez utiliser dans votre fulfillment pour détecter les intent a été déclenché. Vous utiliserez ce nom plus tard pour mapper votre intent à ses la logique de fulfillment correspondante. Voir Actions et paramètres dans la documentation Dialogflow pour en savoir plus sur la définition des actions.

  • Responses est le compilateur de réponses Dialogflow, qui permet de définir les une réponse à cet intent directement dans Dialogflow, sans appeler le traitement. Cette fonctionnalité est utile pour les réponses statiques qui ne nécessitent pas le traitement. Vous pouvez l'utiliser pour fournir de simples messages de bienvenue ou d'au revoir. Cependant, vous utiliserez probablement le fulfillment pour répondre à vos utilisateurs pour la plupart les intents.

  • Fulfillment indique si vous souhaitez ou non appeler votre fulfillment lorsque cet intent est déclenché. Vous activerez probablement cela pour la plupart d'intents dans votre agent Dialogflow. Pour voir cet élément dans l'intent, vous devez avoir activé le fulfillment pour l'agent dans le menu Fulfillment.

Créer des réponses dans Dialogflow

Pour certains intents, il se peut que vous n'ayez pas besoin que votre fulfillment renvoie une réponse. Dans ce cas, vous pouvez utiliser le générateur de réponses de Dialogflow pour créer des réponses.

Dans la zone Réponses, indiquez la réponse textuelle à laquelle vous souhaitez revenir. utilisateurs. Les réponses texte par défaut sont de simples réponses textuelles par synthèse vocale qui peuvent fonctionner plusieurs intégrations Dialogflow. Les réponses de l'Assistant Google sont décrites sur la page Réponses.

Créer des réponses de fulfillment

Votre code fulfillment est hébergé dans la logique de fulfillment du webhook pour une action. Ainsi, dans l'exemple "Silly Name Maker", cette logique se trouve dans index.js pour la fonction Cloud pour Firebase.

Lorsqu'un intent utilisant le fulfillment est déclenché, vous recevez une requête de Dialogflow contenant des informations sur l'intent. Vous répondez ensuite à la en traitant l'intent et en renvoyant une réponse. Cette demande et est définie par le webhook Dialogflow.

Nous vous recommandons vivement d'utiliser la bibliothèque cliente Node.js pour traiter les requêtes et renvoyer des réponses. Voici le processus général d'utilisation de la bibliothèque cliente:

  1. Initialisez l'objet Dialogflow. Cet objet gère automatiquement l'écoute des requêtes et leur analyse. pour que vous puissiez les traiter dans votre fulfillment.
  2. Créez des fonctions pour gérer les requêtes. Ces fonctions traitent l'entrée utilisateur et d'autres composants de l'intent. la réponse à renvoyer à Dialogflow.

Initialiser l'objet Dialogflow

Le code suivant instancie Dialogflow et génère du code récurrent Configuration Node.js pour Google Cloud Functions:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
'use strict';

const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');

const app = dialogflow({debug: true});

app.intent('Default Welcome Intent', (conv) => {
  // Do things
});
exports.yourAction = functions.https.onRequest(app);
<ph type="x-smartling-placeholder">
</ph>
Java
public class DfFulfillment extends DialogflowApp {
  private static final Logger LOGGER = LoggerFactory.getLogger(DfFulfillment.class);

  @ForIntent("Default Welcome Intent")
  public ActionResponse welcome(ActionRequest request) {
    // Do things
    // ...
  }
.

Créer des fonctions pour gérer les requêtes

Lorsque les utilisateurs prononcent une expression qui déclenche un intent, vous recevez une requête de Dialogflow que vous gérez avec une fonction dans votre fulfillment. Dans ce vous effectuez généralement les opérations suivantes:

  1. Exécuter toute logique requise pour traiter l'entrée utilisateur.
  2. Créez vos réponses pour répondre aux intents déclenchés. Tenez compte des que vos utilisateurs utilisent pour élaborer des réponses appropriées. Voir fonctionnalités de surface pour plus d'informations sur la façon de gérer les réponses pour différentes surfaces.
  3. Appelez la fonction ask() avec votre réponse.

Le code suivant vous montre comment créer deux réponses de synthèse vocale qui gèrent une un intent d'appel (input.welcome) et un intent de boîte de dialogue (input.number) qui accueille l'utilisateur dans votre action et renvoie un nombre pour lequel il a parlé. Un intent Dialogflow nommé:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
const app = dialogflow();
app.intent('Default Welcome Intent', (conv) => {
conv.ask('Welcome to number echo! Say a number.');
});
app.intent('Input Number', (conv, {num}) => {
// extract the num parameter as a local string variable
conv.close(`You said ${num}`);
});
<ph type="x-smartling-placeholder">
</ph>
Java
@ForIntent("Default Welcome Intent")
public ActionResponse defaultWelcome(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  rb.add("Welcome to number echo! Say a number.");
  return rb.build();
}

@ForIntent("Input Number")
public ActionResponse inputNumber(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  Integer number = (Integer) request.getParameter("num");
  rb.add("You said " + number.toString());
  return rb.endConversation().build();
}

L'intent personnalisé Input Number (Numéro d'entrée) qui accompagne le code ci-dessus utilise l'attribut @sys.number pour extraire un nombre des énoncés de l'utilisateur. L'intention envoie le paramètre num, qui contient le nombre fourni par l'utilisateur, à la dans le fulfillment.

Au lieu d'avoir des gestionnaires individuels pour chaque intent, vous pouvez ajouter une fonction de remplacement. Dans la fonction de remplacement, vérifiez quel intent a été déclenché. et de faire les choses appropriées en conséquence.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
const WELCOME_INTENT = 'Default Welcome Intent';
const NUMBER_INTENT = 'Input Number';
const NUMBER_PARAMETER = 'num';
// you can add a fallback function instead of a function for individual intents
app.fallback((conv) => {
 // intent contains the name of the intent
 // you defined in the Intents area of Dialogflow
 const intent = conv.intent;
 switch (intent) {
   case WELCOME_INTENT:
     conv.ask('Welcome! Say a number.');
     break;
   case NUMBER_INTENT:
     const num = conv.parameters[NUMBER_PARAMETER];
     conv.close(`You said ${num}`);
     break;
 }
});
<ph type="x-smartling-placeholder">
</ph>
Java
// you can add a fallback function instead of a function for individual intents
@ForIntent("Default Fallback Intent")
public ActionResponse fallback(ActionRequest request) {
  final String WELCOME_INTENT = "Default Welcome Intent";
  final String NUMBER_INTENT = "Input Number";
  final String NUMBER_ARGUMENT = "num";
  // intent contains the name of the intent
  // you defined in the Intents area of Dialogflow
  ResponseBuilder rb = getResponseBuilder(request);
  String intent = request.getIntent();
  switch (intent) {
    case WELCOME_INTENT:
      rb.add("Welcome! Say a number.");
      break;
    case NUMBER_INTENT:
      Integer num = (Integer) request.getParameter(NUMBER_ARGUMENT);
      rb.add("You said " + num).endConversation();
      break;
  }
  return rb.build();
}

Nouvelle demande de correspondance sans correspondance

Lorsque Dialogflow ne peut correspondre à aucune des grammaires d'entrée définies dans vos intents Training phrases (Phrases d'entraînement), elle déclenche un intent de remplacement. Les intents de remplacement sont généralement inviter à nouveau l'utilisateur à fournir les informations nécessaires pour votre action. Vous pouvez fournir des phrases de nouvelle invite en les spécifiant dans la zone Response (Réponse) d'une ou un webhook pour fournir des réponses.

Lorsque la réponse d'un utilisateur ne correspond pas aux phrases d'entraînement de votre action, Google L'Assistant tente de gérer la saisie. Ce comportement facilite la modification Actions au milieu d'une conversation Par exemple, un utilisateur demande : « Quels films jouer cette semaine ? » puis change de contexte en cours de conversation : la météo demain ? » Dans cet exemple, parce que "Quel temps fera-t-il demain ?" n'est pas une réponse valide à la conversation déclenchée par l'invite initiale, L'Assistant tente automatiquement de gérer la correspondance et de faire passer l'utilisateur la conversation appropriée.

Si l'Assistant ne trouve pas d'action correspondant à l'entrée utilisateur, l'utilisateur est renvoyé au contexte de votre action.

Parce que l'Assistant peut interrompre votre action pour répondre à une non-correspondance valide n'utilisez pas les intents de remplacement pour traiter les requêtes des utilisateurs. Toi ne devez utiliser des intents de remplacement que pour inviter l'utilisateur à saisir une entrée valide.

Pour créer un intent de remplacement, procédez comme suit:

  1. Cliquez sur Intents dans le menu de navigation de Dialogflow.
  2. Cliquez sur ⋮ à côté de Create Intent (Créer un intent) et sélectionnez Créez un intent de remplacement. (Vous pouvez aussi cliquer sur l'icône de création de remplacement par défaut l'intention de la modifier).
  3. Spécifiez les expressions de nouvelle invite à répondre aux utilisateurs. Ces expressions doivent être conversationnelle et soit aussi utile que possible par rapport au contexte actuel de l'utilisateur.

    Pour effectuer cette opération sans fulfillment: spécifiez les phrases dans la zone Response (Réponse). de l'intent. Dialogflow choisit des phrases de cette liste à prononcer de manière aléatoire jusqu'à ce qu'un intent plus spécifique soit déclenché.

    Pour effectuer cette opération avec le fulfillment:

    1. Dans la section Fulfillment de l'intent, activez l'option Enable webhook call for this intent (Activer l'appel webhook pour cet intent).
    2. Dans votre logique de fulfillment, gérez l'intent de remplacement comme n'importe quel autre des intents, comme décrit dans la section Créer des fonctions pour gérer les requêtes. .

    Par exemple, la fonction suivante utilise l'objet conv.data (un de données arbitraires que vous pouvez utiliser pour conserver l'état) à partir du Bibliothèque cliente Node.js pour stocker un un compteur qui comptabilise le nombre de fois où un intent de remplacement est déclenché. S'il s'agit déclenchée plusieurs fois, l'action se ferme. Bien qu'elle ne figure pas dans la vous devez faire en sorte que les autres intents réinitialisent ce compteur à 0 lorsqu'un intent autre que de remplacement est déclenché. Pour en savoir plus, consultez les Exemple Number Genie pour en savoir plus sur la manière de procéder.)

    <ph type="x-smartling-placeholder">
    </ph> <ph type="x-smartling-placeholder">
    </ph>
    Node.js
    app.intent('Default Fallback Intent', (conv) => {
     conv.data.fallbackCount++;
     // Provide two prompts before ending game
     if (conv.data.fallbackCount === 1) {
       conv.contexts.set(DONE_YES_NO_CONTEXT, 5);
       conv.ask('Are you done playing Number Genie?');
     } else {
       conv.close(`Since I'm still having trouble, so I'll stop here. ` +
         `Let's play again soon.`);
     }
    });
    <ph type="x-smartling-placeholder">
    </ph>
    Java
    @ForIntent("Default Fallback Intent")
    public ActionResponse defaultFallback(ActionRequest request) {
      final String DONE_YES_NO_CONTEXT = "done_yes_no_context";
      ResponseBuilder rb = getResponseBuilder(request);
    
      int fallbackCount =
          request.getConversationData().get("fallbackCount") == null
              ? 0
              : (Integer) request.getConversationData().get("fallbackCount");
      fallbackCount++;
      request.getConversationData().put("fallbackCount", fallbackCount);
    
      if (fallbackCount == 1) {
        rb.add(new ActionContext(DONE_YES_NO_CONTEXT, 5));
        rb.add("Are you done playing Number Genie?");
      } else {
        rb.add("Since I'm still having trouble, so I'll stop here. Let's play again soon")
            .endConversation();
      }
      return rb.build();
    }

Utiliser des contextes

Utilisez des contextes si vous souhaitez que Dialogflow ne déclenche les intents de remplacement que dans certains cas situations différentes. Cela est utile si vous souhaitez avoir différents intents de remplacement pour différents scénarios de non-correspondance.

  • Si vous ne définissez pas de contexte pour un intent de remplacement, il est considéré comme un l'intent de remplacement global que Dialogflow déclenche lorsqu'aucun autre intent n'est correspondantes. Si vous choisissez d'en utiliser une, seule l'une d'entre elles doit être définie.
  • Si vous définissez des contextes d'entrée sur un intent de remplacement, Dialogflow déclenche cette intent de remplacement lorsque les conditions suivantes sont remplies:

    • Les contextes actuels de l'utilisateur constituent un sur-ensemble des contextes définis dans le l'intention.
    • Aucun autre intent ne correspond.

    Cela vous permet d'utiliser plusieurs intents de remplacement avec différents contextes d'entrée pour personnaliser les renvois d'absence de correspondance dans des scénarios spécifiques.

  • Si vous définissez un contexte de sortie pour un intent de remplacement, vous conservez l'utilisateur même contexte après le déclenchement et le traitement de l'intent de remplacement.

Pour en savoir plus, consultez la page Contextes Dialogflow.

Aucune nouvelle demande de saisie

Consultez la page Nouvelles invites pour découvrir comment à gérer lorsque l'utilisateur ne fournit aucune autre entrée sur un appareil vocal, comme Google Home qui nécessite une interaction continue.