1. Introdução
Neste laboratório, você criará uma ação simples usando o Dialogflow e aprenderá a integrá-lo ao Google Assistente.
A ordem das tarefas simula uma experiência de desenvolvedor de nuvem:
- criar um agente do Dialogflow v2
- Criar entidades
- Criar intents
- Configurar um webhook com o Cloud Functions do GCP
- Usar a base de conhecimento para importar perguntas frequentes
- testar o chatbot
- Ativar a integração com o Google Assistente
O que você criará
Criaremos um app do Google Assistente para o grupo do encontro "Mulheres na voz". Você poderá perguntar quando será o próximo encontro, agendar dicas ou perguntas gerais sobre o grupo do encontro. |
O que você vai aprender
- Como criar um chatbot com o Dialogflow v2
- Como criar uma conversa linear com o Dialogflow
- Como usar entidades
- Como usar a base de conhecimento
- Como configurar fulfillments de webhook com as funções do Dialogflow e do GCP
- Como levar seu aplicativo para o Google Assistente com o Actions on Google
Pré-requisitos
- Você vai precisar de uma identidade do Google / endereço do Gmail para criar um agente do Dialogflow.
- Você receberá créditos de nuvem do GCP pelo uso do Cloud Functions do GCP.
- Você precisará acessar esta planilha Google pública para conseguir os dados do agente.
- Abra o arquivo em uma nova guia: https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
- Não é necessário ter conhecimento básico de JavaScript, mas isso pode ser útil caso você queira alterar o código de fulfillment do webhook.
2. Etapas da configuração
Ativar a Atividade na Web no seu navegador
- Clique em: http://myaccount.google.com/activitycontrols
- Verifique se os recursos Web e A atividade no app está ativada:
Crie um agente do Dialogflow
- Na barra à esquerda, abaixo do logotipo, selecione Criar novo agente. Se você já tiver agentes, clique no menu suspenso primeiro.
- Especifique um nome de agente:
yourname-wiv
(use seu próprio nome) - Como idioma padrão, escolha: English - en.
- Como fuso horário padrão, escolha o mais próximo de você.
- Não selecione Mega-agente. (Com esse recurso, é possível criar um agente abrangente que pode orquestrar entre "subagentes". Não precisamos disso agora.)
- Clique em Criar.
Configure o Dialogflow
- Clique no ícone de engrenagem no menu à esquerda, ao lado do nome do projeto.
- Digite a seguinte descrição de agente: Agente Mulheres no Voice
- Role para baixo até Recursos Beta e mude a chave para ativar os recursos Beta.
- Role para baixo até Log Settings e deslize os dois interruptores para "Registrar as interações do Dialogflow" e para registrar todas as interações no Google Cloud Stackdriver. Precisaremos disso mais tarde, caso queiramos depurar nossa ação.
- Clique em Salvar.
- Clique em Concluir.
Configurar o Actions on Google
- No painel à direita, clique no link Google Assistente em Saiba como ele funciona no Google Assistente.
Isso vai abrir: http://console.actions.google.com
OBSERVAÇÃO: verifique se você fez login com a mesma Conta do Google usada no Dialogflow.
Se você nunca usou o Actions on Google, precisa preencher este formulário:
- Tente abrir sua ação no simulador** clicando no nome do projeto.**
- Selecione Desenvolver na barra de menus.
Desmarque a opção Corresponder à configuração de idioma do usuário. Para garantir que o texto para o sintetizador de voz não seja substituído pelo idioma padrão do Google Assistente.
- Clique em Salvar.
- Selecione Testar na barra de menus.
- Verifique se o simulador está definido como English e clique em Talk to my test-app.
A ação vai cumprimentá-lo, com a intent padrão básica do Dialogflow. Isso significa que a configuração da integração com a Action no Google funcionou.
Configure o Google Cloud
Para este tutorial, você precisará de uma conta do GCP com uma conta de faturamento. Se você ainda não tem uma conta, siga estas etapas para criar uma.
Normalmente, uma conta de faturamento exige uma forma de pagamento, como um cartão de crédito. Para este workshop, podemos usar créditos para pular o processo.
- Acesse esse URL e faça login
- Clique: Clique aqui para acessar seus créditos
- Clique em Aceitar e Continuar
Tudo pronto. Você criou uma conta de faturamento com US$ 25, o que é mais do que suficiente para usar o Cloud Functions por muito tempo.
Ativar a API Google Sheets
Se o agente precisar de mais do que respostas de intent estáticas (por exemplo, para buscar dados de um serviço da Web, banco de dados ou planilha), você precisará usar o fulfillment para conectar o serviço da Web ao agente. Conectar seu serviço da Web permite que você realize ações com base em expressões de usuário e envie respostas dinâmicas para o usuário.
Por exemplo, se um usuário quiser receber uma dica de livro ou blog, seu serviço da Web poderá verificar seu banco de dados e responder com um artigo para o usuário ler.
Neste tutorial, não usaremos um banco de dados, e sim uma planilha Google. Quando a página for atualizada, a ação do Google Assistente também será atualizada. Tudo pronto.
- Abra esta Planilha Google em uma nova guia do navegador, caso ainda não tenha feito isso:
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- IMPORTANTE: faça uma cópia desta página. Clique em Arquivo > Fazer uma cópia
- Depois que a planilha for copiada, clique em Compartilhar
- Será necessário conceder à conta de serviço do Dialogflow direitos de edição. Para fazer isso, abra Dialogflow > Configurações (engrenagem).
- Role para baixo até Google Project.
- Copie o endereço da conta de serviço (e-mail). O resultado deve ser parecido com este: dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- Cole essa conta de serviço no pop-up "Compartilhar" do Planilhas Google e conceda direitos de edição a ela.
- Em seguida, precisamos lembrar o ID da planilha em que estamos trabalhando no momento.
The Sheets URL will look something like this:
https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448
But we are only interested in the Sheet id, which is the part between:
https://docs.google.com/spreadsheets/d/ e /edit#gid=1240329448 (sem as barras).
So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**
**Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
- Abrir em outra guia do navegador. http://console.cloud.google.com. Caso você tenha mais projetos no Google Cloud, ative o novo projeto do Dialogflow: seunome-wiv. - Na barra de pesquisa, pesquise por API Google Sheets.
- Clique nele e no botão Ativar da API Google Sheets na parte de cima.
3. Entidades personalizadas
Entidades são objetos em que seu app ou dispositivo realiza ações. Pense nisso como parâmetros / variáveis. Na nossa ação, perguntaremos:
"Quero uma dica de leitura sobre
Bots de chat
/ Quero uma dica de leitura sobre
voz*"*
Se você disser chatbots, voz ou ambos, isso será coletado por uma entidade personalizada que será usada como parâmetro na minha solicitação para um serviço da Web.
Veja mais informações sobre as entidades do Dialogflow.
Como criar a entidade do canal
- No Console do Dialogflow, clique no item de menu: Entities
- Clique em Criar entidade.
- Nome da entidade:
tech
(use apenas letras minúsculas) - Especifique as opções com os sinônimos. Você pode usar a tecla Tab para navegar pela interface.
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.** Alterne para o modo **Raw Edit** clicando no botão de menu ao lado do botão azul "Save".
- Observe que você também poderia ter inserido todas as entidades no formato CSV. Isso pode ser útil quando você precisa criar muitas entidades.
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- Clique em Salvar.
4. Intents
O Dialogflow usa intents para categorizar as intenções de um usuário. As intents têm frases de treinamento, que são exemplos do que um usuário pode dizer ao agente.
Por exemplo, um usuário que quer saber quando será o próximo evento pode perguntar:
"Quando é o próximo encontro?"
Quando um usuário escreve ou diz algo, chamado de expressão do usuário, o Dialogflow faz a correspondência entre essa expressão e a melhor intent do seu agente. Essa correspondência também é conhecida como classificação de intent.
Confira mais informações sobre intents do Dialogflow.
Como modificar a intent de boas-vindas padrão
Quando você cria um novo agente do Dialogflow, duas intents padrão são criadas automaticamente. A Default Welcome Intent é o primeiro fluxo que você acessa quando inicia uma conversa com o agente. A Default Fallback Intent é o fluxo exibido quando o agente não entende você ou não consegue associar uma intent ao que você acabou de dizer.
- Clique em Intents > Intent de boas-vindas padrão
No caso do Google Assistente, ele será iniciado automaticamente com a intent de boas-vindas padrão. Isso ocorre porque o Dialogflow está detectando o evento de boas-vindas. No entanto, também é possível invocar a intent dizendo uma das frases de treinamento inseridas.
Esta é a mensagem de boas-vindas para a intent de boas-vindas padrão:
Usuário | Agente |
"Ok Google, fale com <seunome>-WIV" | "Olá, sou Anna, a agente virtual do Women in Voice.""Você pode me pedir informações sobre encontros, mulheres na voz ou uma dica de leitura. "O que você quer saber?" |
- Role para baixo até Respostas.
- Limpar todas as respostas de texto.
- Na guia padrão, crie as três respostas a seguir. Clique em Adicionar respostas > Texto ou Resposta SSML para cada nova linha:
- Olá, sou Anna, a agente virtual do Women in Voice.
- Você pode me pedir informações sobre encontros, mulheres na voz ou uma dica de leitura.
- O que você quer saber?
A configuração será parecida com esta captura de tela.
- A resposta anterior é usada para chatbots. É possível modificar um pouco a saída, especificamente para o Google Assistente. Usaremos a linguagem de marcação de síntese de fala (SSML, na sigla em inglês) para fazer pausas nas frases. Clique na guia Google Assistente.
- Não ative a opção "Padrão", porque a mensagem do bot de bate-papo não será reutilizada.
- Clique em Adicionar respostas > Resposta simples
- Adicione a seguinte versão de texto:
Hey there, I'm Anna, the virtual agent of Women in Voice.
You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?
- Em seguida, clique em Personalizar saída de áudio.
- E adicione a seguinte versão do SSML:
<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>
You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s>
What would you like to know?</s></p></speak>
A configuração será parecida com esta captura de tela.
- Clique em Salvar.
Aqui você encontra mais informações sobre SSML para o Actions on Google.
- Vamos testar essa intent. Primeiro, vamos testá-lo no simulador do Dialogflow.
Digite: Hello. Esta mensagem deve ser retornada.
- Volte para o console do Actions on Google.
(Você pode querer manter isso em outra guia.)
Clique em Falar com meu app de teste. Ouça a nova mensagem de recepção.
Como modificar a intent de fallback padrão
- Clique em Intents > Intent de fallback padrão
- Role para baixo até Respostas.
- Limpar todas as respostas de texto.
- Na guia padrão, crie as respostas a seguir, cada uma em uma nova linha, para alternar entre essas opções:
Sorry, can you repeat this?
I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.
- Clique em Salvar.
Quando você não inserir uma saída do Google Assistente, ela usará o padrão.
Criar a intent de interrupção
- Clique no item de menu Intents.
- Clique em Create Intent (Criar intent).
- Insira o nome da intent:
Stop Intent
- Clique em Adicionar frases de treinamento
No
That's it
Bye
I don't want that
Goodbye
It's ok for now
Quit
I want to stop
Close this
End the conversation
- Role para baixo até Respostas.> Adicionar resposta
- Adicione as seguintes opções de texto:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- Mude a posição da chave: Set this intent as the end of conversation. Isso garante que, quando a intent for correspondida, a ação do Google Assistente será fechada.
- Clique em Salvar.
Criar o intent do encontro
A intent do encontro para o encontro contém esta parte da conversa:
Usuário | Agente |
"Quando é o próximo encontro?" | "O próximo encontro será <data> às <time> em <location>. O tema será <topic>. E os alto-falantes são: <alto-falantes>. Inscreva-se na nossa newsletter." |
- Clique no item de menu Intents.
- Clique em Create Intent (Criar intent).
- Insira o nome da intent:
Meetup Intent
(use a letra M e I maiúsculo. - Se você soletrar a intent de forma diferente, o serviço de back-end não funcionará. - Clique em Adicionar frases de treinamento
When is the next meetup?
Do you have any events?
Which events are in the planning?
Are there meetup events soon?
I would love to attend a meetup
Can I join a virtual meetup?
When will you get together?
Can I join?
What does your calendar look like?
- Clique em Fulfillment > Ativar fulfillment
- Mude a posição da chave Enable Webhook call for this intent.
- Clique em Salvar.
Criar a intent de dica
A intent de dica contém esta parte da conversa:
Usuário | Agente |
"Quero uma dica de leitura." | "Você quer ler mais sobre chatbots, voz ou ambos?" |
"Voz" | "Certo, aqui está a dica do dia! O elemento <type> <title> de <author>. Quer receber outra dica sobre livro ou artigo? Além disso, posso falar mais sobre os encontros ou o que fazemos. Como posso ajudar?" |
- Clique novamente no item de menu Intents.
- Clique em Create Intent (Criar intent).
- Insira o nome da intent:
Tip Intent
(use o "L" e o "I" maiúsculos. - Se você soletrar a intent de forma diferente, o serviço de back-end não funcionará. - Clique em Adicionar frases de treinamento e adicione o seguinte:
Can I get a tip for an article?
I would like to receive a reading tip
Any book tips?
What's nice to read?
I want to learn more about Chatbots, what should I read?
What are nice blogs?
Do you have book suggestions?
I want to receive information about Both
Can I have Chatbots reading tip
I would like to read more about Voice
Voice please
Both are okay.
Reading tip
Tip
Blog
Article
Book
Book suggestions
Yes
Yeah
Another tip
Yes one more
- Role para baixo até Ação e parâmetros.
- Marque a opção tecnologia como exigida.
Clique em Definir prompt e digite:
Do you want to read more about Chatbots, Voice or Both?
- Clique em Fulfillment > Ativar fulfillment
Desta vez, não estamos fixando a resposta no código. A resposta virá da função do Cloud. Assim, mude a chave Enable Webhook call for this intent (Ativar chamada de webhook para esta intent).
Clique em Fulfillment > Ativar fulfillment
- Mude a posição da chave Enable Webhook call for this intent.
- Clique em Salvar.
5. Conectores de conhecimento
Os conectores de conhecimento complementam as intents definidas. Eles analisam documentos de conhecimento para encontrar respostas automatizadas. Por exemplo, perguntas frequentes ou artigos de arquivos CSV, sites on-line ou até mesmo arquivos PDF. Para configurá-los, defina uma ou mais bases de conhecimento, que são coleções de documentos de conhecimento.
Leia mais sobre os conectores de conhecimento.
Vamos tentar.
- Selecione a tag en para escolher o idioma inglês no menu superior.
- Selecione Conhecimento (Beta) no menu.
- Clique no botão azul à direita: Criar base de conhecimento.
- Digite como um nome de base de conhecimento. Women in Voice e clique em Salvar.
- Clique no link Criar o primeiro.
- Uma janela será aberta.
Use a seguinte configuração:
Nome do documento: Folha de perguntas frequentes sobre as mulheres no Voice
Tipo de conhecimento: perguntas frequentes
Tipo MIME: CSV
- Vamos precisar dos dados desta planilha. Verifique se ela está aberta e selecione a guia "Perguntas frequentes".
- Selecione Arquivo > Fazer o download > CSV
- No Dialogflow, clique em Fazer upload de arquivo do computador e selecione o arquivo CSV que você baixou. Clique em Criar.
Uma base de conhecimento foi criada:
- Clique em Adicionar resposta.
Crie as respostas a seguir e clique em Salvar:
$Knowledge.Answer[1]
- Clique em Ver detalhes.
Serão exibidas todas as perguntas frequentes que você implementou no Dialogflow.
Isso é fácil!
Também é possível apontar para um site HTML on-line com perguntas frequentes a fim de importar perguntas frequentes para seu agente. É possível até fazer upload de um PDF com um bloco de texto, e o Dialogflow vai criar perguntas.
- Clique em Conhecimento (Beta) no menu do Dialogflow para voltar a todos os conectores da base de conhecimento.
- É possível alterar os pontos fortes e fracos da base de conhecimento. Isso faz sentido quando você tem a ideia de que suas perguntas frequentes estão ganhando ou perdendo em suas próprias intents. Como não temos muitas intenções, vamos tornar nossa base de conhecimento um pouco mais forte. Mude a escala para -0.2. Depois de arrastar o controle deslizante, ele salvará automaticamente o valor.
Agora, as perguntas frequentes devem ser vistas como "extras" para adicionar aos seus agentes, ao lado dos fluxos de intents. As perguntas frequentes da base de conhecimento não podem treinar o modelo. Portanto, fazer perguntas de uma forma completamente diferente pode não ter uma correspondência, porque não faz uso de processamento de linguagem natural (modelos de machine learning). É por isso que, às vezes, vale a pena converter suas perguntas frequentes em intents.
6. Fulfillment de webhook
Criar uma função do Google Cloud
- Acesse http://console.cloud.google.com em outra guia do navegador.
- Selecione Cloud Functions no menu à esquerda.
- Clique em Criar função.
- Especifique a seguinte configuração:
- Nome:
dialogflow
- Memória alocada: 256MiB
- Acionador: HTTP
- Copie o URL para a área de transferência.
- Selecione Editor in-line.
- Ambiente de execução: NodeJS 8
- Função a ser executada:
dialogflow
- Confirme que esta caixa de seleção de autenticação está marcada:
- Veja o conteúdo de package.json. Copie e cole o código na guia package.json do editor.
Este código carrega as bibliotecas npm corretas no Google Cloud:
{
"name": "dialogflow",
"description": "Cloud Functions",
"engines": {
"node": "8"
},
"dependencies": {
"request": "^2.85.0",
"request-promise": "^4.2.5",
"dialogflow-fulfillment": "^0.6.1",
"actions-on-google": "^2.2.0",
"googleapis": "^48.0.0",
"moment": "^2.24.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"ngrok": "^3.2.7"
},
"private": true
}
- Veja o conteúdo de index.js. Copie e cole o snippet na guia index.js do editor.
Esse código será integrado à biblioteca googleapis para buscar dados de uma planilha Google. Ele usa a biblioteca actions-on-google para mostrar cards em um dispositivo com o Google Assistente. Ele usa a biblioteca dialogflow-fulfillment para classificar intents do Dialogflow. E usa a biblioteca moment para lidar com objetos de data e hora.
/* jshint esversion: 8 */
'use strict';
process.env.DEBUG = 'dialogflow:debug';
const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';
const {
BasicCard,
Button,
} = require('actions-on-google');
const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;
const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
// Should change this to file.only probably
const auth = await google.auth.getClient({
scopes: [SHEETS_SCOPE],
});
return google.sheets({version: 'v4', auth});
}
/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
let datetime = moment(date, 'YYYY-MM-DD');
return `${datetime.format('D MMMM')}`;
};
/* When the tipIntent Intent gets invoked. */
function tipIntent(agent) {
var par = agent.parameters.tech;
var selection = [];
//console.log(par);
//console.log(books);
for(var i = 0; i<books.length; i++){
if(books[i][2].toLowerCase() == par.toLowerCase()) {
selection.push(books[i]);
}
}
var random = Math.floor(Math.random() * selection.length);
var booktip = selection[random];
//console.log(selection[random]);
let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
//console.log(booktip[8]);
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
let conv = agent.conv();
conv.ask(`<speak>${spokenText}</speak>`);
conv.ask(new BasicCard({
title: `Tip of the day!`,
subtitle: `${par}`,
text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
buttons: new Button({
title: 'Read',
url: `${booktip[8]}`,
})
}));
conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
// Add Actions on Google library responses to your agent's response
agent.add(conv);
} else {
agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
}
}
function meetupIntent(agent) {
let conv = agent.conv();
let record;
console.log(meetups);
for(var i = 0; i<meetups.length; i++){
let d = moment(meetups[i][0], 'YYYY-MM-DD');
let today = moment(new Date());
if(moment(d).isSameOrAfter(today)) {
// the i event is not in the past
record = meetups[i];
console.log(record);
break;
}
}
let date = getSpokenDate(record[0]);
let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
let spokenText3 = `You can register via our newsletter.`;
let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
conv.ask(new BasicCard({
title: `Meetup`,
subtitle: `${record[2]}`,
text: `${record[0]} ${record[1]} - ${record[3]}`,
buttons: new Button({
title: 'Register',
url: `http://www.meetup.com`
})
}));
conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
agent.add(conv);
} else {
agent.add(`${writtenText} Is there anything else I can help you with?`);
}
}
exports.dialogflow = async (request, response) => {
var agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
const client = await getSheetsClient();
const allBooks = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Books&Blogs!A:I',
});
const allEvents = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Meetups!A:D',
});
books = allBooks.data.values;
meetups = allEvents.data.values;
books.shift();
meetups.shift();
var intentMap = new Map();
intentMap.set('Tip Intent', tipIntent);
intentMap.set('Meetup Intent', meetupIntent);
agent.handleRequest(intentMap);
};
- Clique no link "Variáveis de ambiente, rede, tempos limite e muito mais"
- Selecione a conta de serviço Dialogflow Integrations.
Por padrão, ele está usando uma conta de serviço do GAE App Engine, mas deve ser a mesma conta de serviço que foi compartilhada nas Planilhas Google, nas primeiras etapas deste tutorial.
- Antes de implantarmos a função do Cloud. Vamos mudar uma linha do código na guia index.js. Terceira linha de código:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
Em uma das primeiras etapas, escrevemos essa tecla no Bloco de Notas. Copie e cole esse ID no seu código.
- Agora estamos prontos. Clique no botão Criar. Isso vai levar um tempo, porque ele está implantando a função sem servidor.
Ativar fulfillments no Dialogflow
- Voltar para o Dialogflow
- Clique em Fulfillment no menu principal.
- Ative a opção Webhook.
- Digite o URL da função do Cloud que foi copiada para a área de transferência.
Por exemplo: https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- Clique em Salvar.
- Agora vamos testar o webhook, para saber se o código funciona e testar os fluxos diretamente no simulador do Dialogflow.
7. Ações no Google
O Actions on Google é uma plataforma de desenvolvimento para o Google Assistente. Ela permite o desenvolvimento terceirizado de "ações", miniaplicativos do Google Assistente que oferecem mais funcionalidades.
Você precisa invocar uma ação do Google pedindo para o Google abrir ou falar com um app.
Isso abrirá sua ação, mudará a voz, e você deixará o campo "nativo". escopo do Google Assistente. Isso significa que tudo o que você perguntar ao agente a partir deste ponto precisa ser criado por você. Durante sua própria ação, não é possível pedir informações sobre a previsão do tempo ao Google, se é isso que você quer. primeiro é necessário deixar (fechar) o escopo da ação atual (seu app).
Testar sua ação no simulador do Google Assistente
Vamos testar a seguinte conversa:
Usuário | Google Assistente |
"Ok Google, fale com meu app de teste." | "Adquirir a versão de teste do meu aplicativo."" |
Usuário | Seu-Nome-WIV |
- | "Olá, sou Anna, a agente virtual do Women in Voice. Você pode me pedir informações sobre encontros, mulheres na voz ou uma dica de leitura. O que você quer saber?" |
Posso dar uma dica para um blog? | "Você quer ler mais sobre chatbots, voz ou ambos?" |
Chatbots | "Certo, aqui está a dica do dia! The Article Chatbots And The Challenge Of Invisible Affordances of Cobus Greyling.Quer mais uma dica sobre livro ou artigo? Além disso, posso falar mais sobre os encontros ou o que fazemos. Como posso ajudar?" |
Quando é o próximo encontro? | "O próximo encontro vai ser 29 de abril, às 18h, em um Hangout virtual. O tema será "Workshop on-line: crie Ações do Google com o Dialogflow". Você pode se inscrever na nossa newsletter.Posso ajudar com mais alguma coisa?" |
Qual é o URL do seu site? | "Você pode nos encontrar em www.womeninvoice.com. Posso ajudar em mais alguma coisa?" |
Não, é isso | "Tudo bem. Espero encontrar você em um dos nossos encontros!" |
- Voltar para o simulador do Google Assistente
Abra: https://console.actions.google.com
- Clique no ícone de microfone e pergunte o seguinte:
Talk to my test app.
- Agora vamos perguntar:
Can I have a tip for a blog?
Isso retornará:
"Você quer ler mais sobre chatbots, voz ou ambos?"
Chatbots
"Certo, aqui está a dica do dia! The Article Chatbots And The Challenge of Hidden Affordances of Cobus Greyling.
Quer receber outra dica sobre livro ou artigo? Além disso, posso falar mais sobre os encontros ou o que fazemos. Como posso ajudar?"
- Vamos tentar uma versão diferente da mesma pergunta:
"Yes, I want to read more about Voice"
"Certo, aqui está a dica do dia! The Book Designing Voice User Interfaces: Principles of Conversational Experiences (em inglês), ... de Cathy Pearl.
Quer receber outra dica sobre livro ou artigo? Além disso, posso falar mais sobre os encontros ou o que fazemos. Como posso ajudar?"
Observe que você nunca usou essa frase de treinamento no Dialogflow antes. Isso corresponde à intent certa.
Observe também que você não recebeu outra pergunta, porque forneceu informações suficientes para o Dialogflow continuar.
- Continue o Dialogflow com as seguintes frases:
What's the URL for your website
Bye
Erros? Verifique os registros.
Sempre que você usar console.log()
no código da função do Cloud, os dados serão gravados nos registros do GCP (Stackdriver). Para acessar esses registros, abra o console do Cloud > Geração de registros.
No primeiro menu suspenso, selecione Função do Cloud > dialogflow para filtrar seus registros.
8. Parabéns
Você criou sua primeira ação do Google Assistente com o Dialogflow. Muito bem!
Como você deve ter notado, a ação estava sendo executada no modo de teste, que está vinculado à sua Conta do Google. Faça login no dispositivo Nest ou no app Google Assistente no smartphone iOS ou Android com a mesma conta. Você também pode testar sua ação.
Agora esta é uma demonstração de workshop. No entanto, ao criar aplicativos para o Google Assistente de verdade, você pode enviar a ação para aprovação. Leia este guia para mais informações.
O que vimos
- Como criar um chatbot com o Dialogflow v2
- Como criar entidades personalizadas com o Dialogflow
- Como criar uma conversa linear com o Dialogflow
- Como configurar fulfillments de webhook com o Dialogflow e o Google Cloud Functions
- Como levar seu aplicativo para o Google Assistente com o Actions on Google
Qual é a próxima etapa?
Gostou do codelab? Confira esses laboratórios incríveis!
- Crie uma ação de guia para TV com o Dialogflow e o Actions on Google
- Criar ações para o Google Assistente com o Dialogflow (nível 1)
- Criar ações para o Google Assistente com o Dialogflow (nível 2)
- Criar ações para o Google Assistente com o Dialogflow (nível 3)
- Como entender o fulfillment integrando o Dialogflow ao Google Agenda
- Integrar a API Google Cloud Vision ao Dialogflow