diff --git a/backend/config/constants.js b/backend/config/constants.js index 0fe470f..6674956 100644 --- a/backend/config/constants.js +++ b/backend/config/constants.js @@ -26,6 +26,11 @@ constants.HTTPResultCodes = { constants.SKILL_ID_LENGTH = 24; +constants.voiceResponseStrings = { + QUESTION_NOT_FOUND : 'Sorry, I didnt understan', + GENERIC_CONTINUE : 'Would you like to continue' +} + module.exports = constants; \ No newline at end of file diff --git a/backend/models/alexa.js b/backend/models/alexa.js index ad58067..d95c855 100644 --- a/backend/models/alexa.js +++ b/backend/models/alexa.js @@ -1,6 +1,7 @@ var Alexa = require ('alexa-sdk'); const config = require ('../config/config'); var databaseHelper = require ('../helpers/database'); +const constants = require ('../config/constants'); var handlers = {}; @@ -24,31 +25,47 @@ module.exports = { alexa.execute (); }, updateModel: function () { - //TODO : Alexa-sdk has handlers like SessionEndedRequest, Unhandled ,... that can be used - //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 (' Would you like to continue ?'); + .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 ('Would you like to continue ?'); + .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