如何动态地将插槽值添加到alexa技能

问题描述 投票:2回答:3

我是Alexa开发的新手。我已成功使用AWS lambda函数和Node.js代码创建Alexa技能。这是我的意图架构。

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

我也使用了以下值的自定义插槽类型“LOCATION_LIST”。

kitchen
bedroom
bathroom
dining area

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

根据我的系统架构,我们无法预定义位置名称。那我该怎么办?

aws-lambda alexa alexa-skills-kit alexa-skill alexa-slot
3个回答
3
投票

是的,有可能完成你的要求。

首先,让我们清楚一下插槽是如何工作的。如this Alexa博客文章中所述:

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

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

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


1
投票

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

亚马逊也没有默认插槽来满足您的要求。如果它是像城市这样的其他地方,那么就有像'AMAZON.City'这样的内置插槽。这里唯一可行的方法是在自定义插槽中添加尽可能多的位置。您的自定义插槽中最多可包含50,000个插槽值(总计在交互模型中使用的所有自定义插槽)。

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


0
投票

虽然@Vijayanath在撰写本文时是正确的,但答案现在将是:是的,这是可能的。这是最近刚刚添加的一项新功能(似乎在2019年3月左右)。你可以在this Blog-Post中了解它。并找到开发人员文档here。这总结得很好:

新的动态实体功能可帮助您在运行时调整交互模型,无需编辑,构建或重新认证,从而个性化Alexa技能体验。现在,您的技能可以通过更新代码,数据库或RESTful API调用中的数据结构中的现有槽值来处理客户,上下文和会话更改。

© www.soinside.com 2019 - 2024. All rights reserved.