Vous définissez la conversation de votre action à l'aide d'un fulfillment, Il s'agit d'un code déployé en tant que webhook qui contient le code de votre agent la logique de conversation. Le traitement indique à votre action ce qu'il faut faire lorsque les utilisateurs requêtes.
Pour Interactive Canvas, votre traitement communique également des informations sur votre
l'application Web à l'Assistant. Vous pouvez utiliser un HtmlResponse
pour demander à l'Assistant de
afficher votre application Web. Un HtmlResponse
peut également fournir des mises à jour à data
, qui
votre logique personnalisée d'application Web utilise
pour apporter des modifications à votre application Web.
Cette page explique comment utiliser HtmlResponse
dans le traitement et les paramètres généraux
consignes d'utilisation de ce type de réponse.
Réponses HTML
Pour transmettre à l'Assistant des informations concernant votre application Web, vous devez inclure un
HtmlResponse
dans le traitement spécifique à l'intent. Un élément HtmlResponse
peut contenir l'URL
de l'application Web et les données
qui la mettent à jour. Lorsque vous envoyez
un HtmlResponse
, les étapes suivantes se produisent:
- Le traitement de l'intent correspondant envoie un
HtmlResponse
à l'appareil. - L'appareil utilise l'URL du fichier
HtmlResponse
pour charger l'application Web. - La charge utile JSON
data
est transmise à l'application Web dans un rappel. Votre action de conversation envoie un nouveau
HtmlResponse
pour envoyer des mises à jour ou charger de nouveaux états.
Exemple de traitement
L'extrait suivant de l'exemple
fulfillment montre comment implémenter HtmlResponse
:
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
Dans l'extrait de code ci-dessus, le traitement de l'intent welcome
envoie une
HtmlResponse
par l'URL de l'application Web. L'Assistant reçoit ceci
et charge le code HTML et JavaScript à cette 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',
}));
});
...
Autres intents
Le HtmlResponse
dans le traitement pour les autres intents transmet des valeurs variables
(tint
ou spin
dans l'exemple) à l'application Web. La logique personnalisée pour le Web
L'application utilise ces valeurs pour mettre à jour des éléments (animations, couleur, etc.):
...
app.intent('start', (conv) => {
conv.ask(`Ok, I'm spinning. What else?`);
conv.ask(new HtmlResponse({
data: {
spin: true,
},
}));
});
...
Consignes et restrictions
Gardez à l'esprit les consignes et restrictions suivantes pour HtmlResponse
lorsque vous créez votre traitement:
- Chaque intent de votre traitement doit inclure un
HtmlResponse
. Si un intent n'inclut pas deHtmlResponse
, votre application Web se ferme. - Il vous suffit d'inclure l'URL de votre application Web dans le premier intent que vous envoyez à
l'utilisateur (il s'agit généralement de l'intent
Welcome
). - La taille de
HtmlResponse
ne doit pas dépasser 50 Ko.