Alexa自定义意图接受未存储在可能的插槽中的值。应该触发它的值

时间:2018-07-02 16:56:52

标签: javascript node.js alexa alexa-skills-kit alexa-slot

如果用户要求Alexa播放我在JSON文件中为Alexa控制台上的插槽{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应该发送错误,因为在radio_slot值中“ what the Movie”不是一个可能的广播名称。但是等等,这变得更加奇怪。

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

Alexa的工作很好,因为aenjaejfn在radio_slot值中不是一个可能的无线电名称。

所以我有两个问题:

  1. 仅在用户提供的slot.value有效的情况下,才使用意图触发插槽的意图吗?
  2. 为什么Alexa接受“ What the Movie”而不是“ aenjaejfn”,毕竟它们都不是radio_name,因此一开始就不应触发意图。

1 个答案:

答案 0 :(得分:0)

  

创建自定义广告位类型时,需要了解的关键概念是   这是Alexa NLP(自然语言)的训练数据   处理中)。您提供的值不是严格的枚举或数组   限制了用户可以说的话。这有两个含义

     

1)不在您的广告位值中的单词和短语会被传递给您,

     

2)如果说的是,您的代码需要执行所需的任何验证   未知。

由于您知道该插槽的可接受值,因此请始终对代码执行插槽值验证。这样,当您收到类似“ aenjaejfn”之类的内容或不支持的内容时,您总是可以礼貌地回覆

  

“对不起,我听不懂,您能再说一次吗”

  

“抱歉,我们的列表中没有aenjaejfn。请您选择   从[提供您列表中的一些样本]中获取一些东西”

更多信息here