我是Alexa开发的新手。我已成功使用AWS lambda函数和Node.js代码创建Alexa技能。这是我的意图架构。
{
"intents": [
{
"slots": [
{
"name": "locationName",
"type": "LOCATION_LIST"
}
],
"intent": "locationIntent"
}
]
}
我也使用了自定义插槽类型" LOCATION_LIST"具有以下值。
kitchen
bedroom
bathroom
dining area
它工作正常。但我需要从我自己的服务中动态添加更多位置值。有可能吗?
根据我的系统架构,我们无法预先定义位置名称。那我该怎么办?
答案 0 :(得分:3)
是的,有可能完成你的要求。
首先,让我们清楚一下插槽是如何工作的。如this Alexa博客文章中所述:
"当您创建自定义插槽类型时,要理解的关键概念是这是Alexa的NLP(自然语言处理)的训练数据。您提供的值不是严格的枚举或数组,限制用户可以说的内容。这有两个含义1)不在您的插槽值中的单词和短语将传递给您,2)如果所说的内容未知,您的代码需要执行您需要的任何验证。"
这意味着您可以在插槽中接收未在SLOT定义中明确列出的单词。所以你只需要在SLOT列表中提供足够的单词示例来帮助Alexa NLP引擎。
我建议您尝试使用当前的实现,并尝试替换其他位置,看看Alexa是否可以识别并返回它。尝试将插槽值写入日志并查看。你可能会感到惊喜。
答案 1 :(得分:1)
不,您无法动态添加插槽。也许是一个非常简短的答案,但这是事实。
亚马逊也没有默认插槽来满足您的要求。如果是其他地方,如城市,那么有内置的插槽可用,如AMAZON.City'。这里唯一可行的方法是在自定义插槽中添加尽可能多的位置。您的自定义插槽中最多可包含50,000个插槽值(总计在交互模型中使用的所有自定义插槽中)。
答案 2 :(得分:0)