Aws lambda 为什么我没有收到插槽?

Aws lambda 为什么我没有收到插槽?,aws-lambda,alexa,alexa-skills-kit,alexa-skill,alexa-slot,Aws Lambda,Alexa,Alexa Skills Kit,Alexa Skill,Alexa Slot,我的要求如下: "request": { "type": "IntentRequest", "requestId": "EdwRequestId.0941c2f8-30b3-4001-aa05-1cec3a715b05", "intent": { "name": "Buses", "slots": { "Heading": { "name": "Heading", "value": "eastbound" } } },

我的要求如下:

"request": {
 "type": "IntentRequest",
 "requestId": "EdwRequestId.0941c2f8-30b3-4001-aa05-1cec3a715b05",
 "intent": {
   "name": "Buses",
   "slots": {
     "Heading": {
       "name": "Heading",
       "value": "eastbound"
     }
   }
 },
 "locale": "en-US",
 "timestamp": "2017-12-27T02:45:22Z"
}
上述内容是在我提供激活语句后由服务模拟器生成的

我的AWS Lambda函数具有以下功能:

'Buses': function() {
    const itemSlot = this.event.request.intent.slots.Item;
    let heading;
    if (itemSlot && itemSlot.value) {
        console.log(itemSlot.value);
        heading = itemSlot.value.toLowerCase();
    }
    else
        console.log("No slots!");

没有插槽已输出到控制台。

如前所述,您的请求和代码正在执行它们应该执行的操作。以服务模拟器请求为例,您的请求仅定义一个标识为
“Heading”
的插槽:

由于不存在标识为
“Item”
的插槽,因此
itemSlot
变量未定义,并计算else条件

如果你的话语中没有一个叫做“项目”的时段,你可能只是想引用标题时段,如下所示:

this.event.request.intent.slots.Heading;

如果您的话语中确实有一个名为“Item”的插槽,那么模拟器可能会识别出一个没有“Item”的差异话语,并使用它来代替。您可以通过检查您的话语和对模拟器的示例请求来解决这个问题,以确保它们按照您的预期进行路由。您还可以调试以检查
this.event.request.intent.slots
,以验证您在lambda中是否接收到插槽。

如前所述,您的请求和代码正在执行它们应该执行的操作。以服务模拟器请求为例,您的请求仅定义一个标识为
“Heading”
的插槽:

由于不存在标识为
“Item”
的插槽,因此
itemSlot
变量未定义,并计算else条件

如果你的话语中没有一个叫做“项目”的时段,你可能只是想引用标题时段,如下所示:

this.event.request.intent.slots.Heading;
如果您的话语中确实有一个名为“Item”的插槽,那么模拟器可能会识别出一个没有“Item”的差异话语,并使用它来代替。您可以通过检查您的话语和对模拟器的示例请求来解决这个问题,以确保它们按照您的预期进行路由。您还可以调试以检查
this.event.request.intent.slots
,以验证是否在lambda中接收到所有插槽