Пользовательское намерение Alexa принимает значения, которые не хранятся в возможном слоте. Значения, которые должны запускать его

У меня есть намерение, которое срабатывает, если пользователь просит Alexa воспроизвести одно из радио, которое я предоставил в файле JSON для слота {radio} на консоли Alexa. Однако, если пользователь просит Алексу воспроизвести "random_english_words", намерение тоже сработает.
Чтобы упростить, вот что происходит:

-User: Alexa play A better radio  
-Alexa: I will play A better radio  
=> Alexa does her job just fine.  
-User: Alexa play what the Movie  
-Alexa: I will play what the Movie  

Alexa должна отправить сообщение об ошибке, потому что "what the Movie" не является возможным названием радио в значениях radio_slot. Но подождите, это становится еще более странным.

User: Alexa play aenjaejfn  
Alexa: There was a problem with the requested skill's response 

Алекса отлично справляется со своей работой, поскольку aenjaejfn НЕ является возможным именем радио в значениях radio_slot.

Итак, у меня есть два вопроса:

  1. Разве намерения, использующие слоты, не должны запускаться только в том случае, если значение slot.value, предоставленное пользователем, является допустимым?
  2. Почему Алекса принимает «What the Movie», а не «aenjaejfn», в конце концов, они оба не являются radio_name и не должны вызывать намерение в первую очередь.

person AG_HIHI    schedule 02.07.2018    source источник


Ответы (1)


Когда вы создаете пользовательский тип слота, важно понимать, что это обучающие данные для Alexa NLP (обработка естественного языка). Предоставленные вами значения НЕ являются строгим перечислением или массивом, ограничивающим то, что пользователь может сказать. Это имеет два значения

1) вам будут переданы слова и фразы, не входящие в значения вашего слота,

2) ваш код должен выполнить любую необходимую проверку, если то, что сказано, неизвестно.

Поскольку вы знаете допустимые значения для этого слота, всегда выполняйте проверку значения слота в своем коде. Таким образом, когда вы получаете что-то вроде «aenjaejfn» или что-то, что вы не поддерживаете, вы всегда можете вежливо ответить, например

"Извините, я не понял, вы можете повторить"

or

«К сожалению, в нашем списке нет aenjaejfn. Не могли бы вы выбрать что-нибудь из [дайте несколько образцов из вашего списка]»

Подробнее здесь

person johndoe    schedule 03.07.2018
comment
Спасибо! Интересно, а с Gooogle Home то же самое ?? - person AG_HIHI; 03.07.2018