mirror of
https://github.com/r-ca/kidshift-skills.git
synced 2024-10-26 01:24:03 +00:00
updated lambda/index.js.
This commit is contained in:
parent
1be3c2fbcd
commit
5d47dc7efc
128
lambda/index.js
128
lambda/index.js
|
@ -1,109 +1,173 @@
|
||||||
"use strict";
|
/* *
|
||||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
* This sample demonstrates handling intents from an Alexa skill using the Alexa Skills Kit SDK (v2).
|
||||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
* Please visit https://alexa.design/cookbook for additional examples on implementing slots, dialog management,
|
||||||
};
|
* session persistence, api calls, and more.
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
* */
|
||||||
const ask_sdk_core_1 = __importDefault(require("ask-sdk-core"));
|
const Alexa = require('ask-sdk-core');
|
||||||
|
// i18n library dependency, we use it below in a localisation interceptor
|
||||||
|
const i18n = require('i18next');
|
||||||
|
// i18n strings for all supported locales
|
||||||
|
const languageStrings = require('./languageStrings');
|
||||||
|
|
||||||
const LaunchRequestHandler = {
|
const LaunchRequestHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'LaunchRequest';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const speakOutput = 'Welcome, you can say Hello or Help. Which would you like to try?';
|
const speakOutput = handlerInput.t('WELCOME_MSG');
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
.reprompt(speakOutput)
|
.reprompt(speakOutput)
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const HelloWorldIntentHandler = {
|
const HelloWorldIntentHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
||||||
&& ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope) === 'HelloWorldIntent';
|
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'HelloWorldIntent';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const speakOutput = 'Hello World!';
|
const speakOutput = handlerInput.t('HELLO_MSG');
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
|
//.reprompt('add a reprompt if you want to keep the session open for the user to respond')
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const HelpIntentHandler = {
|
const HelpIntentHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
||||||
&& ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.HelpIntent';
|
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.HelpIntent';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const speakOutput = 'You can say hello to me! How can I help?';
|
const speakOutput = handlerInput.t('HELP_MSG');
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
.reprompt(speakOutput)
|
.reprompt(speakOutput)
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const CancelAndStopIntentHandler = {
|
const CancelAndStopIntentHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
||||||
&& (ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.CancelIntent'
|
&& (Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.CancelIntent'
|
||||||
|| ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.StopIntent');
|
|| Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.StopIntent');
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const speakOutput = 'Goodbye!';
|
const speakOutput = handlerInput.t('GOODBYE_MSG');
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/* *
|
||||||
|
* FallbackIntent triggers when a customer says something that doesn’t map to any intents in your skill
|
||||||
|
* It must also be defined in the language model (if the locale supports it)
|
||||||
|
* This handler can be safely added but will be ingnored in locales that do not support it yet
|
||||||
|
* */
|
||||||
const FallbackIntentHandler = {
|
const FallbackIntentHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest'
|
||||||
&& ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.FallbackIntent';
|
&& Alexa.getIntentName(handlerInput.requestEnvelope) === 'AMAZON.FallbackIntent';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const speakOutput = 'Sorry, I don\'t know about that. Please try again.';
|
const speakOutput = handlerInput.t('FALLBACK_MSG');
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
.reprompt(speakOutput)
|
.reprompt(speakOutput)
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/* *
|
||||||
|
* SessionEndedRequest notifies that a session was ended. This handler will be triggered when a currently open
|
||||||
|
* session is closed for one of the following reasons: 1) The user says "exit" or "quit". 2) The user does not
|
||||||
|
* respond or says something that does not match an intent defined in your voice model. 3) An error occurs
|
||||||
|
* */
|
||||||
const SessionEndedRequestHandler = {
|
const SessionEndedRequestHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'SessionEndedRequest';
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'SessionEndedRequest';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
console.log(`~~~~ Session ended: ${JSON.stringify(handlerInput.requestEnvelope)}`);
|
console.log(`~~~~ Session ended: ${JSON.stringify(handlerInput.requestEnvelope)}`);
|
||||||
return handlerInput.responseBuilder.getResponse();
|
// Any cleanup logic goes here.
|
||||||
|
return handlerInput.responseBuilder.getResponse(); // notice we send an empty response
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/* *
|
||||||
|
* The intent reflector is used for interaction model testing and debugging.
|
||||||
|
* It will simply repeat the intent the user said. You can create custom handlers for your intents
|
||||||
|
* by defining them above, then also adding them to the request handler chain below
|
||||||
|
* */
|
||||||
const IntentReflectorHandler = {
|
const IntentReflectorHandler = {
|
||||||
canHandle(handlerInput) {
|
canHandle(handlerInput) {
|
||||||
return ask_sdk_core_1.default.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
|
return Alexa.getRequestType(handlerInput.requestEnvelope) === 'IntentRequest';
|
||||||
},
|
},
|
||||||
handle(handlerInput) {
|
handle(handlerInput) {
|
||||||
const intentName = ask_sdk_core_1.default.getIntentName(handlerInput.requestEnvelope);
|
const intentName = Alexa.getIntentName(handlerInput.requestEnvelope);
|
||||||
const speakOutput = `You just triggered ${intentName}`;
|
const speakOutput = handlerInput.t('REFLECTOR_MSG', {intentName: intentName});
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
|
//.reprompt('add a reprompt if you want to keep the session open for the user to respond')
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Generic error handling to capture any syntax or routing errors. If you receive an error
|
||||||
|
* stating the request handler chain is not found, you have not implemented a handler for
|
||||||
|
* the intent being invoked or included it in the skill builder below
|
||||||
|
* */
|
||||||
const ErrorHandler = {
|
const ErrorHandler = {
|
||||||
canHandle() {
|
canHandle() {
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
handle(handlerInput, error) {
|
handle(handlerInput, error) {
|
||||||
const speakOutput = 'Sorry, I had trouble doing what you asked. Please try again.';
|
const speakOutput = handlerInput.t('ERROR_MSG');
|
||||||
console.log(`~~~~ Error handled: ${JSON.stringify(error)}`);
|
console.log(`~~~~ Error handled: ${JSON.stringify(error.stack)}`);
|
||||||
|
|
||||||
return handlerInput.responseBuilder
|
return handlerInput.responseBuilder
|
||||||
.speak(speakOutput)
|
.speak(speakOutput)
|
||||||
.reprompt(speakOutput)
|
.reprompt(speakOutput)
|
||||||
.getResponse();
|
.getResponse();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
exports.handler = ask_sdk_core_1.default.SkillBuilders.custom()
|
|
||||||
.addRequestHandlers(LaunchRequestHandler, HelloWorldIntentHandler, HelpIntentHandler, CancelAndStopIntentHandler, FallbackIntentHandler, SessionEndedRequestHandler, IntentReflectorHandler)
|
// This request interceptor will bind a translation function 't' to the handlerInput
|
||||||
.addErrorHandlers(ErrorHandler)
|
const LocalisationRequestInterceptor = {
|
||||||
|
process(handlerInput) {
|
||||||
|
i18n.init({
|
||||||
|
lng: Alexa.getLocale(handlerInput.requestEnvelope),
|
||||||
|
resources: languageStrings
|
||||||
|
}).then((t) => {
|
||||||
|
handlerInput.t = (...args) => t(...args);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* This handler acts as the entry point for your skill, routing all request and response
|
||||||
|
* payloads to the handlers above. Make sure any new handlers or interceptors you've
|
||||||
|
* defined are included below. The order matters - they're processed top to bottom
|
||||||
|
* */
|
||||||
|
exports.handler = Alexa.SkillBuilders.custom()
|
||||||
|
.addRequestHandlers(
|
||||||
|
LaunchRequestHandler,
|
||||||
|
HelloWorldIntentHandler,
|
||||||
|
HelpIntentHandler,
|
||||||
|
CancelAndStopIntentHandler,
|
||||||
|
FallbackIntentHandler,
|
||||||
|
SessionEndedRequestHandler,
|
||||||
|
IntentReflectorHandler)
|
||||||
|
.addErrorHandlers(
|
||||||
|
ErrorHandler)
|
||||||
|
.addRequestInterceptors(
|
||||||
|
LocalisationRequestInterceptor)
|
||||||
.withCustomUserAgent('sample/hello-world/v1.2')
|
.withCustomUserAgent('sample/hello-world/v1.2')
|
||||||
.lambda();
|
.lambda();
|
||||||
//# sourceMappingURL=index.js.map
|
|
Loading…
Reference in New Issue
Block a user