Die Auftragsausführung definiert die dialogorientierte Schnittstelle für Ihr Actions-Projekt, um Nutzereingaben zu erhalten, sowie die Logik, um die Eingabe zu verarbeiten und schließlich die Aktion auszuführen.
Überblick
Die Auftragsausführung empfängt Anfragen von Assistant, verarbeitet die Anfrage und antwortet. Dieser Prozess des Hin- und Herschickens von Anfragen und Antworten treibt die Unterhaltung so lange voran, bis Sie schließlich die ursprüngliche Nutzeranfrage erfüllen.
In den folgenden Schritten wird beschrieben, wie Sie die Auftragsausführung mithilfe des Actions SDK und der Node.js- oder Java-/Kotlin-Clientbibliothek erstellen:
- Initialisieren Sie das ActionsSdkApp-Objekt.
- Erstellen Sie Funktionen zum Verarbeiten von Anfragen in Ihrer Auftragsausführungslogik.
Dialogfelder erstellen
ActionsSdkApp
-Objekt initialisieren
Mit dem folgenden Code wird ActionsSdkApp
instanziiert und eine Node.js-Boilerplate-Einrichtung für Google Cloud Functions vorgenommen:
'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\":{}}" }
Funktionen zur Verarbeitung von Anfragen erstellen
Wenn Nutzer einen Satz sprechen, erhalten Sie eine Anfrage von Google Assistant. Erstellen Sie Funktionen, die den ausgelösten Intent verarbeiten, um die Intents in Anfragen auszuführen.
So verarbeiten Sie Anfragen:
Ausführung der für die Verarbeitung der Nutzereingabe erforderlichen Logik
Rufen Sie die Funktion
conv.ask()
auf und übergeben Sie die Antwort, die als Argument angezeigt werden soll.
Der folgende Code zeigt, wie eine einfache Antwort erstellt wird:
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\":{}}" }
Intents verarbeiten
Sobald Sie alle Funktionen zum Verarbeiten von ausgelösten Intents haben, weisen Sie mit app.intent
Handlern Intents zu.
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 // ... }
Unterhaltungen werden beendet
Wenn Sie keine Nutzereingabe mehr zurückgeben und die Unterhaltung beenden möchten, rufen Sie die Funktion conv.close()
auf.
Mit dieser Funktion wird Google Assistant angewiesen, den Text zu sprechen und die Unterhaltung durch Schließen des Mikrofons zu beenden.
Umgang mit dem Hauptaufruf-Intent
Wenn Nutzer den Intent app.intent.action.MAIN
auslösen, müssen Sie normalerweise keine Nutzereingabe verarbeiten. Wenn Ihr Aktionspaket viele Aktionen enthält und viele Anwendungsfälle abdeckt, empfiehlt es sich, den Nutzer anhand einiger Anweisungen zu orientieren, die er ausführen kann.
- Rufen Sie die Funktion
conv.ask()
auf und übergeben Sie Ihre Antwort als Argument. Google Assistant spricht Ihre Antwort dem Nutzer vor und wartet dann darauf, dass dieser einen der von Ihnen angegebenen Intents auslöst.
Das folgende Snippet zeigt, wie ein einfacher Begrüßungs-Intent verarbeitet wird:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
Unterhaltungsstatus
Wenn Sie die HTTP-/JSON-Webhook-API für Unterhaltungen verwenden, können Sie den Status Ihrer Unterhaltungen mit einem JSON-formatierten Objekt (conversationToken
) beibehalten, das zwischen Ihnen und Google Assistant ausgetauscht wird. Wenn Sie die Node.js-Clientbibliothek verwenden, können Sie direkt in das Feld conv.data
schreiben und daraus lesen. Dieses Feld wird automatisch zwischen Anfragen und Antworten hin- und hergeschickt.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");