【问题标题】:Alexa skill have user confirm slot valuesAlexa 技能让用户确认插槽值
【发布时间】:2017-09-14 04:55:22
【问题描述】:

我正在使用 Node.js 在 lambda 函数中构建 Alexa 技能,但找不到任何有关确认插槽中数据的最佳方法的教程。我的意思是所有插槽现在都有数据,但希望 Alexa 读回请求并在继续之前得到用户的确认。最好和正确的方法是什么?

一开始我想使用带有 :elicitSlot 的发射器,但后来我需要一个新的插槽来执行此操作,它看起来很 hackish。

例如:

if(all slots have a valid value){
this.emit(':elicitSlot','confirm',"You're request is .... with data .... is this correct?");
}
if(user confirmed data is valid){
// do something
}else{
// the data was not correct get the right data
}

【问题讨论】:

  • 对于whoie意图确认,请查看here。仅限插槽确认,请查看here
  • 谢谢 Sidmeister,您能否将您的评论转化为答案,以便我批准。也可以对技能和插槽的确认进行微调,例如,如果其中一个插槽类似于名称并且 alexa 100% 知道我说的名称,它可以跳过确认。或者确认是 100% 的时间?我想要一个灰色区域来确认。

标签: node.js aws-lambda alexa alexa-skills-kit alexa-skill


【解决方案1】:

对于整个意图确认,请查看here。仅限插槽确认,请查看here

另外,对于您的后续问题,

是否可以微调技能和插槽的确认,例如,如果其中一个插槽类似于名称并且 alexa 100% 知道我说的名称,它可以跳过确认吗?

简短的回答 - 如果您不维护对话框,当然可以。但是,强烈建议不要依赖它。

为了维护对话,您必须监视意图请求的dialogState 属性,并且只要它不在状态COMPLETED 中,就将属性directives 的响应发送为[{'type': 'Dialog.Delegate'}] 以保持其流畅。您可以更好地控制对话框 - 请咨询this doc。此外,强烈建议您在这些回复中省略 outputSpeechreprompt,否则 Alexa 会生气。一旦对话状态为COMPLETED,您将获得confirmationStatus(对于 Intent 和 slot)- SUCCESS(?)/DENIED/NONE。如果确认不成功。我已经看到多个匹配作为回复发送。但是,成功时,只返回匹配的槽值。

附:我遇到了这个奇怪的问题。当Alexa要求确认一个槽值时,如果我故意连续两次拒绝,它就放弃了,什么都不做!不过,几乎 99% 的时间 Alexa 都在现场。

附言原来 2 次尝试是 Alexa 的一个硬限制。这应该会在下一次迭代中得到改进。

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2018-03-31
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多