Alexa技能有用户确认插槽值
问题描述:
我在lambda函数中使用Node.js构建Alexa技能,并且找不到任何有关确认插槽中数据的最佳方式的教程。我知道所有插槽现在都有数据,但希望Alexa能够读回请求并在继续之前从用户那里得到确认。什么是最好的&正确的方法来做到这一点?Alexa技能有用户确认插槽值
起初我以为使用elicitSlot发射,但然后我需要一个新的插槽来做到这一点,它看起来非常黑客。
例如:
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
}
答
对于整个意向确认,检查here。如需确认时间段,请查询here。
此外,为您的后续问题,
可以确认的技能和插槽进行微调,例如,如果一个插槽是像一个名字和ALEXA知道100%,我说的是什么名字可以它跳过确认?
简短的回答 - 当然你可以,如果你不保持对话。但是,依靠这一点强烈不鼓励。
为了保持一个对话框,你必须监控的意图请求dialogState
属性,只要它不与属性directives
为[{'type': 'Dialog.Delegate'}]
状态COMPLETED
发送响应,以保持它的流动。您可以更好地控制对话框 - 请参阅this doc。此外,强烈建议您在这些回复中省略outputSpeech
和reprompt
,否则Alexa会感到不安。一旦对话状态为COMPLETED
,您将获得confirmationStatus
(对于意图和插槽) - 成功(?)/拒绝/无。如果确认不成功。我看到多个匹配作为回复发送。但是,如果成功,则只返回匹配的插槽值。
P.S.我有这个奇怪的问题。当Alexa要求确认一个插槽值时,如果我故意连续两次拒绝,它会放弃并且什么也不做!虽然几乎99%的时间都是Alexa发布的。
P.P.S. 2次尝试是来自Alexa的严格限制。这应该在下一次迭代中得到改进。
对于whoie意向确认,请选中[此处](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#意向确认)。只有确认插槽时,请选中[此处](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/ask-define-the-vui-with-gui#enable-slot-确认) – Sidmeister
谢谢Sidmeister,你可以把你的评论变成答案,我可以批准它。例如,如果其中一个插槽类似于名称,alexa知道100%我称之为可以跳过确认的名称,那么技能和插槽的确认也可以进行微调。还是100%的时间确认一次?我想要确认一个灰色区域。 –