it might be easy, but I couldn't figure it out in a few days.
I want Alex to have a conversation, for example:
β Alexa, run testSkill.
A: Test proficiency has begun. Tell me the number.
β One.
A: Alright, tell me the color now.
β Blue.
A: And finally, tell me the name of the animal.
β Chicken.
A: You told me one, blue and chicken.
I found out that I have to process the attributes of a skill session, which is JSON, and passes information between intentions.
I use such functions;
function testConversation(intent, session, callback) { var cardTitle = intent.name; var repromptText = ""; var sessionAttributes = { // I don't know how to handle this nameOfPairOne: "", nameOfPairTwo: "", }; var shouldEndSession = false; var speechOutput = ""; var color= convertToASCII(intent.slots.color.value); sessionAttributes.nameOfPairOne = color; speechOutput = "You said "+sessionAttributes.nameOfPairOne+". Please say another thing. "; callback(sessionAttributes, buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession)); } function testConversation2(intent, session, callback) { var cardTitle = intent.name; var repromptText = ""; var sessionAttributes = session.attributes; var shouldEndSession = false; var speechOutput = ""; var number = convertToASCII(intent.slots.number.value); sessionAttributes.nameOfPairTwo = number; speechOutput = "You first said "+sessionAttributes.nameOfPairOne+", and now said "+sessionAttributes.nameOfPairTwo; callback(sessionAttributes, buildSpeechletResponse(cardTitle, speechOutput, repromptText, shouldEndSession)); } //------Helpers that build all of the responses ---------// function buildSpeechletResponse(title, output, repromptText, shouldEndSession) { return { outputSpeech: {type: "PlainText", text: output}, card: {type: "Simple", title: "SessionSpeechlet - " + title, content: "SessionSpeechlet - " + output}, reprompt: {outputSpeech: {type: "PlainText", text: repromptText}}, shouldEndSession: shouldEndSession }; } function buildResponse(sessionAttributes, speechletResponse) { return {version: "1.0", sessionAttributes: sessionAttributes, response: speechletResponse}; }
The part of the code from the onIntent () function, where I call the above functions. (I know this is wrong, but could not figure out the right way)
else if ("getColorNum" == intentName) { if (session.attributes.nameOfPairOne === "") { testConversation(intent, session, callback); } else { testConversation2(intent, session, callback); } }
And the JSON intent scheme is as follows:
"intents": [ { "intent": "getColorNum", "slots": [ { "name": "Color", "type": "ColorSlot" }, { "name": "Number", "type": "NumberSlot" } ] }
]}
So am I doing everything wrong? Where is the mistake? And how can I build a conversation, as I mentioned? Thanks, now.