Build-Auftragsausführung (Dialogflow)

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:

  1. Initialisieren Sie das ActionsSdkApp-Objekt.
  2. 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:

Actions SDK (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);
Actions SDK (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\":{}}"
}

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:

  1. Ausführung der für die Verarbeitung der Nutzereingabe erforderlichen Logik

  2. 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:

Actions SDK (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
Actions SDK (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\":{}}"
}

Intents verarbeiten

Sobald Sie alle Funktionen zum Verarbeiten von ausgelösten Intents haben, weisen Sie mit app.intent Handlern Intents zu.

Actions SDK (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
Actions SDK (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
  // ...
}

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.

  1. 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:

Actions SDK (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
Actions SDK (Java)
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.

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