Le fulfillment définit l'interface de conversation de votre projet Actions à récupérer l'entrée utilisateur et la logique pour traiter l'entrée et finalement exécuter l'action.
Présentation
Votre traitement reçoit les requêtes de l'Assistant, les traite et répond. Ce processus d'échange de requêtes et de réponses la conversation jusqu'à ce que vous répondiez à la requête initiale de l'utilisateur.
Les étapes suivantes décrivent comment créer un fulfillment à l'aide des actions SDK avec la bibliothèque cliente Node.js ou Java/Kotlin:
- Initialisez l'objet ActionsSdkApp.
- Créez des fonctions pour gérer les requêtes dans votre logique de fulfillment.
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:
'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);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "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 expression, vous recevez une demande de l'Assistant Google. À les intents qui arrivent dans les requêtes, créer des fonctions qui gèrent un intent déclenché.
Pour gérer les requêtes:
Exécuter toute logique requise pour traiter l'entrée utilisateur.
Appelez la fonction
conv.ask()
qui transmet la réponse que vous souhaitez afficher. comme argument.
Le code suivant montre comment créer une réponse simple:
<ph type="x-smartling-placeholder">conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "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 gèrent les intents déclenchés, utilisez app.intent
pour
et d'attribuer des gestionnaires aux intents.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@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 voulez plus recevoir d’entrée utilisateur en retour
et que vous voulez 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 ne devez normalement pas
n'ont pas besoin de traiter
les entrées utilisateur. Si votre package d'actions contient
actions et couvre de nombreux cas d'utilisation, il est bon d'orienter l'utilisateur en lui indiquant
quelques choses
qu’ils peuvent faire.
- 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 l'utilisateur 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:
<ph type="x-smartling-placeholder">// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
État de la conversation
Si vous utilisez l'API de webhook de conversation HTTP/JSON, vous pouvez conserver le
l'état de vos conversations avec un objet au format JSON (conversationToken
) ;
qui est transmis entre vous et l'Assistant Google. Si vous utilisez
à l'aide de la bibliothèque cliente Node.js, vous
peuvent écrire et lire directement dans le champ conv.data
. Ce champ
sont transmis automatiquement
entre les requêtes et les réponses.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");