将Alexa Skill插槽名称传递给emit上的新意图

时间:2017-06-19 20:19:37

标签: alexa-skills-kit alexa-skill alexa-slot

从另一个意图触发一个意图时,例如

'LaunchRequest': function () {
    this.emit('MyCustomIntent')
}

传递给MyCustomIntent的请求对象是

"request": { 
  type: 'LaunchRequest',
  requestId: '...',
  timestamp: '...',
  locale: 'en-US'
}

请注意,没有意图或插槽信息传递给MyCustomIntent

但是,Alexa发送的每个MyCustomIntent请求都包含

"request": {
  "type": "IntentRequest",
  ...,
  "intent": {
    "name": "MyCustomIntent",
    "slots": {
      "MyCustomSlot": {
        "name": "MyCustomSlot"
      }
    }
  }
}

这在开发过程中产生了分裂。在MyCustomSlot内尝试使用MyCustomIntent时,如果intentintent.slots和每个intent.slots.MyCustomSlot不存在,那么我将不得不使用一些默认值允许我的代码正常运行。

这意味着现在我需要在我的交互模型和Lambda函数中维护我的意图模式。这听起来非常混乱,并且当引入多个插槽和意图时可以迅速伸出手。

我的问题

有没有办法将默认的插槽值发送到emit中,这样我毫无疑问地知道我可以在MyCustomIntent内始终保证相同的基本请求对象?

1 个答案:

答案 0 :(得分:1)

您可以使用会话属性来传递插槽值,例如

'firstIntent': function() {
    this.attributes['slot_value1']= value;
    alexa.emit('secondIntent');
 }