O Voiceflow é uma ferramenta online que permite, de maneira visual e sem precisar saber programar, que você desenhe, prototipe e publique skills para Alexa ou Actions para o Google.
Na versão paga é possível criar inúmeros projetos de forma colaborativa.
Caso tenha vindo direto para esse artigo, existe um outro artigo com os comandos do fluxo lógico
Briefing
Nosso programa consiste em uma skill que procura em uma base de dados on line informações sobre um remédio informado pelo usuário. A skill reproduzirá as indicações do remédio e oferecerá opções ao usuário, perguntando se ele deseja escutar sobre as contra indicações, a dosagem ou que as informações sejam enviadas por email.
Exemplo de interação:
Pessoa: “assistente virtual, abre o bula legal”
Assistente: “De qual remédio deseja saber a bula?”
Pessoa: “do Redoxon”
Assistente: “O redoxon é indicado para gripes e resfriados. Além dessa informação deseja saber as contra indicações ou dosagem? Caso prefira posso enviar todas as informações para seu email”
Pessoa: “Manda para meu email”
Assistente: “Email enviado”

Bloco Avançado no voice flow
Conceitos de interfaces de voz
Antes de entrar a fundo na implementação, vou apresentar alguns conceitos fundamentais na prototipação de interfaces de voz.
Um exemplo: “Quero buscar a bula do remédio Dorflex”
Utterance: O que o usuário pode dizer como “Gostaria de buscar a bula do remédio Dorflex”, “Bula do remédio” ou “Buscar a bula do remédio Dorflex”
Slot: Informação dentro de uma utterance, no caso do exemplo acima é Dorflex.
Intent: Qual intenção foi demonstrada no utterance, que na nossa skill será obter a informação de uma bula.
Interaction
Permite uma interação com o usuário e captura sua intenção(Intent) e o valor (slot) do que o usuário disse (utterance).
No fluxo Intents será necessário tentar prever o maior número de possíveis cenários para a resposta da sua pergunta. Quando houver a build da sua skill, quanto maior a quantidade de sinônimos para a resposta, maior a chance da skill conseguir sucesso para respostas diferentes das previstas.
Para ter maior assertividade nessas respostas, não há muito mistério: Entreviste o seu usuário.

Aba de Intenções (Intents)
Na aba Slots será necessário preencher a lacuna onde o usuário preencherá a informação a ser colhida.
Pergunta da assistente: “De qual remédio deseja saber a bula?”
Exemplo de respostas que serão entendidas são “do Dorflex”, “Paracetamol”, “remédio Afrin”, “o Naldecon”.
Além dos slots customizados, como o do exemplo, também é possível usar os pré-cadastrados como Número, Primeiro nome, data, dia, mês, ano e muitos outros.

Na aba Choice finalmente preenchemos a informação dita pelo usuário na nossa variável {remedio}.

Variáveis criadas

Integration
Esse é um recurso que permite fazer uma integração via API Rest ou com alguma planilha e isso permite que você possa pegar e tratar todo tipo de dado em um serviço no backend da sua aplicação, e trazer o resultado de forma simples para o seu fluxo.
Na imagem abaixo o fluxo faz uma chamada via http GET em um endpoint passando o valor da variável {remédio}. Uma vez com a resposta basta mapear o retorno json nas variáveis criadas no voiceflow.

JSON de resposta

Ferramenta chamando uma API Rest
Mais opções
Depois de ter todas as informações a assistente vai falar qual a indicação do remédio e dar opções de falar sobre contra indicação, dosagem ou enviar email com todos os dados.

Enviando email
É possível ter acesso a muitas informações (email, nome, data de nascimento, localização) do usuário mediante permissão prévia para isso. No momento da ativação da skill será perguntado ao usuário se deseja dar permissão para a skill ter acesso a aquele dado assim como poderá revogar o acesso a qualquer momento.
Press enter or click to view image in full size

Para ter acesso é necessário um fluxo do bloco de usuário chamado Permission e linkado com ele o User Info que vai preencher a informação em alguma das suas variáveis.

Blocos verdes necessários para buscar algum dado do usuário
Pontos fortes na ferramenta
1 — Mesmo sem conhecimento prévio de programação, desenvolver uma skill ou action no VoiceFlow é muito simples. A aprendizagem é rápida e intuitiva.
2 — VoiceFlow guarda as últimas 10 versões do seu projeto. Caso queira se desfazer da versão atual, pode apenas restaurar uma das 10 últimas versões que foram enviadas para o console(Alexa developer ou Google console).
3 — É possível compartilhar o fluxo para que outras pessoas testem (Não há relatório desses testes, ou seja, precisam ser acompanhados in loco).
Pontos de melhorias da ferramenta
1 —Muitas vezes um fluxo recém-apagado é enviado para o console juntamente com a skill, prejudicando o resultado dos testes. Quando isso ocorre, esse fluxo precisa ser apagado a cada nova build, diretamente no console.
2 — O teste na ferramenta, do site de desenvolvedor e do próprio assistente físico as vezes dão resultados diferentes.
3 — Apesar do versionamento interno, não encontrei uma forma de exportar para o git ou outro sistema de controle de versão fora da ferramenta.
#OFF TOPIC
Uma funcionalidade não usada no exemplo acima mas bem útil é a Code. Ela permite colocar código javascript no seu fluxo. Permite usar todas as funções que existem nessa linguagem.

No quadro acima estamos preenchendo a variável “dose” com o valor da data de hoje
Conclusão
Nesse artigo vimos como usar interações com o usuário, como capturar o valor da informação passada, integrar com APIs Rest, pedir permissão e usar um dado privado do usuário.




