意图:
IntentA
这是场景:
我尝试了不同的方法来返回原始意图,但出现此错误: INVALID_RESPONSE应该在“ Dialog.ElicitSlot”指令中为slotToElicit指定正在处理的意图的有效插槽
RepeatIntent中的代码:
handlerInput.requestEnvelope.request.intent = attributes.temp_IntentA;
return custom.IntentAHandler.handle(handlerInput);
我没有问题可以重复上一个语音,就像我输出带有结果的语音一样。但是在对话过程中,如何引发? 有办法吗?
答案 0 :(得分:1)
在与Dialog Model进行多轮对话期间,意图保持不变,在插槽被填充时或在意图/插槽确认期间。现在,当用户说出“重复” 时,Alexa会将其映射到RepeatIntent
(除非您出于相同的意图将“重复” 当作发话)。现在,您想要的是从重复意图的处理程序中引出另一个意图(原始意图)的插槽。不幸的是,到目前为止,您无法执行此操作。只能通过Dialog.ElicitSlot
指令发送相同类型的更新意图。
请注意,返回Dialog指令时不能更改意图, 因此,意图名称和插槽组必须匹配发送给您的意图 技能。
如果您尝试这样做,将会收到一条错误消息。
解决方案是
IntentA
到目前为止的状态和进度。RepeatIntent
或其他任何意图被调用并发送响应)IntentA
。您可以将状态保存在sessionAttributes
中,然后重新触发IntentA
,您必须提供一些可以触发状态的语音。就您而言,
"I would like to depart from {city}"
or just (if it doesn't break your VUI)
"{city}"
通过这种方式,用户可以在对话过程中切换上下文并轻松恢复。重新触发意图后,您可以使用任何Dialog模型指令。
答案 1 :(得分:0)
我一直在寻找这个东西,在寻找了几个小时之后,我找不到我真正需要的东西。阅读了几篇文章和文章后,我得到了我所需要的。我通过使用请求和响应拦截器将点点滴滴连接在一起,以实现Amazon.RepeatIntent。我为此写了一篇博客文章。您可以查看帖子here。