我一直在试图创建会话变量时出错

时间:2017-09-11 02:38:54

标签: node.js amazon-web-services aws-lambda alexa alexa-skills-kit

我正在研究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']);
   },

1 个答案:

答案 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.');
},