Traitement des builds (Dialogflow)

Le traitement définit l'interface de conversation de votre projet Actions afin d'obtenir les entrées utilisateur et la logique de traitement de ces entrées et, à terme, d'exécution de l'action.

Présentation

Le traitement reçoit les requêtes de l'Assistant, les traite et y répond. Ce processus de requête et de réponse va et vient avancer la conversation jusqu'à ce que vous finalisiez la requête de l'utilisateur initiale.

Les étapes suivantes décrivent comment créer un traitement à l'aide du SDK Actions avec Node.js ou la bibliothèque cliente Java/Kotlin:

  1. Initialisez l'objet ActionsSdkApp.
  2. Créez des fonctions pour gérer les requêtes dans votre logique de traitement.

Créer des boîtes de dialogue

Initialiser l'objet ActionsSdkApp

Le code suivant instancie ActionsSdkApp et effectue une configuration Node.js standard pour Google Cloud Functions:

SDK Actions (Node.js)
'use strict';

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

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

app.intent('actions.intent.MAIN', (conv) => {
  conv.ask('Hi!');
});

// More intent handling if needed
exports.myFunction = functions.https.onRequest(app);
SDK Actions (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Hi!"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

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

Lorsqu'un utilisateur prononce une phrase, vous recevez une demande de l'Assistant Google. Pour traiter les intents envoyés dans les requêtes, créez des fonctions qui gèrent l'intent déclenché.

Pour gérer les requêtes:

  1. Appliquez toutes les logiques requises pour traiter l'entrée utilisateur.

  2. Appelez la fonction conv.ask() en transmettant la réponse que vous souhaitez afficher en tant qu'argument.

Le code suivant montre comment créer une réponse simple:

SDK Actions (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
SDK Actions (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
JSON
{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Hi! Say something, and I'll repeat it."
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ]
    }
  ],
  "conversationToken": "{\"data\":{}}",
  "userStorage": "{\"data\":{}}"
}

Gérer les intents

Une fois que toutes vos fonctions permettent de gérer les intents déclenchés, utilisez app.intent pour attribuer des gestionnaires aux intents.

SDK Actions (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
SDK Actions (Java)
@ForIntent("actions.intent.MAIN")
public ActionResponse main(ActionRequest request) {
  // handle main intent
  // ...
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  // handle text intent
  // ...
}

Mettre fin à la conversation

Lorsque vous ne souhaitez plus aucune entrée utilisateur en retour et que vous souhaitez mettre fin à la conversation, appelez la fonction conv.close(). Cette fonction demande à l'Assistant Google de répondre à l'utilisateur et de mettre fin à la conversation en fermant le micro.

Gérer l'intent d'appel principal

Lorsque les utilisateurs déclenchent l'intent app.intent.action.MAIN, vous n'avez normalement pas besoin de traiter les entrées utilisateur. Si votre package d'actions contient de nombreuses actions et couvre de nombreux cas d'utilisation, il est recommandé d'orienter l'utilisateur en lui indiquant quelques actions qu'il peut effectuer.

  1. Appelez la fonction conv.ask() en transmettant votre réponse en tant qu'argument. L'Assistant Google énonce votre réponse à l'utilisateur, puis attend que celui-ci déclenche l'un des intents que vous avez spécifiés.

L'extrait de code suivant montre comment gérer un intent d'accueil simple:

SDK Actions (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
SDK Actions (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

État de la conversation

Si vous utilisez l'API de webhook HTTP/JSON Conversation, vous pouvez maintenir l'état de vos conversations avec un objet au format JSON (conversationToken) qui est transmis entre vous et l'Assistant Google. Si vous utilisez la bibliothèque cliente Node.js, vous pouvez écrire et lire directement dans le champ conv.data. Ce champ est automatiquement transmis entre les requêtes et les réponses.

SDK Actions (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
SDK Actions (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");