【问题标题】:Why am I not receiving the slot?为什么我没有收到插槽?
【发布时间】:2018-06-07 18:32:44
【问题描述】:

我的要求如下:

"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! 被输出到控制台。

【问题讨论】:

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


    【解决方案1】:

    正如所写,您的请求和您的代码正在做他们应该做的事情。以服务模拟器请求为例,您的请求只定义了一个标识为"Heading"的槽:

       "slots": {
         "Heading": {
           "name": "Heading",
           "value": "eastbound"
         }
    

    由于不存在标识为 "Item" 的插槽,因此您的 itemSlot 变量未定义并评估 else 条件。

    如果您的话语中没有名为“项目”的槽,您可能只想简单地引用标题槽,如下所示:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多