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
HtmlResponsean das Gerät gesendet. - Das Gerät verwendet die URL in der
HtmlResponse, um die Web-App zu laden. - Die JSON-Nutzlast
datawird 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
HtmlResponseenthalten. Wenn ein Intent keinHtmlResponseenthä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). HtmlResponsedarf maximal 50 KB groß sein.