Skip to content

Instantly share code, notes, and snippets.

@softwarechido
Last active May 14, 2020 16:23
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save softwarechido/a8a89700dc95e237ba39d3d18fe5c3a8 to your computer and use it in GitHub Desktop.
Save softwarechido/a8a89700dc95e237ba39d3d18fe5c3a8 to your computer and use it in GitHub Desktop.
Alexa, abre guía universitaria y dame un datos curioso
//Lambda
const Alexa = require('ask-sdk-core');
const LaunchRequestHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'LaunchRequest'
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak('¡Hola!... '+HELP_MESSAGE)
.reprompt(HELP_REPROMPT)
.getResponse();
},
};
const DatoUniversidadHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& request.intent.name === 'DatoCuriosoIntent';
},
handle(handlerInput) {
const factArr = data;
const factIndex = Math.floor(Math.random() * factArr.length);
const randomFact = factArr[factIndex];
const speechOutput = GET_FACT_MESSAGE + randomFact;
return handlerInput.responseBuilder
.speak(speechOutput)
.withSimpleCard(SKILL_NAME, randomFact)
.withShouldEndSession(true)
.getResponse();
},
};
const HelpHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& request.intent.name === 'AMAZON.HelpIntent';
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak(HELP_MESSAGE)
.reprompt(HELP_REPROMPT)
.getResponse();
},
};
const ExitHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& (request.intent.name === 'AMAZON.CancelIntent'
|| request.intent.name === 'AMAZON.StopIntent');
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak(STOP_MESSAGE)
.withShouldEndSession(true)
.getResponse();
},
};
const SessionEndedRequestHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'SessionEndedRequest';
},
handle(handlerInput) {
console.log(`Se ha terminado la sesión por las siguientes causas: ${handlerInput.requestEnvelope.request.reason}`);
return handlerInput.responseBuilder.getResponse();
},
};
const ErrorHandler = {
canHandle() {
return true;
},
handle(handlerInput, error) {
console.log(`Error handled: ${error.message}`);
return handlerInput.responseBuilder
.speak('<say-as interpret-as="interjection">épale ocurrió un error</say-as>')
.reprompt('Lo siento, ocurrió un error')
.getResponse();
},
};
const SKILL_NAME = 'Datos de la Universidad';
const GET_FACT_MESSAGE = 'Un dato curioso es que ';
const HELP_MESSAGE = 'Puedes decir: Dame un dato curioso... o simplemente para detenerme puedes decir: ¡Cancela!... ¿Cómo te puedo ayudar?';
const HELP_REPROMPT = '¿Cómo te puedo ayudar?';
const STOP_MESSAGE = 'Adios y <say-as interpret-as="interjection">buena suerte</say-as>';
const data = [
//TODO agrega tu contenido de datos curiososo aqui...
'La Universidad se fundó hace mucho tiempo',
'La universidad tiene miles de estudiantes',
'En la universidad existen muchas carreras vigentes',
];
const skillBuilder = Alexa.SkillBuilders.custom();
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler,
DatoUniversidadHandler,
HelpHandler,
ExitHandler,
SessionEndedRequestHandler
)
.addErrorHandlers(ErrorHandler)
.lambda();
{
"interactionModel": {
"languageModel": {
"invocationName": "guía universitaria",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "DatoCuriosoIntent",
"slots": [],
"samples": [
"dime algo curioso de la universidad",
"una curiosidad",
"dime algo de la universidad",
"dato curioso de la universidad",
"dato curioso",
"algo de la universidad",
"un dato de la universidad",
"un dato",
"dame un dato"
]
}
],
"types": []
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment