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
HtmlResponseao dispositivo. - O dispositivo usa o URL no
HtmlResponsepara 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
HtmlResponsepara 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
HtmlResponseprecisa ter no máximo 50 KB.