Skill Para Aventureiro De RPG

by Luciano Custodio da Silva Junior in Circuits > Software

455 Views, 0 Favorites, 0 Comments

Skill Para Aventureiro De RPG

IMG_5052.jpeg

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

01.PNG
02.PNG
03.PNG
04.PNG

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

05.PNG
06.PNG
07.PNG

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

08.PNG
09.PNG
10.PNG
11.PNG
12.PNG
13.PNG
14.PNG
15.PNG

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

16.PNG
17.PNG
Teste Skill Alexa

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.