2017-10-19 135 views
2

我是Alexa发展中的新成员。我已经使用AWS lambda函数和Node.js代码成功创建了一项Alexa技能。这是我的意图模式。如何将位置值动态添加到alexa技能

{ 
    "intents": [ 
    { 
     "slots": [ 
     { 
      "name": "locationName", 
      "type": "LOCATION_LIST" 
     } 
     ], 
     "intent": "locationIntent" 
    } 
    ] 
} 

此外,我用自定义插槽类型“LOCATION_LIST”以下值。

kitchen 
bedroom 
bathroom 
dining area 

它工作正常。但我需要从我自己的服务中动态添加更多位置值。可能吗?

基于我的系统架构,我们不能预先定义位置名称。那我该怎么办?

回答

0

不,您不能动态添加插槽。也许是一个很简短的答案,但这是事实。

亚马逊并没有默认插槽以符合您的要求。如果是像其他城市一样的城市,那么就有像“AMAZON.City”这样的内置插槽。这里唯一可能的方法是在自定义插槽中添加尽可能多的位置。您可以在自定义广告位中拥有最多50,000个广告位值(在交互模型中使用的所有自定义广告位总计)。

https://developer.amazon.com/docs/custom-skills/custom-interaction-model-reference.html#custom-slot-type-values

+1

你是正确的,新的插槽不能动态添加。但阿卜杜勒似乎在询问获得额外的插槽值,而不是增加新的插槽或插槽类型。所以这部分是可能的,如我的答案中所述。 –

2

是的,有可能实现你的要求。

首先,让我们来了解一下槽的工作原理。作为this Alexa的博客中描述:

“当你创建一个自定义插槽类型,一个关键的概念理解是,这是对Alexa的NLP训练数据(自然语言处理)您提供的值不是。严格枚举或数组限制用户可以说,这有两个含义1)不在您的插槽值中的单词和短语将传递给您,2)如果所说的内容未知,您的代码需要执行您所需的任何验证。

这意味着您可以在SLOT定义中未明确列出的插槽中接收单词。所以你只需要在SLOT列表中提供足够的单词示例来帮助Alexa NLP引擎。

我建议您尝试一下当前的实现,并尝试替换不同的位置,看看Alexa是否可以识别并返回它。尝试将插槽值写入日志并查看。你可能会感到惊喜。

相关问题