var Alexa = require ('alexa-sdk'); const config = require ('../config/config'); var databaseHelper = require ('../helpers/database'); const constants = require ('../config/constants'); var handlers = {}; module.exports = { run: function (req, res) { // Build the context manually, because Amazon Lambda is missing var context = { succeed: function (result) { console.log (result); res.json (result); }, fail: function (error) { console.log (error); //We could send error json from here }, }; var alexa = Alexa.handler (req.body, context); alexa.appId = config.SKILL_ID; alexa.registerHandlers (handlers); alexa.execute (); }, updateModel: function () { //Get info from database, and store it for faster response on intent databaseHelper .getSkill (config.SKILL_DB_ID) .then (activeSkill => { handlers = {}; //Handler for launch request handlers = { LaunchRequest: function () { this.response .speak (activeSkill.invocationAnswer) .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); //Phrase from listen doesn't work !!! //TODO : Maybe to ask user does he want to hear possible intents //For this functionality, we need explanation text for each intent (Question) this.emit (':responseReady'); }, }; //Handlers for user defined questions activeSkill.intents.map (intent => { handlers[intent.intentName] = function () { this.response .speak (intent.answer) .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); //Phrase from listen doesn't work !!! this.emit (':responseReady'); }; }); //Default handlers for unknown questions and session close handlers.Unhandled = function () { this.response .speak (constants.voiceResponseStrings.QUESTION_NOT_FOUND) .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); } handlers.SessionEndedRequest = function(){ //We don't care for now } }) .catch (e => { //Something is wrong, skill is not ready, use catch-all intent to inform user console.log ('Error. Skill doesnt exist'); }); }, };