首页 文章

Alexa技能具有用户确认槽值

提问于
浏览
0

我正在使用lambda函数中的Node.js构建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
}

1 回答

  • 3

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

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

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

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

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

    附:我有这个奇怪的问题 . 当Alexa要求确认一个槽值时,如果我故意连续两次下降,它会放弃并且什么都不做!虽然,Alexa几乎99%的时间都是现货 .

    P.P.S.事实证明,2次尝试是Alexa的一个严格限制 . 这应该在下一次迭代中得到改进 .

相关问题