diff --git a/backend/config/constants.js b/backend/config/constants.js index 7c3a7df..093f427 100644 --- a/backend/config/constants.js +++ b/backend/config/constants.js @@ -28,7 +28,8 @@ constants.SKILL_ID_LENGTH = 24; constants.voiceResponseStrings = { QUESTION_NOT_FOUND : 'Sorry, I didnt understand', - GENERIC_CONTINUE : 'Would you like to continue' + GENERIC_CONTINUE : 'Say something to continue', + DIDNT_ASK_ANYTHING : 'There was no question to answer to', } //Timing is given in [ms] diff --git a/backend/helpers/amazon.js b/backend/helpers/amazon.js index fcc781e..3644a76 100644 --- a/backend/helpers/amazon.js +++ b/backend/helpers/amazon.js @@ -68,6 +68,34 @@ var generateInteractionModel = function (skill) { allIntents.push ({name: intent.intentName, samples: intent.questions}); }); + //Built-In like intents (Amazon built-in don't work, probably something related to existance of dialog intent + + allIntents.push ({ + name: 'HelpIntent', + samples: ['Help', 'Can you help me', 'I need help'], + slots: [], + }, + { + name: 'CancelIntent', + samples: ['Cancel', 'Stop', 'Please stop'], + slots: [], + }, + { + name: 'YesIntent', + samples: [ + 'Yes', + 'Yes please', + 'I would like that', + 'Yes I would like that', + ], + slots: [], + }, + { + name: 'NoIntent', + samples: ['No', 'No thank you'], + slots: [], + }); + //Special intent for sending message (Dialog) allIntents.push ({ diff --git a/backend/models/alexa.js b/backend/models/alexa.js index 8a31a0d..e791b18 100644 --- a/backend/models/alexa.js +++ b/backend/models/alexa.js @@ -34,7 +34,7 @@ module.exports = { destinationEmail = activeSkill.contactEmail; let listOfPossibleQuestions = ''; - activeSkill.intents.forEach(intent => { + activeSkill.intents.forEach (intent => { if (intent.questions.length > 0 && intent.intentExplanation) { listOfPossibleQuestions += intent.intentExplanation + @@ -44,8 +44,7 @@ module.exports = { 'ms"/>'; } }); - - console.log(listOfPossibleQuestions); + listOfPossibleQuestions += 'If you dont know what to do, just say help or stop'; //Handler for launch requestconsole.log() handlers = { @@ -56,9 +55,10 @@ module.exports = { '' + - listOfPossibleQuestions + 'Would you like to hear list of questions that you can ask me' ) .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); //Phrase from listen doesn't work !!! + this.attributes['LaunchRequestYesNo'] = true; this.emit (':responseReady'); }, }; @@ -66,6 +66,9 @@ module.exports = { //Handlers for user defined questions activeSkill.intents.map (intent => { handlers[intent.intentName] = function () { + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + } this.response .speak (intent.answer) .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); //Phrase from listen doesn't work !!! @@ -75,6 +78,10 @@ module.exports = { //Handler for sending message handlers.SendMessageIntent = function () { + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + } + let intent = this.event.request.intent; console.log ('Dialog state : ' + this.event.request.dialogState); @@ -161,7 +168,48 @@ module.exports = { } }; - //Default handlers for unknown questions and session close + //Built-In intents + + handlers.CancelIntent = function () { + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + } + this.response.speak ('Thank you for using Saburly'); + this.emit (':responseReady'); + }; + + handlers.HelpIntent = function () { + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + } + this.response + .speak (listOfPossibleQuestions) + .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); //Phrase from listen doesn't work !!! + this.emit (':responseReady'); + }; + + handlers.YesIntent = function(){ + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + this.emit('HelpIntent'); + }else{ + this.response.speak(constants.voiceResponseStrings.DIDNT_ASK_ANYTHING).listen(constants.voiceResponseStrings.GENERIC_CONTINUE); + this.emit(':responseReady'); + } + } + + handlers.NoIntent = function (){ + if (this.attributes['LaunchRequestYesNo']){ + this.attributes['LaunchRequestYesNo'] = false; + this.response.speak('').listen(constants.voiceResponseStrings.GENERIC_CONTINUE); + this.emit(':responseReady'); + }else{ + this.response.speak(constants.voiceResponseStrings.DIDNT_ASK_ANYTHING).listen(constants.voiceResponseStrings.GENERIC_CONTINUE); + this.emit(':responseReady'); + } + } + + //Default handler for unknown question handlers.Unhandled = function () { this.response @@ -169,6 +217,8 @@ module.exports = { .listen (constants.voiceResponseStrings.GENERIC_CONTINUE); }; + //Session handlers + handlers.SessionEndedRequest = function () { //We don't care for now };