从另一个意图触发一个意图时,例如
'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
时,如果intent
,intent.slots
和每个intent.slots.MyCustomSlot
不存在,那么我将不得不使用一些默认值允许我的代码正常运行。
这意味着现在我需要在我的交互模型和Lambda函数中维护我的意图模式。这听起来非常混乱,并且当引入多个插槽和意图时可以迅速伸出手。
有没有办法将默认的插槽值发送到emit中,这样我毫无疑问地知道我可以在MyCustomIntent
内始终保证相同的基本请求对象?
答案 0 :(得分:1)
您可以使用会话属性来传递插槽值,例如
'firstIntent': function() {
this.attributes['slot_value1']= value;
alexa.emit('secondIntent');
}