I have an AWS skill with a Lambda function that's based on the Interactive Adventure Game Skill template in Node.js. I decided to add a an extra AMAZON.NUMBER slot in one area, and everything is working in terms of the intent and Alexa recognizing the number.
However, i'm not sure how to save that value into the database.
The /handlers/dynamoDB.js file has putUserState and putSetState already working, but those functions only have session and cb passed to them as parameters. The value I need to save is in the request.intent.slots.PhoneNumber.value field, but it's obviously undefined at that point.
Therefore, I tried creating and exporting a new helper function that would be called for only that particular intent. It's in the same Dynamo helper file.
function putRequestData ( session, phoneNo, cb ) { var phoneNo = phoneNo var params = { "TableName": config.dynamoTableName, "Item": { "optionId": session.user.userId, "breadcrumbs": session.attributes.breadcrumbs, "currentSceneId": session.attributes.currentSceneId, "phoneNumber": phoneNo } } docClient.put( params, handler( cb ) ) }
It's called in /handlers/intentHandlers_generated.js, where intent is already being passed in the primary function (dynamo is already exported and added to this file).
"PhoneNumberIntent": function ( intent, session, request, response, cb ) { processUtterance( intent, session, request, response, "my phone number is {PhoneNumber}" ) var phoneNo = intent.slots.PhoneNumber.value console.log(phoneNo) dynamo.putRequestData( phoneNo, cb ) } but this gives me this error in cloudwatch logs for the Lambda function: { "ingestionTime": 1503528160904, "timestamp": 1503528145733, "message": "2017-08-23T22:42:25.715Z\t55d56bf4-8854-11e7-a18b-6b9f4eb70ec4\tUnexpected exception TypeError: Cannot read property 'userId' of undefined\n", "eventId": "33529798076810850770027871722698209522952682213984370690", "logStreamName": "2017/08/23/[$LATEST]ec0f2f318c454bb9a0eea3bc1dc943c1" }, { "ingestionTime": 1503528160904, "timestamp": 1503528145773, "message": "2017-08-23T22:42:25.736Z\t55d56bf4-8854-11e7-a18b-6b9f4eb70ec4\t{\"errorMessage\":\"Cannot read property 'userId' of undefined\",\"errorType\":\"TypeError\",\"stackTrace\":[\"Object.putRequestData (/var/task/handlers/dynamoDB.js:67:31)\",\"module.exports.PhoneNumberIntent (/var/task/handlers/intentHandlers_generated.js:57:10)\",\"eventHandlers.onIntent (/var/task/handlers/eventHandlers.js:52:21)\",\"AlexaSkill.requestHandlers.IntentRequest (/var/task/AlexaSkill.js:28:33)\",\"AlexaSkill.execute (/var/task/AlexaSkill.js:79:20)\"]}\n", "eventId": "33529798077702880577969096648359638253858616674223587331", "logStreamName": "2017/08/23/[$LATEST]ec0f2f318c454bb9a0eea3bc1dc943c1" } Any ideas? Thank you!