Build-Auftragsausführung (Dialogflow)

Die Auftragsausführung definiert die dialogorientierte Schnittstelle, die Ihre Aktion erhalten soll Nutzereingabe und die Logik zur Verarbeitung der Eingabe und schließlich zur Ausführung die Aktion.

Unterhaltung definieren

Nachdem Sie jetzt Aktionen definiert haben, können Sie die entsprechende Konversation für diese Aktionen. Sie tun dies durch Dialogflow-Intents erstellen, die die Grammatik oder die Anforderungen der Nutzer definieren um den Intent und die entsprechende Auftragsausführung auszulösen, Intent erstellt wird.

Sie können so viele Intents erstellen, wie Sie möchten, Grammatik.

Intents erstellen

Klicken Sie im Dialogflow-Menü neben dem Menüpunkt Intents auf das +-Zeichen. im linken Navigationsbereich. Der Intent Editor wird angezeigt. Dort können Sie die folgenden Informationen eingeben:

  • Intent name ist der Name des Intents, der in der IDE angezeigt wird.
  • Mit Kontexten können Sie das Auslösen des Intents auf bestimmte Fälle festlegen. Dialogflow-Dokumentation zu Kontexten lesen .
  • Ereignisse lösen Intents aus, ohne dass der Nutzer etwas sagen muss. Eins Beispielereignis ist das GOOGLE_ASSISTANT_WELCOME-Ereignis, mit dem das Google Assistant, um deine Aktion aufzurufen. Dieses Ereignis wird für das Ereignis default Action (Standardaktion). Weitere Informationen zu integrierten Hilfs-Intents finden Sie in unserer Dokumentation.
  • Trainingsformulierungen definieren, was Nutzer sagen müssen (die Grammatik), um die Einblendung auszulösen. die Absicht. Geben Sie hier (5–10) ein, was Nutzer sagen können, um die die Absicht. Dialogflow verarbeitet natürliche Varianten des Beispiels automatisch. Wortgruppen, die Sie angeben.
  • Aktion und Parameter definieren, welche Daten an die Auftragsausführung übergeben werden, wenn Die Auftragsausführung ist für diesen Intent aktiviert. Dazu gehören auch Daten, die vom Nutzereingabe und den Namen, mit dem Sie in der Auftragsausführung ermitteln können, Intent ausgelöst. Sie verwenden diesen Namen später, um den Intent dem zugehörigen Auftragsausführungslogik entspricht. Siehe Aktionen und Parameter finden Sie in der Dialogflow-Dokumentation weitere Informationen zum Definieren von Aktionen.

  • Responses ist der Dialogflow Response Builder, mit dem Sie die auf diesen Intent direkt in Dialogflow antworten, ohne Auftragsausführung. Diese Funktion ist nützlich für statische Antworten, die keine Auftragsausführung. Sie können diese Funktion nutzen, um einfache Begrüßungs- oder Abschiedsnachrichten zu hinterlassen. Sie nutzen jedoch die Auftragsausführung in den meisten Fällen, Intents.

  • Fulfillment gibt an, ob Sie die Auftragsausführung aufrufen möchten. wann dieser Intent ausgelöst wird. Sie werden diese Funktion wahrscheinlich Intents in Ihrem Dialogflow-Agent an. Um dieses Element im Intent zu sehen, müssen Sie Die Auftragsausführung für den Agent im Menü Fulfillment (Auftragsausführung) aktiviert sein.

Antworten in Dialogflow erstellen

Bei einigen Intents muss die Auftragsausführung keine Antwort zurückgeben. In diesen Fällen können Sie den Response Builder in Dialogflow verwenden, um Antworten.

Geben Sie im Bereich Responses (Antworten) die Antwort in Textform ein, zu der Sie zurückkehren möchten. Nutzenden. Standard-Textantworten sind einfache Sprachausgabe-Textantworten, die auf allen mehrere Dialogflow-Integrationen. Antworten für Google Assistant werden beschrieben auf der Seite Antworten.

Antworten für die Auftragsausführung erstellen

Der Auftragsausführungscode wird in der Webhook-Ausführungslogik für eine Aktion gehostet. Im Beispiel für "Silly Name Maker" Diese Logik befindet sich in index.js für die Cloud Functions for Firebase-Funktion.

Wenn ein Intent ausgelöst wird, der die Auftragsausführung verwendet, erhalten Sie eine Anfrage von Dialogflow, der Informationen zum Intent enthält. Anschließend antworten Sie auf den durch Verarbeiten des Intents und Zurückgeben einer Antwort. Diese Anfrage und Die Antwort wird durch den Dialogflow-Webhook definiert.

Wir empfehlen dringend, die Node.js-Clientbibliothek zum Verarbeiten von Anfragen zu verwenden. und Antworten zurückgeben. So verwenden Sie die Clientbibliothek:

  1. Initialisieren Sie das Dialogflow-Objekt. Dieses Objekt wartet automatisch auf Anfragen und parst sie, damit Sie sie bei der Auftragsausführung verarbeiten können.
  2. Funktionen zum Verarbeiten von Anfragen erstellen Diese Funktionen verarbeiten die Nutzereingabe und andere Komponenten des Intents. die Antwort erstellen, um an Dialogflow zurückzukehren.

Dialogflow-Objekt initialisieren

Mit dem folgenden Code wird Dialogflow instanziiert und ein wenig Boilerplate Node.js-Einrichtung für Google Cloud Functions:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
'use strict';

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

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

app.intent('Default Welcome Intent', (conv) => {
  // Do things
});
exports.yourAction = functions.https.onRequest(app);
<ph type="x-smartling-placeholder">
</ph>
Java
public class DfFulfillment extends DialogflowApp {
  private static final Logger LOGGER = LoggerFactory.getLogger(DfFulfillment.class);

  @ForIntent("Default Welcome Intent")
  public ActionResponse welcome(ActionRequest request) {
    // Do things
    // ...
  }

Funktionen zur Verarbeitung von Anfragen erstellen

Wenn Nutzer eine Wortgruppe sprechen, die einen Intent auslöst, erhalten Sie eine Anfrage von Dialogflow, den Sie mit einer Funktion in der Auftragsausführung verarbeiten. In dieser führen Sie in der Regel folgende Schritte aus:

  1. Es wird jede Logik ausgeführt, die zur Verarbeitung der Nutzereingabe erforderlich ist.
  2. Erstellen Sie Antworten, um auf ausgelöste Intents zu reagieren. Berücksichtigen Sie die die Ihre Nutzenden verwenden, um geeignete Antworten zu formulieren. Weitere Informationen finden Sie unter Oberflächenfunktionen für finden Sie weitere Informationen dazu, wie Sie Antworten auf verschiedene Oberflächen anpassen können.
  3. Rufen Sie mit Ihrer Antwort die Funktion ask() auf.

Der folgende Code zeigt, wie Sie zwei TTS-Antworten erstellen, die eine Aufruf-Intent (input.welcome) und einen Dialog-Intent (input.number), der begrüßt den Nutzer zu deiner Aktion und gibt eine Zahl wieder, für die er gesprochen hat einen Dialogflow-Intent mit dem Namen:

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
const app = dialogflow();
app.intent('Default Welcome Intent', (conv) => {
conv.ask('Welcome to number echo! Say a number.');
});
app.intent('Input Number', (conv, {num}) => {
// extract the num parameter as a local string variable
conv.close(`You said ${num}`);
});
<ph type="x-smartling-placeholder">
</ph>
Java
@ForIntent("Default Welcome Intent")
public ActionResponse defaultWelcome(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  rb.add("Welcome to number echo! Say a number.");
  return rb.build();
}

@ForIntent("Input Number")
public ActionResponse inputNumber(ActionRequest request) {
  ResponseBuilder rb = getResponseBuilder(request);
  Integer number = (Integer) request.getParameter("num");
  rb.add("You said " + number.toString());
  return rb.endConversation().build();
}

Für die Eingabenummer für benutzerdefinierte Intents, die dem obigen Code beigefügt ist, wird für den Code @sys.number-Entität, um eine Zahl aus Nutzeräußerungen zu extrahieren. Der Intent sendet den Parameter num, der die Nummer des Nutzers enthält, an den Funktion in der Auftragsausführung.

Anstatt für jeden Intent einen eigenen Handler zu haben, können Sie eine Fallback-Funktion. Prüfen Sie in der Fallback-Funktion, welcher Intent ausgelöst wurde. und die entsprechenden Maßnahmen ergreifen.

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Node.js
const WELCOME_INTENT = 'Default Welcome Intent';
const NUMBER_INTENT = 'Input Number';
const NUMBER_PARAMETER = 'num';
// you can add a fallback function instead of a function for individual intents
app.fallback((conv) => {
 // intent contains the name of the intent
 // you defined in the Intents area of Dialogflow
 const intent = conv.intent;
 switch (intent) {
   case WELCOME_INTENT:
     conv.ask('Welcome! Say a number.');
     break;
   case NUMBER_INTENT:
     const num = conv.parameters[NUMBER_PARAMETER];
     conv.close(`You said ${num}`);
     break;
 }
});
<ph type="x-smartling-placeholder">
</ph>
Java
// you can add a fallback function instead of a function for individual intents
@ForIntent("Default Fallback Intent")
public ActionResponse fallback(ActionRequest request) {
  final String WELCOME_INTENT = "Default Welcome Intent";
  final String NUMBER_INTENT = "Input Number";
  final String NUMBER_ARGUMENT = "num";
  // intent contains the name of the intent
  // you defined in the Intents area of Dialogflow
  ResponseBuilder rb = getResponseBuilder(request);
  String intent = request.getIntent();
  switch (intent) {
    case WELCOME_INTENT:
      rb.add("Welcome! Say a number.");
      break;
    case NUMBER_INTENT:
      Integer num = (Integer) request.getParameter(NUMBER_ARGUMENT);
      rb.add("You said " + num).endConversation();
      break;
  }
  return rb.build();
}

Erneute Anfrage bei No-Match

Wenn Dialogflow keiner der in den Intents definierten Eingabegrammatiken entsprechen kann Trainingsformulierungen löst einen Fallback-Intent aus. Fallback-Intents sind in der Regel den Nutzer zur Eingabe der erforderlichen Eingabe für deine Aktion auffordern. Sie können Dazu geben Sie sie im Bereich Response (Antwort) eines Fallback-Intent oder Sie stellen Antworten mithilfe eines Webhooks bereit.

Wenn die Antwort eines Nutzers nicht mit den Trainingsformulierungen deiner Aktion übereinstimmt, zeigt Google Assistant versucht, die Eingabe zu verarbeiten. Dieses Verhalten ermöglicht es Nutzenden, Aktionen mitten in einem Gespräch Zum Beispiel fragt ein Nutzer: „Welche Filme diese Woche spielen?“ und ändert dann während des Gesprächs den Kontext: wie das Wetter morgen?“ In diesem Beispiel, weil „Wie wird das Wetter morgen?“ keine gültige Antwort auf die Unterhaltung ist, die durch die ursprüngliche Aufforderung ausgelöst wurde, Assistant versucht automatisch, die Übereinstimmung zu verarbeiten und den Nutzer in eine angemessene Konversation.

Wenn Assistant keine passende Aktion findet, die der Eingabe des Nutzers entspricht: Der Nutzer wird zum Kontext deiner Aktion zurückgeleitet.

Weil Assistant deine Aktion unter Umständen unterbrechen kann, um auf eine gültige Nichtübereinstimmung zu reagieren Verwenden Sie keine Fallback-Intents, um Nutzerabfragen auszuführen. Ich Verwenden Sie Fallback-Intents nur, um Nutzer zu gültigen Eingaben aufzufordern.

So erstellen Sie einen Fallback-Intent:

  1. Klicken Sie im Navigationsmenü von Dialogflow auf Intents.
  2. Klicken Sie neben Intent erstellen auf das Dreipunkt-Menü ⋮ und wählen Sie Erstellen Sie einen Fallback-Intent. Alternativ können Sie auch auf Standard-Fallback nicht bearbeiten.
  3. Geben Sie Formulierungen ein, mit denen Sie den Nutzern antworten können. Diese Wortgruppen sollten dialogorientiert und so nützlich wie möglich für den aktuellen Kontext des Nutzers sein.

    So gehen Sie ohne Auftragsausführung vor: Geben Sie im Bereich Antwort Wortgruppen an. des Intents. Dialogflow wählt nach dem Zufallsprinzip Wortgruppen aus dieser Liste aus bis ein konkreterer Intent ausgelöst wird.

    So funktioniert die Auftragsausführung:

    1. Aktivieren Sie im Abschnitt Fulfillment des Intents die Option Enable webhook call for this intent (Webhook-Aufruf für diesen Intent aktivieren).
    2. Behandeln Sie den Fallback-Intent in der Auftragsausführungslogik wie jeden anderen Intents, wie unter Funktionen zum Verarbeiten von Anfragen erstellen beschrieben. .

    Die folgende Funktion verwendet beispielsweise das Objekt conv.data (ein beliebige Datennutzlast, mit der Sie den Status aufrechterhalten können, Node.js-Clientbibliothek zum Speichern einer Zähler, der erfasst, wie oft ein Fallback-Intent ausgelöst wird. Wenn es ausgelöst wird, wird die Aktion beendet. Auch wenn es nicht in der sollten Sie diesen Zähler bei anderen Intents auf 0 zurücksetzen Ein Intent ohne Fallback wird ausgelöst. (Siehe die Number Genie-Beispiel .

    <ph type="x-smartling-placeholder">
    </ph> <ph type="x-smartling-placeholder">
    </ph>
    Node.js
    app.intent('Default Fallback Intent', (conv) => {
     conv.data.fallbackCount++;
     // Provide two prompts before ending game
     if (conv.data.fallbackCount === 1) {
       conv.contexts.set(DONE_YES_NO_CONTEXT, 5);
       conv.ask('Are you done playing Number Genie?');
     } else {
       conv.close(`Since I'm still having trouble, so I'll stop here. ` +
         `Let's play again soon.`);
     }
    });
    <ph type="x-smartling-placeholder">
    </ph>
    Java
    @ForIntent("Default Fallback Intent")
    public ActionResponse defaultFallback(ActionRequest request) {
      final String DONE_YES_NO_CONTEXT = "done_yes_no_context";
      ResponseBuilder rb = getResponseBuilder(request);
    
      int fallbackCount =
          request.getConversationData().get("fallbackCount") == null
              ? 0
              : (Integer) request.getConversationData().get("fallbackCount");
      fallbackCount++;
      request.getConversationData().put("fallbackCount", fallbackCount);
    
      if (fallbackCount == 1) {
        rb.add(new ActionContext(DONE_YES_NO_CONTEXT, 5));
        rb.add("Are you done playing Number Genie?");
      } else {
        rb.add("Since I'm still having trouble, so I'll stop here. Let's play again soon")
            .endConversation();
      }
      return rb.build();
    }

Kontexte verwenden

Verwenden Sie Kontexte, wenn Dialogflow nur in bestimmten Fällen Fallback-Intents auslösen soll. Situationen. Dies ist hilfreich, wenn Sie verschiedene Fallback-Intents für verschiedene No-Match-Szenarien.

  • Wenn Sie für einen Fallback-Intent keine Kontexte festlegen, wird er als globalen Fallback-Intent, der von Dialogflow ausgelöst wird, wenn kein anderer Intent Übereinstimmung. Sie sollten nur eine davon definieren, wenn Sie eine verwenden möchten.
  • Wenn Sie Eingabekontexte für einen Fallback-Intent festlegen, löst Dialogflow Folgendes aus: Fallback-Intent, wenn Folgendes zutrifft:

    • Die aktuellen Kontexte des Nutzers sind eine Obermenge der Kontexte, die in der die Nutzerabsicht verstehen.
    • Keine anderen Intent-Übereinstimmungen.

    So können Sie mehrere Fallback-Intents mit unterschiedlichen Eingabekontexten verwenden, für bestimmte Szenarien keine Übereinstimmungen.

  • Wenn Sie einen Ausgabekontext für einen Fallback-Intent festlegen, bleibt der Nutzer im nachdem der Fallback-Intent ausgelöst und verarbeitet wurde.

Weitere Informationen finden Sie unter Dialogflow-Kontexte.

Erneute Eingabeaufforderung ohne Eingabe

Weitere Informationen dazu finden Sie auf der Seite Erneute Aufforderungen. wenn der Nutzer keine weiteren Eingaben auf einem Sprachgerät wie Google Home, das eine kontinuierliche Interaktion erfordert.