我的自定义插槽类型具有意外值

Kon*_*ert 7 alexa alexa-skill alexa-skills-kit alexa-slot

在使用Alexa技能套件测试我的交互模型时,我发现了一些奇怪的东西.

我定义了一个自定义插槽类型,如下所示:

CAR_MAKERS Mercedes | BMW | Volkswagen
Run Code Online (Sandbox Code Playgroud)

我的意图计划是这样的:

{
  "intents": [
    {
      "intent": "CountCarsIntent",
      "slots": [
        {
          "name": "CarMaker",
          "type": "CAR_MAKERS"
        },
   ...
Run Code Online (Sandbox Code Playgroud)

样本话语如:

CountCarsIntent Add {Amount} cars to {CarMaker}
Run Code Online (Sandbox Code Playgroud)

现在,在开发人员控制台中进行测试时,我注意到我可以编写如下内容:

"Add three cars to Ford"
Run Code Online (Sandbox Code Playgroud)

它实际上会解析这个!即使在交互模型中从未提及"福特"!lambda请求是:

  "request": {
    "type": "IntentRequest",
    ...
    "intent": {
      "name": "CountCarsIntent",
      "slots": {
        "CarMaker": {
          "name": "ExpenseCategory",
          "value": "whatever"
        },
 ...
Run Code Online (Sandbox Code Playgroud)

这真的让我感到惊讶,因为有关自定义插槽类型的文档非常清楚,插槽只能采用交互模型中列出的值.

现在,似乎值也是动态解析的!这是一个新功能,还是我错过了什么?

Tom*_*Tom 6

实际上这是正常的(而且很好,IMO).Alexa使用您提供的单词列表作为指南,而不是最终列表.

如果它没有这种灵活性,那么就无法知道用户是否使用了你不期望的单词.这样您就可以学习和改进列表和处理.