2

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

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

传递给的请求对象MyCustomIntent

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

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

但是,MyCustomIntentAlexa 发送的每个请求都将包括

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

这在开发过程中造成了分裂。当尝试使用MyCustomSlotwithin MyCustomIntent, if intent, intent.slots, and each各自intent.slots.MyCustomSlot不存在时,我将不得不使用一些默认值来让我的代码正常运行。

这意味着我现在有必要在我的交互模型和我的 Lambda 函数中维护我的意图模式。这听起来很混乱,并且在引入多个插槽和意图时可能很快就会失控。

我的问题

有什么方法可以将默认插槽值发送到发射器中,这样我就可以毫无疑问地知道,我总是可以保证在其中使用相同的基本请求对象MyCustomIntent

4

1 回答 1

1

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

'firstIntent': function() {
    this.attributes['slot_value1']= value;
    alexa.emit('secondIntent');
 }
于 2017-08-21T10:41:31.987 回答