updated lambda/index.js.

This commit is contained in:
AlexaHostedSkills 2024-07-15 20:41:47 +00:00
parent 1be3c2fbcd
commit 5d47dc7efc

View File

@ -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 doesnt 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