Konversationsaktion erstellen (Dialogflow)

Du definierst die Unterhaltung für deine Aktion mit Auftragsausführung. Dabei handelt es sich um Code, der als Webhook bereitgestellt wird und die Konversationslogik. Durch die Auftragsausführung weiß Ihre Aktion, was zu tun ist, wenn Nutzende -Anfragen.

Im Fall des Interactive Canvas liefert die Auftragsausführung auch Informationen Web-App mit Assistant. Du kannst Assistant über eine HtmlResponse anweisen, Ihre Webanwendung zu rendern. Ein HtmlResponse kann auch Aktualisierungen für data bereitstellen, die die benutzerdefinierte Logik Ihrer Webanwendung verwendet, um Änderungen an der Webanwendung vorzunehmen.

Auf dieser Seite wird erläutert, wie Sie HtmlResponse bei der Auftragsausführung und im Allgemeinen verwenden Richtlinien für die Verwendung dieses Antworttyps.

HTML-Antworten

Um Informationen zu Ihrer Web-App an Assistant weiterzuleiten, müssen Sie ein HtmlResponse in Ihrer absichtsspezifischen Ausführung. Ein HtmlResponse kann die URL enthalten. der Webanwendung und Daten, die die Webanwendung aktualisieren. Beim Senden ein HtmlResponse ist, werden die folgenden Schritte ausgeführt:

  1. Bei der Ausführung des zugeordneten Intents wird ein HtmlResponse an das Gerät gesendet.
  2. Das Gerät verwendet die URL in der HtmlResponse, um die Web-App zu laden.
  3. Die JSON-Nutzlast data wird in einem Callback an die Webanwendung übergeben.
  4. Deine dialogorientierte Aktion sendet eine neue HtmlResponse, um Aktualisierungen zu senden oder um neue Bundesstaaten zu laden.

Beispielausführung

Der folgende Auszug aus dem Beispiel Der Ausführungscode zeigt, wie HtmlResponse implementiert wird:

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

const app = dialogflow({debug: true});
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});

// map of human speakable colors to color values
const tints = {
  red: 0xFF0000,
  green: 0x00FF00,
  blue: 0x0000FF,
};
app.intent('color', (conv, {color}) => {
  if (color in tints) {
    conv.ask(`Ok, I changed my color to ${color}. What else?`);
    conv.ask(new HtmlResponse({
      data: {
        tint: tints[color],
      },
    }));
    return;
  }
  conv.ask(`Sorry, I don't know that color. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      query: conv.query,
    },
  }));
});
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});

app.intent('pause', (conv) => {
  conv.ask(`Ok, I paused spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: false,
    },
  }));
});

app.intent('restart game', (conv) => {
  conv.ask(new HtmlResponse({
    data: {
      command: 'RESTART_GAME',
    },
  }));
});

exports.conversation = functions.https.onRequest(app);

welcome Intent

Im Snippet oben sendet die Auftragsausführung für den Intent welcome ein HtmlResponse durch die URL für die Web-App. Assistant empfängt diese und lädt den HTML- und JavaScript-Code unter dieser Adresse.

...
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});
...

Andere Intents

Mit HtmlResponse in der Auftragsausführung für andere Intents werden Variablenwerte übergeben. (tint oder spin im Beispiel) an die Web-App. Benutzerdefinierte Logik für das Web Die App verwendet diese Werte, um Elemente (Animationen, Farbe usw.) zu aktualisieren:

...
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});
...

Richtlinien und Einschränkungen

Beachte die folgenden Richtlinien und Einschränkungen für HtmlResponse für die Auftragsausführung:

  • Jeder Intent in Ihrer Auftragsausführung muss einen HtmlResponse enthalten. Wenn ein Intent kein HtmlResponse enthält, wird die Web-App geschlossen.
  • Sie müssen die URL Ihrer Web-App nur in den ersten Intent einfügen, an den Sie senden Den Nutzer (in der Regel ist dies der Intent Welcome).
  • HtmlResponse darf maximal 50 KB groß sein.