为什么我没有收到插槽?
Why am I not receiving the slot?
我的要求如下:
"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!");
No slots!
被输出到控制台。
正如所写,您的请求和您的代码正在执行它们应该执行的操作。以服务模拟器请求为例,你的请求只定义了一个slot,标识为"Heading"
:
"slots": {
"Heading": {
"name": "Heading",
"value": "eastbound"
}
由于不存在标识为 "Item"
的插槽,因此您的 itemSlot
变量未定义并评估 else 条件。
如果您在名为 "Item" 的话语中没有空位,您可能只想引用标题空位,如下所示:
this.event.request.intent.slots.Heading;
如果您的话语中确实有一个名为 "Item" 的插槽,则模拟器可能会识别出没有 "Item" 的差异话语并使用它来代替。您可以通过检查您的话语和对模拟器的示例请求来解决此问题,以确保它们按照您的预期进行路由。您还可以调试以检查 this.event.request.intent.slots
,以验证您是否在 lambda 中接收到插槽。
我的要求如下:
"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!");
No slots!
被输出到控制台。
正如所写,您的请求和您的代码正在执行它们应该执行的操作。以服务模拟器请求为例,你的请求只定义了一个slot,标识为"Heading"
:
"slots": {
"Heading": {
"name": "Heading",
"value": "eastbound"
}
由于不存在标识为 "Item"
的插槽,因此您的 itemSlot
变量未定义并评估 else 条件。
如果您在名为 "Item" 的话语中没有空位,您可能只想引用标题空位,如下所示:
this.event.request.intent.slots.Heading;
如果您的话语中确实有一个名为 "Item" 的插槽,则模拟器可能会识别出没有 "Item" 的差异话语并使用它来代替。您可以通过检查您的话语和对模拟器的示例请求来解决此问题,以确保它们按照您的预期进行路由。您还可以调试以检查 this.event.request.intent.slots
,以验证您是否在 lambda 中接收到插槽。