亚马逊 Alexa 分层对话框

Amazon Alexa hierarchical dialog

我正在使用 Amazon Alexa SDK,并且正在编写我的第一项技能。 我的目标是像这样编写一个对话框:

  1. 你住在哪里?
  2. 你在那里住了多久了?

问题是我可以用第二个问题的关键字回答第一个问题,然后 Alexa 假设我回答了第二个问题并会为我提供第二个问题的答案。 有什么办法可以避免这种情况吗?

我知道我可以使用会话属性,但这对我来说看起来很老套...

感谢您的帮助=)

PS:我正在使用 flask-ask 作为我的 Alexa Skill。

您可以通过多种方式构建此对话框。第一种方法与您目前正在做的类似,是使用一系列单轮对话。我的猜测是您没有在现有交互模型中使用正确的插槽类型,这就是匹配错误意图的原因。

如果我使用单回合方法,我会有两个意图。

第一个意图将匹配对问题 "Where do you live?"

的回答
Intent: GetAddressCity
Utterance 1: {AMAZON.US_CITY}
Utterance 2: I live in {AMAZON.US_CITY}

第二个将匹配对问题 "How long have you been living there?"

的回答
Intent: GetAddressDuration
Utterance 1: {AMAZON.NUMBER}
Utterance 2: {AMAZON.NUMBER} years
Utterance 3: For {AMAZON.NUMBER} years

一种完全不同的方法(我可能会在这种情况下使用的一种方法)是使用 Multi-turn Dialog 来构建对话。这种方法将定义一个具有多个必需槽值的意图。

Intent: GetLivingInfo
Utterance 1: I live in {AMAZON.US_CITY}
Utterance 2: I've lived in {AMAZON.US_CITY} for {AMAZON.NUMBER} years

一个意图,需要两个槽。如果用户说 I live in BostonUtterance 1 将匹配,并且 Alexa 将响应提示询问他们在那里居住的年数。查看 Multi-turn Dialogs 了解更多详情。

我认为比尔的回答是最好的解决方案。是的,您可以使用多个问题,但第二个问题需要有第一个响应传递给它的响应信息。您可以使用与用户 ID 相关联的数据库(例如 DynamoDB)来执行此操作,但我认为在会话中传递它要容易得多。

Bill 100% 正确地按照他的建议修复了您的插槽值,流程应该可以正常工作。如果您想尝试一下并向我提供一些反馈,我在技能 MedTime 上做了一些相同的事情。我很高兴与您一起为 Alexa 培养技能。