Você define a conversa para sua ação com fulfillment, que é o código implantado como um webhook que contém os arquivos lógica de conversação. O fulfillment informa à ação o que fazer quando os usuários solicitações.
Na tela interativa, o atendimento de pedidos também transmite informações sobre o
app da Web ao Assistente. Você pode usar HtmlResponse
para dizer ao Google Assistente para
para renderizar seu app da Web. Um HtmlResponse
também pode fornecer atualizações para data
, que
que a lógica personalizada do seu app da Web usa para fazer alterações nele.
Nesta página, explicamos como usar HtmlResponse
no processamento de pedidos e
diretrizes para usar esse tipo de resposta.
Respostas HTML
Para transmitir informações sobre seu app da Web para o Google Assistente, você precisa incluir um
HtmlResponse
no fulfillment específico da intent. Um HtmlResponse
pode conter o URL.
do app da Web e os dados que o atualizam. Quando você enviar
uma HtmlResponse
, ocorrem as seguintes etapas:
- O fulfillment da intent correspondente envia um
HtmlResponse
ao dispositivo. - O dispositivo usa o URL no
HtmlResponse
para carregar o app da Web. - O payload JSON
data
é transmitido ao app da Web em um callback. Sua ação de conversa envia um novo
HtmlResponse
para enviar atualizações ou carregam novos estados.
Amostra de fulfillment
O trecho a seguir do exemplo
o código de fulfillment mostra como implementar 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
No snippet acima, o fulfillment da intent welcome
envia uma
HtmlResponse
pelo URL do app da Web. O Google Assistente recebe isso
e carrega o HTML e o JavaScript nesse endereço.
...
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',
}));
});
...
Outras intents
O HtmlResponse
no fulfillment de outras intents transmite valores de variáveis
(tint
ou spin
na amostra) ao app da Web. A lógica personalizada para a Web
usa esses valores para atualizar os elementos (animações, cores etc.):
...
app.intent('start', (conv) => {
conv.ask(`Ok, I'm spinning. What else?`);
conv.ask(new HtmlResponse({
data: {
spin: true,
},
}));
});
...
Diretrizes e restrições
Lembre-se das seguintes diretrizes e restrições da HtmlResponse
ao criar o fulfillment:
- Cada intent no fulfillment precisa incluir um
HtmlResponse
. Se uma intent não incluir umHtmlResponse
, seu app da Web será fechado. - Você só precisa incluir o URL do seu app da Web na primeira intent enviada
o usuário (normalmente é a intent
Welcome
). - O arquivo
HtmlResponse
precisa ter no máximo 50 KB.