Build-Auftragsausführung (Dialogflow)

Unter „Auftragsausführung“ wird die dialogorientierte Schnittstelle definiert, die Ihr Actions-Projekt erhalten soll Benutzereingabe und der Logik für die Verarbeitung der Eingabe und schließlich die Ausführung der Aktion.

Übersicht

Ihre Auftragsausführung empfängt Anfragen von Assistant, verarbeitet sie und antwortet. Durch diesen wechselseitigen Anforderungs- und Antwortprozess wird bis Sie die ursprüngliche Nutzeranfrage erfüllen.

In den folgenden Schritten wird beschrieben, wie du die Auftragsausführung mithilfe der Aktionen erstellen kannst SDK mit der Node.js- oder Java/Kotlin-Clientbibliothek:

  1. Initialisieren Sie das ActionsSdkApp-Objekt.
  2. Erstellen Sie Funktionen zur Verarbeitung von Anfragen in der Auftragsausführungslogik.

Dialogfelder erstellen

ActionsSdkApp-Objekt initialisieren

Der folgende Code instanziiert ActionsSdkApp und führt einige Node.js-Boilerplate-Einrichtungen für Google Cloud Functions durch:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
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);
<ph type="x-smartling-placeholder">
</ph>
Actions SDK (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
<ph type="x-smartling-placeholder">
</ph>
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. Bis die Intents von Anfragen erfüllen, Funktionen erstellen, Intent ausgelöst.

So verarbeiten Sie Anfragen:

  1. Es wird jede Logik ausgeführt, die zur Verarbeitung der Nutzereingabe erforderlich ist.

  2. Rufen Sie die Funktion conv.ask() auf und übergeben Sie die gewünschte Antwort. als Argument verwenden.

Der folgende Code zeigt, wie Sie eine einfache Antwort erstellen:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Actions SDK (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
<ph type="x-smartling-placeholder">
</ph>
Actions SDK (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
<ph type="x-smartling-placeholder">
</ph>
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 der ausgelösten Intents haben, verwenden Sie app.intent, um Intents Handler zuweisen.

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

Wenn Sie nicht mehr möchten, dass ein Nutzer etwas einbringt, und die Unterhaltung beenden möchten, und rufen Sie die Funktion conv.close() auf. Mit dieser Funktion kann Google Assistant den Text dem Nutzer vorlesen und die Unterhaltung beenden, indem er das Mikrofon schließt.

Hauptaufruf-Intent verarbeiten

Wenn Nutzer den Intent app.intent.action.MAIN auslösen, geschieht das normalerweise nicht keine Nutzereingaben verarbeiten müssen. Wenn Ihr Aktionspaket viele und deckt viele Anwendungsfälle ab, ist es eine gute Idee, die Nutzenden zu orientieren, ein paar Dinge, die sie tun können.

  1. Rufen Sie die Funktion conv.ask() auf und übergeben Sie Ihre Antwort als Argument. Google Assistant spricht dem Nutzer Ihre Antwort und dann wartet darauf, dass der Nutzer einen der von Ihnen angegebenen Intents auslöst.

Das folgende Snippet zeigt, wie ein einfacher Begrüßungs-Intent verarbeitet wird:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Actions SDK (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
<ph type="x-smartling-placeholder">
</ph>
Actions SDK (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

Unterhaltungsstatus

Wenn Sie die Conversation HTTP/JSON Webhook API verwenden, können Sie den Status Ihrer Unterhaltungen mit einem Objekt im JSON-Format (conversationToken) zwischen Ihnen und Google Assistant. Wenn Sie Node.js-Clientbibliothek verwenden, können Sie kann direkt in das Feld conv.data schreiben und daraus lesen. Dieses Feld zwischen Anfragen und Antworten automatisch hin und her.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Actions SDK (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
<ph type="x-smartling-placeholder">
</ph>
Actions SDK (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");