Skip to content

Instantly share code, notes, and snippets.

@softwarechido
Last active December 13, 2019 02:20
Show Gist options
  • Save softwarechido/b20e0dc6e421da182e44e81af03cd052 to your computer and use it in GitHub Desktop.
Save softwarechido/b20e0dc6e421da182e44e81af03cd052 to your computer and use it in GitHub Desktop.
Alexa, abre ayudante de santa y pide un mensaje - DialoManagement Enabled para Nombre + Comportamiento(bueno,malo,regular)
//lambda
const Alexa = require('ask-sdk');
const LaunchRequestHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'LaunchRequest'
},
handle(handlerInput) {
console.log("Si llegó");
return handlerInput.responseBuilder
.speak(WELCOME_MESSAGE+" "+HELP_MESSAGE)
.withSimpleCard(SKILL_NAME)
.reprompt(HELP_REPROMPT)
.getResponse();
},
};
const IdeaDeRegaloHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& request.intent.name === 'IdeaDeRegaloIntent';
},
handle(handlerInput) {
const ideas = [" un dispositivo Amazon <lang xml:lang='en-US'>Echo</lang>", " un dispositivo Amazon <lang xml:lang='en-US'>Echo Dot</lang>", " un dispositivo Amazon <lang xml:lang='en-US'>Echo Spot</lang>"];
const ideasArr = ideas;
const ideasIndex = Math.floor(Math.random() * ideasArr.length);
const randomIdea = ideasArr[ideasIndex];
const speechOutput = PRE_GIFT_MESSAGE + randomIdea + POST_GIFT_MESSAGE + HELP_MESSAGE;
const textOutput = "Idea de Regalo";
return handlerInput.responseBuilder
.speak(speechOutput)
.reprompt(HELP_REPROMPT)
.withSimpleCard(SKILL_NAME, textOutput)
.getResponse();
},
};
const InProgressMensajeDeSantaHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'&&
request.intent.name === 'MensajeDeSantaIntent' &&
request.dialogState !== 'COMPLETED';
},
handle(handlerInput) {
let currentIntent = handlerInput.requestEnvelope.request.intent;
return handlerInput.responseBuilder
.addDelegateDirective(currentIntent)
.getResponse();
},
};
const MensajeDeSantaHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& request.intent.name === 'MensajeDeSantaIntent';
},
handle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
var nombre = request.intent.slots.nombre.value;
var comportamiento = request.intent.slots.comportamiento.value;
if (comportamiento === "bien"){
comportamiento = "<break strength='strong'/>" + comportamiento + " <break strength='strong'/> Felicitaciones, tu compromiso y buen comportamiento siempre rendirán frutos.";
} else if (comportamiento === "mal") {
comportamiento = "<break strength='strong'/>" + comportamiento + " <break strength='strong'/> Es una lástima. Quiero que me prometas que el próximo año será mejor.";
} else if (comportamiento === "mas o menos") {
comportamiento = "<break strength='strong'/>" + comportamiento + " <break strength='strong'/> Ni muy muy, ni tan tan. Quiero que me prometas que el próximo año será mejor.";
} else {
comportamiento = "<break strength='strong'/> Ni muy muy, ni tan tan, quizas el próximo año sea mejor";
}
const speechOutput =
"<say-as interpret-as='interjection'>jo jojojojó</say-as> <break strength='strong'/>"+
"<say-as interpret-as='interjection'>Feliz Navidad</say-as> <break strength='strong'/>"+
"He encontrado este mensaje para "+ nombre +
" <voice name='Enrique'>Hola " + nombre + "</voice>" +
" <audio src='https://s3.amazonaws.com/missonidos/MensajeDeSantaIntro.mp3'/> " +
" <voice name='Enrique'> " + comportamiento + " También quiero desearte paz y amor con toda tu familia </voice>"+
" <break strength='strong'/> Un mensaje de Santa!! <say-as interpret-as='interjection'>qué alegría</say-as> "+
HELP_MESSAGE;
const testOutput = "Mensaje de Santa";
return handlerInput.responseBuilder
.speak(speechOutput)
.reprompt(HELP_REPROMPT)
.withSimpleCard(SKILL_NAME, testOutput)
.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
.withShouldEndSession(true)
.speak(STOP_MESSAGE)
.getResponse();
},
};
const SimulateFallBackHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& request.intent.name === 'SimulateFallBackIntent';
},
handle(handlerInput) {
const speechOutput = "Lo siento, no entendí ";
return handlerInput.responseBuilder
.speak(speechOutput + HELP_MESSAGE)
.reprompt(HELP_REPROMPT)
.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 WELCOME_MESSAGE= "¡Hola! bienvenido a ayudante de santa. <audio src='soundbank://soundlibrary/foley/amzn_sfx_sleigh_bells_01'/>"
const SKILL_NAME = 'Ayudante de Santa';
const PRE_GIFT_MESSAGE = '<s> Te sugiero </s>';
const POST_GIFT_MESSAGE = '<s> es una excelente opción para aprender, jugar y divertirse. ¿No? </s>';
const HELP_MESSAGE = '<s> te puedo dar ideas de regalos, un mensaje de santa o para detenerme puedes decir: ¡Cancela!... ¿Cómo te puedo ayudar?</s>';
const HELP_REPROMPT = '¿Cómo te puedo ayudar?';
const STOP_MESSAGE = '<s>Adios y <say-as interpret-as="interjection">felices fiestas</say-as> </s>';
const skillBuilder = Alexa.SkillBuilders.standard();
exports.handler = skillBuilder
.addRequestHandlers(
LaunchRequestHandler,
IdeaDeRegaloHandler,
InProgressMensajeDeSantaHandler,
MensajeDeSantaHandler,
HelpHandler,
ExitHandler,
SimulateFallBackHandler,
SessionEndedRequestHandler
)
.addErrorHandlers(ErrorHandler)
.lambda();
{
"interactionModel": {
"languageModel": {
"invocationName": "ayudante de santa",
"intents": [
{
"name": "AMAZON.CancelIntent",
"samples": []
},
{
"name": "AMAZON.HelpIntent",
"samples": []
},
{
"name": "AMAZON.StopIntent",
"samples": []
},
{
"name": "AMAZON.NavigateHomeIntent",
"samples": []
},
{
"name": "IdeaDeRegaloIntent",
"slots": [],
"samples": [
"sugiereme un regalo",
"sugiere un regalo",
"ideas de regalos",
"idea de regalos",
"unas ideas de regalos",
"una idea de regalo",
"regalo idea",
"ideas de regalo",
"dame regalos",
"quiero regalos",
"dar ideas de regalos",
"me podrías dar ideas de regalos",
"pregunta ideas de regalos",
"quiero ideas de regalo",
"dame ideas de regalos",
"alternativas de regalo",
"opciones de regalo",
"opción de regalo",
"qué debo pedir",
"sugerencia de obsequio",
"sugerencia de regalo",
"dame un regalo",
"un regalo",
"pide un regalo"
]
},
{
"name": "MensajeDeSantaIntent",
"slots": [
{
"name": "nombre",
"type": "AMAZON.FirstName",
"samples": [
"para {nombre}",
" {nombre}"
]
},
{
"name": "comportamiento",
"type": "comportamiento",
"samples": [
"{comportamiento}",
"se ha portado {comportamiento}"
]
}
],
"samples": [
"un mensaje",
"quiero escuchar un mensaje",
"quiero un mensaje",
"me buscas un mensaje",
"buscar mensaje",
"habla un mensaje",
"me gustaría un mensaje",
"podrías decir un mensaje",
"podrías darme un mensaje",
"dime un mensaje por favor",
"dime un mensaje",
"necesito un mensaje",
"quiero un mensaje por favor",
"mensaje por favor",
"dame un mensaje por favor",
"búscame un mensaje",
"busca un mensaje",
"mensaje",
"dame un mensaje",
"mensaje de santa para {nombre}",
"aviso para {nombre}",
"mensaje de navidad para {nombre}",
"mensaje para {nombre}",
"quiero un mensaje para {nombre}"
]
},
{
"name": "SimulateFallBackIntent",
"slots": [
{
"name": "anything",
"type": "AMAZON.SearchQuery"
}
],
"samples": [
"{anything} z",
"{anything} y",
"{anything} a",
"{anything} b",
"{anything} c",
"{anything} d",
"{anything} e",
"{anything} f",
"{anything} g",
"{anything} h",
"{anything} i",
"{anything} j",
"{anything} k",
"{anything} l",
"{anything} m",
"{anything} n",
"{anything} o",
"{anything} p",
"{anything} q",
"{anything} r",
"{anything} s",
"{anything} t",
"{anything} u",
"{anything} v",
"{anything} w",
"{anything} x",
"ellos",
"ustedes ",
"nosotros",
"tu",
"yo",
"algo",
"lo que sea",
"a {anything}"
]
}
],
"types": [
{
"name": "comportamiento",
"values": [
{
"name": {
"value": "mas o menos",
"synonyms": [
"regular"
]
}
},
{
"name": {
"value": "mal"
}
},
{
"name": {
"value": "bien"
}
}
]
}
]
},
"dialog": {
"intents": [
{
"name": "MensajeDeSantaIntent",
"confirmationRequired": false,
"prompts": {},
"slots": [
{
"name": "nombre",
"type": "AMAZON.FirstName",
"confirmationRequired": false,
"elicitationRequired": true,
"prompts": {
"elicitation": "Elicit.Slot.1486826171382.1287647393382"
}
},
{
"name": "comportamiento",
"type": "comportamiento",
"confirmationRequired": false,
"elicitationRequired": true,
"prompts": {
"elicitation": "Elicit.Slot.787290802259.904452732562"
}
}
]
}
]
},
"prompts": [
{
"id": "Elicit.Slot.1486826171382.1287647393382",
"variations": [
{
"type": "PlainText",
"value": "¿para quién es el mensaje?"
}
]
},
{
"id": "Elicit.Slot.787290802259.904452732562",
"variations": [
{
"type": "PlainText",
"value": "¿cómo se ha portado {nombre} ?"
}
]
}
]
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment