Пользовательское намерение Alexa принимает значения, которые не хранятся в возможных slot.values, которые должны его вызвать - PullRequest
0 голосов
/ 02 июля 2018

У меня есть намерение, которое срабатывает, если пользователь просит 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  

Алекса должна отправить сообщение об ошибке, поскольку "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 и не должны вызывать намерение в первую очередь.

1 Ответ

0 голосов
/ 03 июля 2018

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

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

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

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

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

или

"Извините, в нашем списке нет aenjaejfn. Можете ли вы выбрать что-то из [дайте несколько образцов из вашего списка] "

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

...