我正在研究Alexa技能。目前,我正在尝试获取用户名并将其作为会话变量。但是,每当我去测试它时,它都会给我这个错误:
"errorMessage": "RequestId: 98b4fce1-9699-11e7-a585-43e1799b56fe Process
exited before completing request"
以下是日志中的TypeError:
TypeError: Cannot read property 'slots' of undefined
这是我的代码:
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.dynamoDBTableName = 'usersName';
alexa.execute();
};
var handlers = {
'LaunchRequest': function () {
this.emit('LaunchIntent');
},
'LaunchIntent': function () {
this.atttributes['myName'] = this.event.request.intent.slots.myName.value
this.emit(':ask', 'Hi! Welcome to Welcoming Alarm! What is your name?');
},
'RemebmberNameIntent': function () {
this.emit(':tell,', 'Hi there!' + this.atttributes['myName']);
},
答案 0 :(得分:0)
这是因为您正在尝试从LaunchRequest
内部访问插槽。
LaunchRequest
没有意图映射,并且插槽是意图的一部分。这意味着intent
JSON有效负载中将没有LaunchRequest
对象。
LaunchRequest
是一个对象,代表用户进行了 要求使用Alexa技能,但未提供具体意图。
有关Alexa的更多信息,请请求类型here。
为了使此工作有效,请创建另一个意图,以便用户在其中可以实际说出他们的名字。 (我希望您有一个),然后从那里存储名称到会话属性。
'TellMyNameIntent': function () {
this.atttributes['myName'] = this.event.request.intent.slots.myName.value
this.emit(':ask', 'Okay, Got it, I will remember your name.');
},