Actions on Google: Desenvolvendo Actions para o Google Assistant do zero
(Conteúdo Desatualizado)
No meu último post, falei sobre a plataforma de desenvolvimento Actions on Google e como usar o Google Assistant a seu favor, mostrando o quanto as Actions podem agregar em um produto existente ou na criação de um novo.
Se você ainda não sabe nada sobre Actions on Google, recomendo a leitura do meu artigo anterior, antes de dar continuidade a leitura deste post.
Agora que você já sabe como tornar o Google Assistant um aliado, vamos dar incio ao desenvolvimento de uma Action do zero!
O que vamos desenvolver?
Vamos criar uma Action que calcula a quantidade de dias restantes para chegar em uma data informada pelo usuário. Este post tem a intenção de mostrar um simples fluxo de desenvolvimento de Actions utilizando a plataforma Actions on Google, integrada com o Dialogflow e Cloud Functions for Firebase. Não irei me aprofundar nessas ferramentas, também não foi seguido os princípios de Design de Conversas. Apenas quero lhe ajudar no primeiro contato com o mundo das Actions on Google.
Action: é o ponto de entrada em uma interação entre o usuário e o Google Assistant, criada através de linguagem natural, em que o usuário pode falar ou digitar uma frase informando o nome da action que deseja interagir.
Design de Conversas: A criação de Actions para o Google Assistant exige conhecimentos em design de conversa. A Google disponibiliza um excelente site sobre Design de Conversa, um guia, para que você possa criar conversas naturais e intuitivas para os usuários.
O diagrama a seguir mostra o fluxo da aplicação que iremos criar. Tudo começa com o usuário invocando nossa Action. Em seguida o Google Assistant processa as entradas do usuário através de NLP (do inglês Natural Language Processing) e ML Ranking. Após o processamento das entradas o resultado é enviado para o agente de dialogo (Dialogflow) que irá lidar com as Intents do usuário. Dependendo da Intent acionada o Dialogflow retorna uma resposta estática diretamente ou uma resposta dinâmica através de uma requisição a um webhook (Cloud Function) que irá tratar a Intent. O fluxo segue até atender as solicitações do usuário ou se a conversas for encerrada.
Dialogflow Intents: São objetos que mapeiam a entrada do usuário para as respostas do Dialogflow.
Webhook: É uma forma de recebimento de informações quando um evento acontece. O webhook na prática, é a forma de receber informações entre dois sistemas de uma forma passiva.
Hora de por a mão na massa
Verifique suas configurações de permissão do Google
As seguintes permissões são necessárias para que você possa testar suas Actions no simulador.
- Acesse a pagina de “Controles de atividade” clicando aqui
- Faça o login na sua conta do Google, de preferência a mesma que você usa em seu Smartphone, caso deseje testar sua Action nele também (super recomendo).
- Certifique-se de que as seguintes permissões estejam ativadas:
- Atividade na Web e de apps
- Informações do dispositivo
- Atividade de voz e áudio
Crie um Actions project
Actions projects é um container para suas Actions. Ele contém pelo menos uma Action para a Intent de boas-vindas, mas você pode incluir outras Intents relevantes. Seu Actions project contém metadados (nome, descrição, categoria) para que suas Actions sejam encontradas no Actions directory.
- Acesse o Actions Console.
- Clique em em Add/import project.
3. Na janela New Project que foi aberta digite o Project name, como “Contando os Dias”. Esse é apenas um nome para referência interna, depois você poderá definir um nome externo para suas Actions.
4. Ainda na janela New Project na opção Choose the default language for your Actions selecione Portuguese(Brasil) e em Choose your country or region, selecione Brazil e depois clique em CREATE PROJECT.
5. Na próxima tela apenas clique em SKIP. Você será redirecionado para o Actions project que foi criado.
6. Agora vamos configurar como sua Action será invocada pelo usuário, clique em SETUP >Invocation no menu de na vegação à esquerda.
7. Em Display name, digite “ Contando os Dias”. Sua Action será invocada quando o usuário falar ou digitar “Ok Google, falar com Contando os Dias”. Caso prefira você pode escolher outro nome para invocar sua Action basta seguir as orientações do Actions Console. Em Google Assistant voice selecione Female 1 ou Male 1, pois as outras vozes não estão disponíveis para o idioma Portuguese(Brazil). Depois clique em SAVE no canto superior direito.
9. Clique em BUILD > Actions e logo em seguida em ADD YOUR FIRST ACTION
10. Na janela CREATE ACTION selecione Custom Intent e depois clique em BUILD.
Você será redirecionado para o Dialogflow Console em outra guia.
O Dialogflow simplifica a tarefa de compreender a entrada do usuário, extrair palavras-chave e frases da entrada e retornar respostas. Você define como tudo isso funciona dentro de um Agent Dialogflow.
Crie o Agent Dialogflow e personalize o Intent de boas vindas
- Neste momento você deve estar no Console do Dialogflow com o nome do projeto de Actions na parte superior. Talvez seja necessário autorizar o Dialogflow a usar sua conta do Google e aceitar os Termos de Serviço.
- Em DEFAULT LANGUAGE selecione Portuguese (Brazilian)- pt-br e em DEFAULT TIME ZONE deixe (GMT-3:00) American/Buenos_Aires e clique em CREATE.
3. Se tudo deu certo até aqui, você estará na página Intents. Vamos então customizar a intent de boas vindas clicando em Default Welcome intent.
4. Na seção Responses logo abaixo, exclua todos Text response clicando no icone da lixeira ao lado de cada um.
5. Agora adicione um Text response personalizado como “Olá! Qual data você está contando os dias para chegar?”, depois clique em SAVE no canto superior direito.
Teste sua Action no Assistant Simulator do Actions Console
- Na navegação à esquerda do Dialogflow Console, clique em Integrations. Em seguida, clique em INTEGRATION SETTINGS.
2. Na janela que foi aberta ative a opção Auto-preview changes para que o Dialogflow propague automaticamente as alterações realizadas para o Actions Console e o Assistant Simulator. Em seguida clique em TEST e você será redirecionado para o Assistant Simulator em uma nova guia.
3. No simulador as configurações devem estar Surface como Phone e Language como Portuguese(Brazil). Nesse momento você poderá testar a mensagem de boas-vindas que personalizamos, falando ou digitando “Falar com Contando os Dias” ou clicando na sugestão que aparece.
Crie um Intent para processar a solicitação do usuário
Na Intent de boas-vindas, você perguntou ao usuário qual data ele está contando os dias para chegar. Agora vamos precisar criar uma Intent para capturar essa informação (data). Nessa Intent vamos adicionar frases de treinamento e parâmetros para capturar as informações que precisamos da solicitação do usuário (neste caso a data).
- No console do Dialogflow clique em Intents no menu a esquerda, depois em CREATE INTENT.
2. Em Intent name digite contar-dias e na seção Training phrases clique em ADD TRAINING PHRASES para adicionar as frases abaixo. Pressione enter para adicionar.
- “dia 15 de setembro de 2018”
- “dia 20/09/2018”
- “a data é 12 de outubro de 2019”
- “primeiro de janeiro de 2018”
- “11 novembro 2020”
- “1 do 11 de 2018”
Training phrases: Um exemplo de como o usuário pode expressar. Os exemplos fornecidos são usados para treinar um modelo de aprendizado de máquina que permite que o agente (Dialogflow) combine as entradas futuras com a Intent apropriada.
3. Em Action and parameters, você deverá ver uma linha com “date-time” no campo Parameter Name. Essa entrada de parâmetro é criada automaticamente pelo Dialogflow, pois ele é capaz de auto-anotar palavras e frases que reconhece como Entity nas frases de treinamento. Observe que os textos referente a data ficam da mesma cor da Entity, nesse caso amarela. Na linha citada faça as seguintes alterações:
- Na coluna REQUIRED marque com um check
- Em PARAMETER NAME altere para “dataInformada”
- Click em Define prompts…
- Em PROMPTS na janela que foi aberta digite “Qual data você está contando os dias?” e depois clique em CLOSE. Essa pergunta será realizada caso o Dialogflow não consiga identificar o parâmetro (apenas se ele estiver marcado como REQUIRED).
Deve ficar assim:
Entities (Dialogflow): Representa uma categoria de coisas. O Dialogflow vem com um catálogo de Entidades do Sistema (por exemplo, “cor” e “data” são entidades que o Dialogflow “conhece”), mas os desenvolvedores podem definir Entidades Personalizadas para palavras e frases específicas do domínio. O Dialogflow usa entidades para extrair valores de parâmetros de entradas de linguagem natural.
4. Logo abaixo em Fulfillment, ative a opção Enable webhook call for this intent. Isso habilitará a chamada para um webhook, que irá processar a resposta para o usuário dinamicamente.
5. Clique em SAVE no top direto da pagina.
Após concluir os passos anteriores, o Dialogflow já será capaz de extrair automaticamente os parâmetros reconhecidos na fala do usuário, neste caso, o parâmetro dataInformada. Depois de obter essas informações, o Dialogflow as disponibiliza para o fulfillment.
Fulfillment: é a implementação que permite que seu Agent Dialogflow chame a lógica de negócios de acordo com a Intent, como em um webhook, por exemplo.
Implemente o webhook
Vamos agora criar o fulfillment diretamente no Dialogflow via Cloud Functions for Firebase.
- No menu a esquerda clique em Fulfillment.
- Em seguida ative Inline Editor(Powered by Cloud Functions for Firebase).
- Apague todo código que se encontra no index.js.
- Copie e cole o código abaixo no editor inline, depois clique em DEPLOY no canto direito inferior do editor.
Deve ficar assim:
Entenda o código
A function app.intent lida com a Intent ‘contar-dias’ que foi criada nos passos anteriores. Ela recebe a dataInformada e passa para function calcularDias(dataInformada), que realiza o cálculo e retorna a quantidade de dias, na function app.intent é realizada validação dessa quantidade, para retornar a mensagem correta para o usuário.
Teste sua Action
- No lado direito da tela clique em See how it works in Google Assistant. você será direcionado para o Assistant Simulator em uma nova guia.
- Execute testes informando uma data futura e confira o resultado.
- Teste também no Google Assistant em seu Smartphone! lembrando, o Assitant deve está vinculado a mesma conta do projeto e o idioma do aparelho deve está em Portuguese (Brazil).
Se você tiver quaisquer problema seguindo os passos, entre em contato comigo ou junte-se a comunidade Actions on Google Dev BR no Slack.
Você gostou deste texto?
Compartilhe para que mais pessoas o leiam! no Twitter | LinkedIn
Obrigado pela leitura e até o próximo post.
Fontes: