1

这是一个非常简单的问题,但我找不到任何答案的证据。我想为我配置一个插槽类型列表——这意味着 Lex 将不得不继续询问该列表中的更多元素。

例如,来回应该是这样的:

Lex: What flowers would you like to order?
Me: roses
Lex: Any other types?
Me: yes, I also want lillies
Lex: Anything else?
Me: that is all

发送到 Lambda 的示例负载如下所示:

{
  "currentIntent": {
    "slots": {
      "PickupDate": "2030-11-08",
      "PickupTime": "10:00",
      "FlowerType": "lilies"
    },
    "name": "OrderFlowers",
    "confirmationStatus": "None"
  },
  "bot": {
    "alias": "$LATEST",
    "version": "$LATEST",
    "name": "OrderFlowers"
  },
  "userId": "John",
  "invocationSource": "DialogCodeHook",
  "outputDialogMode": "Text",
  "messageVersion": "1.0",
  "sessionAttributes": {}
}

该 ^^^ 直接取自 AWS Lambda 控制台中的示例测试配置。

我希望它看起来像这样:

{
  "currentIntent": {
    "slots": {
      "PickupDate": "2030-11-08",
      "PickupTime": "10:00",
      "FlowerTypes": [
             "roses",     
             "lilies"
       ]    
},
    "name": "OrderFlowers",
    "confirmationStatus": "None"
  },
  "bot": {
    "alias": "$LATEST",
    "version": "$LATEST",
    "name": "OrderFlowers"
  },
  "userId": "John",
  "invocationSource": "DialogCodeHook",
  "outputDialogMode": "Text",
  "messageVersion": "1.0",
  "sessionAttributes": {}
}
4

1 回答 1

1

Lex 插槽始终是字符串,因此您必须想出更复杂的解决方案。我会建议:

  1. 创建一个意图,询问要订购什么花。您应该引出一个名为“花”的插槽。
  2. 运行代码时,从插槽中获取输入,并将其添加到会话属性中。现在问一个后续问题“输入您想要订购的更多鲜花,或者如果您完成了就‘完成’”
  3. 再次引出槽。
  4. 每次检查插槽时(在将其添加到会话之前),查看它是否匹配“完成”。如果是这样,您可以履行订单,然后履行活动。

高飞,我知道,但 Lex 目前的老虎机选项非常有限!

于 2017-07-13T10:54:08.237 回答