Skill Para Aventureiro De RPG
by Luciano Custodio da Silva Junior in Circuits > Software
515 Views, 0 Favorites, 0 Comments
Skill Para Aventureiro De RPG
Skills são aplicações desenvolvidas para a Alexa, seu intuito é oferecer uma gama de funcionalidades aos Echo Dot's, não o limitando a apenas as skills predefinidas. Tais como ouvir músicas, ou buscar noticias e novidades sobre o clima da cidade. O tutorial a seguir tem como intuito demonstrar como desenvolver uma simples skill, utilizando NodeJS.
Supplies
- Um dispositivo com Alexa, mas pode testar via console da Amazon Developer
Acesso Ao Alexa Developer
Para acessar o console de desenvolvimento e ao Alexa Skill Kit(ASK) é necessário criar uma conta de desenvolvedor na Alexa Developer.
Após efetuar o registro na tela seguinte clicar no botão Create Alexa Skills e ocorrerá o redirecionamento para a tela com uma leve explicação sobre as skills da Alexa. Nessa tela clicar no botão Console, será redirecionada a página Alexa Skill Kit. A partir dessa tela será demonstrada o painel de gerenciamento de skills da Alexa.
Criando a Skill
Após acessar a página Alexa Skill Kit, clicar no botão Create Skill, será apresentada a tela contendo as informações abaixo que devem ser preenchidas:
-
Skill name: Onde iremos renomear a nossa skill, no caso usaremos Skill Para Aventureiro De RPG.
-
Primary locale: Onde será definida o idioma padrão referente a nossa skill.
-
Choose a model to add to your skill: Podemos escolher o modelo de interação com a Alexa, utilizaremos o padrão Custom.
-
Choose a method to host your skill's backend resources: Aqui será como iremos hospedar o código-fonte referente a nossa skill. Usaremos a hospedagem padrão oferecida para o NodeJS.
Após preencher os dados clicar no botão Create Skill, será demonstrada a tela para escolha do template, selecionaro Start from Scratch eclicar no botão Continue with Template.
Desenvolvimento Da Skill
Na página a seguir iremos preencher o campo Invocation Name, com o nome responsável por acionar a skill. Preenchemos com o nome "vamos começar uma nova aventura". E clicar no botão Build Model, para gerar o frase utilizada para ativar a skill.
Após selecionamos a frase de invocação da Alexa, iremos definir os Intents, o responsável pelas ações da skill. Nessa tela iremos clicar no botão Create Custom Intent.
Na página seguinte iremos definir os Utterances, palavras que tem como intuito ativar os Intents. Os Intents podem opcionalmente ter argumentos chamados slots. Os valores de slot são extraídos de expressões e enviados com a solicitação de Intent. Criamos os dois slots especificados abaixo:
- times: Do tipo AMAZON.number
- dice: Do tipo AMAZON.number
Após criar, os slots, definir editar com as seguintes configurações abaixo:
- Times: Quantas vezes você quer rolar o dado nobre aventureiro?
-
Is this slot required to fulfill the intent?: Ativado
-
Utterances: Quero rolar {times} vezes, {times} e {times} vezes
-
Dice: Quantos lados tem o dado, nobre aventureiro?
-
Is this slot required to fulfill the intent?: Ativado
-
Utterances: O lado possui {dice} lados e {dice}
Após finalizado clicar no botão Build Model.
Clicar no Code, e substituir o código do template criado automaticamente pelo desenvolvido para a skill. Adicionaremos a dependência da lib rpg-dice-roller no arquivo package.json "rpg-dice-roller": "^5.0.0". Salve os arquivos alterados e clique em Deploy.
Explicando um pouco sobre o código, temos a const Alexa faz a chamada para o Ask. "const Alexa = require(‘ask-sdk-core’)".
E definimos vários handlers, em forma de objeto, para processar as intents que configuramos. Os handlers possuem a seguinte estrutura:
const Handler = canHandle(handlerInput) { // retorna true se esse Handler será utilizado para processar o Intent }, handle(handlerInput) { // processa o intent e controi o retorno } }
Dessa forma, explicaremos linha a linha o handler que executará a rolagem dos dados:
const RolarDadoHandler = {
canHandle(handlerInput) {
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'RolarDadoIntent'; // Aqui verificamos se o intent a ser processado corresponde ao RolarDadoIntent
},
handle(handlerInput) {
const dice = 'd' + Alexa.getSlotValue(handlerInput.requestEnvelope, 'dice'); // Aqui obtemos o valor do slot dice
const times = Alexa.getSlotValue(handlerInput.requestEnvelope, 'times'); // Aqui obtemos o valor do slot times
const roll = new DiceRoll(times + "" + dice); // Rolagem dos dados
const speakOutput = `Rolei os dados nobre aventureiro ${dice} ${times} vezes e saiu ${roll.rolls.join(',')}, totalizando ${roll.total}`; // Aqui montamos a resposta que a alexa fará
return handlerInput.responseBuilder
.speak(speakOutput)
.getResponse();
}
};
Teste
Para efetuar os testes da skill, clicaremos na aba Test. Por padrão, vem com o teste desativamos então mudaremos para Development.
No campo de texto digite “vamos começar uma nova aventura” para ativar a skill. Depois digite “rolar 6 d 20” que será a utterance que ativará a intent.
Por fim após, finalizar o deploy fica disponível o acesso a skill. Para ser utilizado a partir do dispositivo Echo Dot, o nosso teste foi efetuado em um Echo Dot 3.
E aqui segue a skill para download.