Код ошибки: 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}"
    ]
}

person TinyEpic    schedule 20.02.2018    source источник


Ответы (3)


Не допускается наличие слота типа AMAZON.SearchQuery в одном Высказывании с другим слотом, в вашем случае AMAZON.NUMBER.

Отметьте один из слотов как необходимый и запросите их отдельно.

Небольшой пример:

Создайте намерение, помещенное в высказывания и слоты:

"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?"
      }
    ]
  }
]

Это, вероятно, намного проще с бета-версией конструктора навыков, а не с его редактором, потому что он автоматически создает JSON в фоновом режиме.

person Genfood    schedule 23.02.2018
comment
Это имеет для меня большой смысл. Большое спасибо. Мне просто интересно, это своего рода ошибка или они делают это с какой-то целью. - person TinyEpic; 23.02.2018

Ошибка сообщает вам, что у вас есть имя намерения в образце высказывания, где должны быть только слоты, и похоже, что вы это делаете.

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

«AddBookmarkIntent» на самом деле не должно быть внутри высказывания. Итак, превратите свое высказывание в:

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

Я знаю, что в некоторых документах приведены примеры примеров высказываний с именем Intent Name, например, здесь. Но вверху есть большое предупреждение: введите здесь описание изображения Таким образом, вы должны быть осторожны с тем, какие документы вы читаете и которым следуете, в зависимости от того, каким образом вы развиваете свой навык Alexa.
Следуйте этому, если вы используете Skill Builder.

person Jay A. Little    schedule 22.02.2018
comment
Спасибо за ответ @Jay. Однако у меня нет AddBookmarkIntent в моем высказывании. Пожалуйста, смотрите мой пост обновления для моего JSON. - person TinyEpic; 22.02.2018
comment
Хорошо, спасибо, да, обновленный JSON выглядит хорошо для меня. И вы не используете mybook или pageno в качестве имени намерения в другом месте? - person Jay A. Little; 23.02.2018
comment
Нет, не знаю. Проблема, кажется, от этого намерения. - person TinyEpic; 23.02.2018

К сожалению, похоже, что высказывание может ссылаться только на тип слота 1 Phrase.

В вашем конкретном случае похоже, что теперь в общедоступной бета-версии есть нефразовый тип слота AMAZON.Book; если вы используете это вместо AMAZON.SearchQuery, это может сработать?

Источник: https://developer.amazon.com/en-US/docs/alexa/custom-skills/slot-type-reference.html

person cdrini    schedule 21.03.2021