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

时间:2017-10-19 09:46:43

标签: aws-lambda alexa alexa-skills-kit alexa-skill alexa-slot

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

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

我也使用了自定义插槽类型" LOCATION_LIST"具有以下值。

kitchen
bedroom
bathroom
dining area

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

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

3 个答案:

答案 0 :(得分:3)

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

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

  

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

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

  

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