– Olá a todos, meu nome é Andrea, e eu trabalho como Técnico Evangelista na equipe Amazon Alexa. Hoje, estou super feliz de apresentar
uma série dedicada para construir skills de Alexa do zero. Ela será separada em vídeos diferentes, e cada vídeo cobrirá
um módulo de forma independente. Se você seguir todos os
módulos juntos, você aprenderá a construir uma skill
do início ao fim. Neste primeiro vídeo, nós vamos
cobrir o básico. A terminologia, a skill "Hello World" e introduzir você nesta
jornada de construção de skills. Então, sem mais demora, vamos começar. Então, antes de irmos para o código, vamos
olhar para os princípios básicos.
O que é Alexa? Em primeiro lugar, há dois lados de Alexa. O primeiro lado é o Alexa Voice Service. Tudo o que você precisa é de wi-fi, um
chip e um microfone e qualquer dispositivo pode se tornar habilitado para Alexa. Há muitos fabricantes que estão habilitando Alexa em
seus próprios dispositivos então não são apenas os Echos
que pode se conectar à Alexa.
O outro lado é o Alexa Skills Kit. Então, uma vez que a Alexa está disponível
nesses dispositivos, a que conteúdo os usuários têm acesso? E estas são Skills. Skills são habilidades
que os desenvolvedores dão a Alexa para que ela seja capaz de fazer coisas diferentes. Então, como abrir uma Skill? Você abre uma skill primeiramente
ativando o dispositivo, e você faz isso usando
a wake word: Alexa. Uma vez aberto o dispositivo,
ai sim você pode abrir a skill.
Há várias palavras que você pode usar, como abrir, iniciar, começar, lançar. Nesse caso, estamos abrindo
uma skill chamada Space Facts. Então, Alexa, abra Space Facts. Space Facts é o nome de invocação. O nome de invocação é
um nome que você decide dar para sua própria skill,
o nome que os usuários precisarão dizer para abrir essa skill específica. Não há problema que o nome seja
composto por mais de uma palavra, e não há problema que essas
palavras sejam genéricas. Muitas pessoas me perguntam se os nomes de invocação devem ser únicos. A resposta é: não! Se várias skills compartilharem
o mesmo nome de invocação cabe ao usuário
escolher qual quer habilitar na sua conta Alexa.
Mas, abrir uma skill é
apenas a metade do caminho. Você pode definitivamente abrir uma skill mas às vezes você quer acessar
uma funcionalidade específica da skill, usando um enunciado único. E, portanto, você não
apenas abre a skill, mas você também dá um comando. Então, por exemplo: Alexa, peça a Space Facts um fato. Nesse caso, "um fato" é o enunciado, então é o que os usuários podem dizer ou
quando abrem a skill, ou quando a skill os dá as boas-vindas e pergunta o que querem fazer. Esses enunciados (utterances) são ligados à intenções (intents). Há várias maneiras de
dizer a mesma coisa, mas todas essas maneiras, na verdade,
levam a uma única intenção, e essa é o princípio básico
de construir para Alexa.
Você não precisa se preocupar
com frases específicas, você só precisa se preocupar com as intenções. Você, como desenvolvedor de skills, decide quais intenções sua skill consegue processar. Como, por exemplo, contar um fato. Ou, por exemplo, planejar uma viagem. Ou encerrar
ou começar um novo jogo, você decide. E ai você dá algumas frases de exemplo que meio que simbolizam esta intenção. E ai cabe a Alexa direcionar o usuário a intenção adequada. Então como um desenvolvedor, você está sempre
trabalhando com intenções. Neste caso, temos um GetNewFactIntent – intenção para trazer novo fato, intenção que pode ser ativada
por diferentes tipos de frases. Como, "me conte um fato", "me dê um fato", ou, simplesmente, "um fato". Isso não seria suficiente. Às vezes, se eu te dissesse que como desenvolvedor você só recebe
a intenção que você decide, isso não seria o suficiente
para satisfazer algumas intenções, porque para algumas intenções, os usuários precisam fornecer informações adicionais. Por exemplo, na frase: "Alexa, pergunte a Space Facts fatos de marte", eu estou pedindo um fato específico sobre Marte.
E isso chama-se slot. Um slot é o equivalente a uma variável no mundo de Alexa. E uma variável é um pedaço
do enunciado (utterance) do usuário necessário para que você, desenvolvedor, consiga completar uma intenção específica. Você pode ter mais de
um slot em suas intenções, e os usuários podem especificar mais de
um slot em suas frases, em seus enunciados. Nesse exemplo, queremos
ter uma variável (slot) chamado planeta, porque queremos ser capazes de dar um fato sobre um planeta específico. Slots (variáveis) podem ser construídos, a Amazon tem
alguns modelos prontos, como animaos, nomes, cidades, ou podem ser customizados e feitos por você.
Então, para recapitular, temos Alexa, que é a wake word. A frase de lançamento, que pode ser
solicitar, abrir, iniciar, começar. O nome da invocação, que
você decide para sua skill, e o enunciado. O enunciado é o que o usuário diz, que direciona o usuá´rio para uma intenção específica. E no caso de
sua intenção precisar de um slot, então esse slot será
retirado do enunciado, e enviado juntamente com a solicitação, que é um JSON request,
e vamos analisar isso mais para frente.
Você pode ter um número de intenções infinito, mas há intenções integradas (built-in)
que a Amazon fornece, e algumas dessas intenções integradas
são obrigatórias, se você quiser passar
no processo de certificação. Essas built-in intents
podem ser ajudar, cancelar, parar, mas existem outras como repetir, shuffle,
obter endereço, certo? Portanto, estas intenções integradas são compatíveis com muitos enunciados, que
ajudam você como desenvolvedor, a não ter que inserir todas
as possíveis combinações de frases para todos os enunciados comuns como, sim, não, repetir, shuffle, tocar, etc.
Neste caso, por exemplo,
Amazon.CancelIntent, direciona para cancelar. Amazon.HelpIntent direciona para ajuda. Parar para parar e etc. Antes de entrarmos no código, apenas para termos uma visão geral, há dois lados ao construir para Alexa. O primeiro lado é o
Modelo de Interação de Voz. O Modelo de Interação de Voz é onde você define o nome da sua skill, seu nome de invocação,
suas intenções, seus slots, seus enunciados, basicamente
tudo o que tem a ver com uma interface de voz. O backend é onde
você implementa e manipula todas estas intenções. Já que lançamos esse recurso recentemente, vamos usar
Alexa-Hosted Skills. Então só precisamos focar em
um site, developer.amazon.com, e tudo estará lá. Não precisamos ter
nenhum backend separado, que você pode querer no futuro, quando você estiver mais avançado. Você pode querer ter seu
próprio endpoint personalizado da AWS, mas por enquanto,
vamos começar com skills que são Alexa-Hosted, o que significa que tudo está hospedado e gerenciado para nós, e nós
podemos começar imediatamente.
Agora, em nossos primeiros vídeos,
não procuraremos para a estrutura de pastas da nossa skill, mas se tivéssemos que olhar, e mais para frente quando usarmos a Alexa Command Line Interface, nós vamos analisá-la. A estrutura da pasta
está definida da seguinte maneira. Temos uma pasta de modelos, onde temos todos os nossos modelos de interação,
todas as nossas intenções, enunciados, representados em um arquivo JSON para cada idioma que
escolhemos suportar. E depois temos uma pasta Lambda, onde nosso código backend fica hospedado. Quando você usa a CLI, todas
essas pastas são localizadas, junto com um manifesto skill.json, e você pode controlá-lo ou gerenciá-lo no seu próprio diretório, e implementar, e gerenciar toda sua skill
na linha de comando (command line). Mas no nosso caso, vamos
usar o navegador, que separa o modelo de interação
e o código em dois locais. Agora estamos quase prontos para começar a programar, mas antes disso, quero mostrar a vocês
a arquitetura geral de como a Alexa funciona. Tudo começa com o enunciado dos usuários. Por exemplo, Alexa,
abra Space Facts.

Aquela frase pronunciada pelo usuário, para uma máquina é só barulho. Então a máquina, em si, precisa ter um chip que reconhece, "Ei,
o usuário acabou de dizer Alexa, Eu preciso acordar e enviar
todas essas informações para o serviço de Alexa na nuvem." E, assim que você tiver todas as informações, e enviá-las a nuvem, elas precisas de ser convertidas em texto. Isso é chamado de reconhecimento automático
de voz. Uma vez com o texto,
você tem que descobrir o que aquela frase significa. O que o usuário quer fazer? No nosso caso, eles querem um fato, certo? Portanto, essa parte é chamada de
compreensão natural de linguagem (NLU). Ir de apenas texto para o significado real do que o usuário quer fazer, a intenção real. Então, se eu disser, " Alexa, abra Space Facts", A Alexa vai entender
que eu disse Alexa, abra Space Facts. Vai entender que eu estou tentando abrir uma skill chamada Space Facts, e eu peço a Space Facts que me conte um fato, isso é quase um trava-língua, então, a Alexa também vai
entender que estou acionando o GetNewFactIntent de fatos do espaço, e enviar para meu back-end,
para o back-end da minha skill, para que ela possa cumprir com a intenção planejada.
Então, todo o processo é:
o enunciado vai para a Alexa, a Alexa descobre que o usuário
quer usar uma skill, e envia essa informação de volta ao usuário. A skill pode decidir como responder. Pode ser texto ou áudio. E a resposta será
transmitida de volta para o usuário. Também temos imagens, falaremos
mais sobre isso nos próximos vídeos. Então vamos começar. No momento, estamos no console do
developer.amazon.com. E o que vamos fazer é
criar uma nova skill. Então eu continuar e
clicar em "Create Skill" (Criar Skill). Você tem várias opções aqui. Você pode escolher tipos diferentes de skills, e você pode escolher se quer hospedar seu próprio backend,
ou escolher Alexa-Hosted (hospedada na Alexa). Eu definitivamente vou escolher Alexa-Hosted. Não temos tempo para
cobrir todos os tipos diferentes de skill aqui, mas apenas para
te dar uma ideia, "Customizada (Custom)" é a opção mais livre que podemos escolher, porque podemos definir nossa intenção.
Então eu vou escolher "Customizada (Custom)". E vamos chamá-la, Hello World (Olá Mundo). E eu vou clicar em Create Skill (Criar Skill), e agora a Alexa está provisionando
todos os recursos necessários. Então, optando por skills que são hospedadas na Alexa, o que temos agora é tanto
o modelo de interação por voz, como o backend,
disponível para nós neste console. Você verá que o código foi pré-preenchido com HelloWorldIntent,
e quatro intenções embutidas, cancelar, ajudar, pare e ir para home. Também temos uma aba Code (Código), onde veremos um espaço reservado para o código boilerplate chamado Hello World (Olá Mundo).
Mas apenas para guiá-lo
pelo console aqui temos fases diferentes. Nós temos Build (Construção), Code (Código),
Test (Teste), Distribution (Distribuição), as guias Certification (Certificação) e Analytics (Análise). E essas abas meio que simbolizam
cada fase de desenvolvimento de uma skill. Ai temos o nosso nome de invocação aqui, e escolhemos Hello World. E depois temos as nossas intenções. Cada intenção também pode ter variáveis (slots), que cobriremos em um vídeo futuro.
E temos as intenções embutidas (built-in), que podemos ampliar com os nossos próprios valores. Então, vamos seguir e construir nosso modelo. Para construir seu modelo, basta
clicar em"Build Model" (Construir Modelo) aqui, e o que isso faz é enviar
todas estas informações para Alexa, a Alexa vai processar as informações
e adicioná-las para seu motor de conhecimento. Enquanto isso está sendo construído,
eu te levarei ao Editor JSON, que é, essencialmente, a representação JSON
de tudo o que fizemos nessa interface. Nesse caso, não fizemos muito, porque estamos usando o modelo de boilerplate como ponto de partida, mas
nos próximos vídeos, nós faremos alterações
que também serão refletidas aqui.
Então o modelo está sendo treinado,
e agora tudo está pronto. A compilação completa foi bem sucedida. Então, entramos em "Code" (Código), e podemos ver, como nosso código está. Deixa eu dar um zoom aqui
para que você possa ver melhor. Então , aqui temos uma pasta Lambda, com nosso index.js. Este é o nosso principal ponto de partida. E aqui temos o SDK de Alexa, já instanciado, e um handler para cada intenção principal. Agora os handlers são muito simples. Há um método canHandle e um método handle. canHandle determina se
este é o handler certo para a solicitação de entrada. E handle determina
o que precisa ser feito, sempre que uma solicitação for recebida.
Portanto, neste caso, se for um LaunchRequest, significando que dissemos
"Alexa, abra Hello World", nós diremos de volta: "Bem-vindo(a),
você pode dizer "Olá" ou "Ajuda". "Qual você gostaria de tentar?" E enviamos esse texto de volta
usando o responseBuilder, e adicionando um método de fala, com o texto como um argumento. Podemos também adicionar um reprompt, que manterá a sessão aberta, e esperar uma resposta do usuário. Você verá que isso se mantém
para diferentes intenções, como o hello world, help (ajuda), cancel (cancelar), SessionEndedRequest, o que acontece quando
dizemos, por exemplo, sair. Nós também temos alguns handlers extras para fins de debugging. Mas vamos cobrir
eles em um vídeo diferente.
Então agora vamos dar uma olhada em como testar isso. Vamos permitir o acesso ao microfone
para podermos falar para o simulador. E habilite "Development" (Desenvolvimento) para essa skill. Agora temos duas opções,
podemos digitar, "open hello world" (abra Olá Mundo). – [Simulador] Bem-vindo(a),
você pode dizer Olá ou Ajuda. O que você gostaria de fazer? – [Andrea] Ou podemos
falar com o simulador. Olá. – [Simulador] Hello World! – [Andrea] E a intenção Hello World é ativada. Agora, antes de terminarmos esse vídeo, Eu só quero mostrar a
entrada/saída principal da skill que você verá, quando
usar o simulador. Esta é a entrada JSON, é isso que a Alexa envia ao nosso back-end. E você verá que há
vários parâmetros úteis, como o Id do usuário (userID), que é uma string de usuário gerada aleatoriamente para cada usuário, para cada skill. Isso é útil para manter o controle de quem está voltando ou não. E depois temos a nossa parte principal, que é a solicitação.
Neste caso, uma solicitação
de tipo hello world. E depois finalmente temos a saída JSON, que é o que nossa skill
decidiu enviar de volta. E no nosso caso, decidimos
responder "Hello World" (Olá Mundo), porque, em nossa intenção, na intenção hello world, sempre respondemos hello world,
quando a mesma é acionada. Nossa skill ainda não faz muita coisa, mas nos próximos vídeos,
vamos adicionar funcionalidades a medida que formos avançando.
Agora antes de encerrarmos,
aqui estão alguns recursos essenciais para que você comece a sua jornada
de construção de uma skill. Obrigado por assistir
e nos vemos no próximo vídeo..


![Giới thiệu các kênh Marketing 0 đồng [ Bài 1] – Công cụ marketing](https://59s.com.br/wp-content/uploads/2022/12/htmlF_IMG_638b365461402-1024x576.jpg)