Desenvolvendo para Alexa — parte 1
Opa, tudo bem? Seja bem-vindo. Neste artigo, e nos próximos da sequência, você vai encontrar um tutorial para criar suas Skills totalmente funcionais para a Alexa, em português. A ideia é percorrer a documentação, explorando os conceitos básicos e avançados, enquanto escrevemos código e aprendemos.
A documentação é sim bem completa, mas não há conteúdo em português sobre o assunto, e também, nada muito fácil de encontrar quando se quer construir a Skill usando um endpoint externo. Esse texto é baseado na minha experiência própria de alguns meses desenvolvendo para Alexa, dedicando-se a testar funcionalidades e explorar a documentação. A cada dia descubro coisas novas, mas resolvi organizar as ideias mais básicas por aqui, para que vocês pulem a minha primeira semana, que foi um pouco complicada. Portanto, aqui estamos, se tiver dúvidas, pode me mandar, certo?
Não sabe o que é a Alexa?
Primeiro, vamos nos situar. Se você ainda não está sabendo, a Alexa é a inteligência artificial da Amazon. Ela, por sua vez, roda em diversos devices próprios (como o Echo Dot), e também no App Amazon Alexa (disponível para IOs e Android). Essa inteligência artificial já está disponível para o Brasil à algum tempo, e em plena evolução. Ela é capaz de fazer o reconhecimento da voz e fala natural de uma pessoa, e transformar isso em textos, os quais são usadas programaticamente para construir as funcionalidades. Inclusive, há programas de incentivo bem legais para os desenvolvedores brasileiros, como recompensas pelo número de usuários das suas Skills e etc.
Como funciona
- O usuário fala com o device, que pode ser seu celular, um Echo Dot, ou um Audi, por exemplo. Existem diversos devices que rodam a Alexa!
— “Alexa, inicia o Olá Mundo, por favor?” - O device leva a sua voz para a nuvem da Amazon, e lá, a mágica acontece. Quando os textos estão prontos (o que é muito rápido), são enviados para uma estrutura de backend. Essa estrutura pode ser tanto um código próprio, quanto uma das opções internas da Amazon. No caso dos nossos exemplos, usaremos um código pronto em PHP disponível fora da Amazon. A nuvem vai enviar para a nossa API a informação falada pelo usuário, em forma de strings.
- No nosso endpoint, a informação chegará como um JSON e deve sair como um JSON. Aqui nós tratamos e decidimos o que responder. Por exemplo, podemos dar boas-vindas ao usuário. Tendo feito as devidas tratativas, é hora de devolver para a nuvem da Amazon.
- Novamente onde a mágica acontece, nossos dados, incluindo os textos de resposta, são tratados e enviados como uma mensagem de voz para o device.
- O device reproduz o áudio.
— “Olá, mundo! Essa é a sua primeira Skill. Por favor, me diga seu nome?.” - O usuário acaba de ter uma experiência de conversa natural e fluída.
Skill
Vamos definir alguns termos agora. Acho que essa você já pegou esse, neh? A Skill é como um app da loja do seu celular, ou um jogo da sua Steam. Simples assim, é o que vamos construir.
Intent
Intents representam as intenções. Lembre-se disso: cada Skill pode ter diversas Intents. Entenda que, como em uma conversa normal, as pessoas querem comunicar algo ou saber algo, essa é a intenção delas. Quando um amigo seu fala “Hei, está chovendo na rua?”, a intenção dele é saber se está chovendo no lado externo do local.
Utterance
As Utterances são o que a Alexa vai entender quando seu usuário falar com ela. Confuso? Vamos a um exemplo. Se eu quero saber se está chovendo, posso falar isso de algumas maneiras:
- “Está chovendo?”
- “Tá chovendo?”
- “Por acaso está caindo água do céu?”
Talvez esse não tenha sido o melhor dos exemplos, mas chegaremos lá. :)
Happy path
O próximo termo importante a ser entendido é esse. O objetivo ao criar uma Skill deve ser sempre uma conversa natural e fluída. Portanto, sempre começamos por um script. Nesse script, vamos pensar no caminho que a conversa vai tomar quando tudo estiver certo. Quando o usuário concordar e agir da forma esperada, nós temos um happy path. Nada a se preocupar. Vamos pensar em um agora:
Usuário:
“Alexa, abra o bem vindo.”
Alexa:
“Olá, bem vindo ao nosso tutorial. Você pode me dizer seu nome?”
Usuário:
“Claro, meu nome é Giovane.”
Alexa:
“Entendi. Esse foi seu primeiro passo Giovane, parabéns.”
Esse é um caminho simples, onde o usuário colaborou. Aqui temos que nos preocupar com poucas coisas, como o nosso lauchRequest, e a nossa intent falandoNome.
Sem se jogar em detalhes muito técnicos agora, porque serão discutidos em outro artigo, quando um usuário chama uma Skill pelo seu nome de invocação, ele está fazendo uma requisição para o ínicio dela. Um launchRequest.
Nossa Skill vai saber reconhecer isso. Já no segundo momento, nós esperamos que ele diga seu nome, afinal, perguntamos isso. Então, imaginamos que a intenção dele seja a de falar o próprio nome, isso é nossa intent falandoNome.
Tranquilo, não? Vamos lidar com as intenções dos usuários sempre em nossas Skills, tudo são intents, ou tem a ver com elas. Nossa Skill deve tratar as intenções como o usuário espera que sejam tratadas, de maneira simples e elegante. A tarefa deve ser concluída sem que o usuário precise olhar ou tocar no device da Alexa, e normalmente, que ele nem precise prestar muita atenção.
Então, sem mais delongas, essa é uma introdução curta e prática sobre o as Skills da Alexa. Direto ao ponto, esses são os conceitos que nós precisamos para começar a desenvolver. Daqui para frente, só vamos ter que lidar com requisições e criar respostas para elas. No próximo artigo, vamos escrever um pouco de código.