Integração de Sistemas PHP com a Alexa

Integração de Sistemas PHP com a Alexa

04 de Dezembro de 2022

Criando uma conta na AWS da Amazon

Definindo os objetivos

Objetivos devem ser comandos/tarefas simples e diretas de se executar, como:

  • Agendar e comprar passagens aéreas
  • Reservar quarto de hotel

Definindo declarações

São as frases que devem ser ditas pelos usuários (mapas de declarações), como:

Ligar o exaustor da cozinha

Slots

São as "variáveis" envolvendo a requisição. Como se fosse o payload

Processo de criar a Skill

  • Design
  • Configuração
  • Skill Handler
  • Deploy de um servidor/aplicação
  • Teste em navegadores e em uma Alexa

Diálogo

Devolutivas do sistema para tentar obter todos os dados necessários para completar a request.

Handler

É o mecanismo que conecta todas as etapas do processo entre ativar a skill, recuperar os dados e mandar para algum servidor web (lambdas ou URLS)

Criando uma conta de desenvolvedor na Amazon

https://developer.amazon.com

Documentação oficial https://developer.amazon.com/pt-BR/alexa

Developer Console (Criar Skills) https://developer.amazon.com/alexa/console/ask

Informar nome e idioma da skill e posteriormente um template baseado no tipo de utilização. O ideal é selecionar "Customizada/Custom" para criar skill do zero. A Amazon também questiona o tipo de servidor, que pode ser dentro da AWS (node.js ou python) ou um servidor custom externo.

Ao terminar de fazer o setup, o usuário é redirecionado ao Developer Console e pode notar algumas opções no menu lateral à esquerda. Uma delas é o "Invocation" que define a frase gatilho para acionar a Skill.

Passo a passo para criar a Skill

  • Intents

-- É o processo que define os gatilhos aceitos pelo aplicativo e o que esse comando invocará em termos de funcionalidade.

-- Ao adicionar o nome da "intenção", podemos configurar os slots (como se fossem placeholders de variáveis). O Name é o valor dessa variável e o Type é um modelo de tipos da Amazon (exemplo: para números seria Amazon.Number).

-- Também podemos configurar o enunciado, que é onde invocamos a Skill. Exemplo: Somar variavel1 com variavel2. É comum termos alguns enunciados diferentes para que o sistema se adapte mais naturalmente à linguagem de diversas pessoas.

-- Ao clicar no "Nome" da intenção, é possível definir se ela será obrigatória e qual pergunta a Alexa fará ao usuário caso ele não informe o valor desejado.

  • JSON (Importação / Exportação) O processo de criar skill na Amazon nada mais é do que uma intepretação de um arquivo JSON, que, dentro da interface do developer console, permite um setup amigável com inputs, mas que no fim, geram um arquivo estruturado em JSON.

O maior benefício desse recurso, é manter o código versionado localmente para podermos importar e/ou fazer um rollback de alguma versão antiga e funcional do script.

Para consulta-lo, vá em JSON Editor (dentro de Intents)

  • Teste com Node.Js

$ npm init $ npm install --save ask-sdk-core $ npm install --save ask-sdk-model

Criar o index.js com as possíveis rotas da Alexa. Um bom ponto inicial para a index.js seria termos:

const Alexa e appName, launchRequestHandler, HelpIntentHandler, CancelAndStopIntentHandler e SessionEndedRequestHandler

exports.handler = Alexa.SkillBuilders.custom().addRequestHandlers(LaunchRequestHandler,HelpIntentHandler,CancelAndStopIntentHandler,SessionEndedRequestHandler).lambda();

Basicamente cada método possui duas funções: "canHandle" e "handle"

speechText = "Echo Dot" displayText = "Echo Show"

.reprompt = Caso não obtenha resposta em 8 segundos .withSimpleCard = Aparece um bloco de texto na Echo Show

  • Lambda Functions Depois de criar o script completo em Node.Js, é hora de criar uma instância Lambda na AWS. Essas funções permitem que possamos rodar códigos, snipets, direto na Amazon sem ter um grande servidor rodando por trás. Atualmente é possível rodar snipets de Lambda em Java, Python, C#, Ruby e Node.JS

Vá para sua conta AWS (conta de cliente) e no AWS Managemente Console procure por Lambda console.aws.amazon.com -> https://us-east-2.console.aws.amazon.com/lambda/home?region=us-east-2

Ao criar a instancia do Lambda em Node.JS, é necessário adicionar um "Trigger/Gatilho" a ela, para avisar que será conectada à Alexa. O sistema pedirá o ID da Skill (que pode ser obtido na página inicial de skills)

https://developer.amazon.com/alexa/console/ask

Depois, precisamos subir um ZIP do código completo (incluindo os node_modules) para o servidor https://us-east-2.console.aws.amazon.com/lambda/home?region=us-east-2#/functions/mdmCalculator?tab=code -> Fazer Upload de (.ZIP)

Depois de ter subido a aplicação, é necessário obter o "ARN" = Amazon Resource Name que é utilizado pela Amazon para identificar um recurso em particular dentro da AWS. Copie o ARN e configure-o na tela de Skill da Alexa

https://developer.amazon.com/alexa/console/ask/build/custom/amzn1.ask.skill.ea118606-63ae-46a4-b85a-c694976f93e6/development/pt_BR/endpoint

É possível testar online também, através do aplicativo da Alexa ou pelo navegador https://alexa.amazon.com

  • Importante:

-- .reprompt() Mantém a sessão do diálogo aberta. Assim não preciso dizer o comando para iniciar a Alexa novamente. -- SSML é o HTML de comandos de voz (Speech Synthesis Markup Language) , onde podemos colocar alguns tons de voz e comandos para que ela fale corretamente certas coisas (como sussurrar por exemplo)

  • Gatilhos = Comando de Voz

Alexa is one of the most popular virtual assistants. Using simple voice commands, you can ask Alexa to find and read news, play music, order pizza, or control other smart home devices, from your lighting to your door locks. Alexa also offers a tremendous opportunity for developers with basic programming experience to build their own Alexa functionality, called skills. In this course, instructor Lee Assam shows how to build custom voice commands for Alexa devices using the Alexa Skills Kit and Node.js. Explore the Alexa ecosystem and the components that make up a custom Alexa skill. Learn how to configure your skill in the Amazon Developer Portal and create, code, and deploy it using Node.js, Lambda functions, and Amazon Web Services. Plus, discover how to test your skill in the browser and on an actual Alexa device, and submit a skill for certification so you can share it with other Alexa users.

Objetivos de aprendizagem

Reviewing Alexa basics Setting up your accounts and environment Identifying Alexa skills Building a custom Alexa skill Configuring skill functionality Testing skills Expanding skills Submitting a custom Alexa skill for certification