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:
- Bei der Ausführung des zugeordneten Intents wird ein
HtmlResponse
an das Gerät gesendet. - Das Gerät verwendet die URL in der
HtmlResponse
, um die Web-App zu laden. - Die JSON-Nutzlast
data
wird in einem Callback an die Webanwendung übergeben. 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 keinHtmlResponse
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.