错误代码:InvalidIntentSamplePhraseSlot -

Error code: InvalidIntentSamplePhraseSlot -

我在使用新技能控制台构建模型时收到错误代码 Error code: InvalidIntentSamplePhraseSlot。 完整的错误消息是

Sample utterance "AddBookmarkIntent i am at {pageno} of {mybook}" in intent "AddBookmarkIntent" cannot include both a phrase slot and another intent slot. Error code: InvalidIntentSamplePhraseSlot - 

其中 {pageno}AMAZON.NUMBER{mybook}AMAZON.SearchQuery

错误是什么,我该如何解决?

编辑:为意图

添加JSON
{
    "name": "AddBookmarkIntent",
    "slots": [
        {
            "name": "mybook",
            "type": "AMAZON.SearchQuery"
        },
        {
            "name": "pageno",
            "type": "AMAZON.NUMBER"
        }
    ],
    "samples": [
        "i am at {pageno} of the book {mybook}",
        "save page {pageno} to the book {mybook}",
        "save page {pageno} to {mybook}",
        "i am at {pageno} of {mybook}"
    ]
}

错误告诉您您的示例话语中有一个 Intent 名称,它应该只有插槽,而且看起来像您有。

"AddBookmarkIntent i am at {pageno} of {mybook}"

"AddBookmarkIntent" 实际上不应该在话语中。所以把你的话语变成:

"i am at {pageno} of {mybook}"

我知道一些文档首先显示了示例语句的示例,such as here。但这在顶部附近有一个很大的警告: 因此,您必须根据构建 Alexa Skill 的方式谨慎阅读和遵循哪些文档。
Follow this if you are using the Skill Builder.

不允许在同一个 Utterance 中使用 AMAZON.SearchQuery 类型的插槽和另一个插槽,在您的情况下 AMAZON.NUMBER.

根据需要标记其中一个插槽,然后单独索取。

一个小例子:

创建放入语句和槽中的 Intent:

"intents": [
    {
      "name": "AddBookmarkIntent",
      "samples": [
        "I am at {pageno}"
      ],
      "slots": [
        {
          "name": "mybook",
          "type": "AMAZON.SearchQuery",
          "samples": [
            "For {mybook}"
          ]
        },
        {
          "name": "pageno",
          "type": "AMAZON.NUMBER"
        }
      ]
    }

根据需要标记特定插槽,以便 Alexa 自动请求它:

"dialog": {
  "intents": [
    {
      "name": "AddBookmarkIntent",
      "confirmationRequired": false,
      "prompts": {},
      "slots": [
        {
          "name": "mybook",
          "type": "AMAZON.SearchQuery",
          "elicitationRequired": true,
          "confirmationRequired": false,
          "prompts": {
            "elicitation": "Elicit.Intent-AddBookmarkIntent.IntentSlot-mybook"
          }
        }
      ]
    }
  ]
}

并创建请求插槽的提示:

"prompts": [
  {
    "id": "Elicit.Intent-AddBookmarkIntent.IntentSlot-mybook",
    "variations": [
      {
        "type": "PlainText",
        "value": "For which book you like to save the page?"
      }
    ]
  }
]

使用技能构建器 BETA 可能更容易,而不是它的编辑器,因为它会在后台自动创建 JSON。

不幸的是,一个话语似乎只能引用 1 个“短语”插槽类型。

对于您的具体情况,public 测试版中似乎现在有一个非短语槽类型 AMAZON.Book;如果你使用它而不是 AMAZON.SearchQuery 它可能有用吗?

来源:https://developer.amazon.com/en-US/docs/alexa/custom-skills/slot-type-reference.html