如果我错过话语提示,如何使Alexa提示我其他信息?

时间:2018-10-18 09:36:23

标签: alexa alexa-skills-kit alexa-slot

如果我在发话中遗漏了一个参数(例如,城市名称),该如何让Alexa提示我(例如“你想再问哪个城市的天气?”)?

我正在掌握一种技巧,可以告诉我城市的天气。我有话语,它可以正常工作,但是当我没有定义城市名称时(city_name也是我在意图中的唯一位置),那么它将直接停止意图并给出消息“ Alexa不能帮助您”。 / p>

在我的广告位(城市名称)中,我甚至选中了“实现这个意图是否需要此广告位?”并且填充了Alexa提示和用户话语,但仍然无法正常工作。

2 个答案:

答案 0 :(得分:0)

使用alexa dialogs。对话框通过提示用户错过的插槽值来自动填充所有必需的插槽。对话框具有3种状态:STARTED,IN_PROGRESS,COMPLETED。仅当您填写了所有必需的插槽值时,对话框状态才会完成。观看教程here

答案 1 :(得分:0)

您可以使用不同的Dialog interface指令向用户询问您需要的信息,以完成他们的请求。只要有用户与您的技能互动,您就会在您的后端收到一个请求,其中包含映射的意图和已填充(或未填充)位置。即使您使用对话框模型并为每个插槽填充了所有语音,您也将必须使用适当的指令进行响应才能继续。

您可以通过三种方式处理对话框模型。

1。委托给Alexa
 您可以使用Dialog.Delegate指令让Alexa确定对话框中的下一步,并使用在对话框模型中定义的提示来得出插槽值,确认插槽值或确认整个意图。

如果您有空缺的插槽,只需返回一个delegate指令,Alexa将使用交互模型中定义的提示来填充该插槽。只要dialogState属性不是COMPLETE,您就可以继续委派给Alexa。

对话完成后,传入的IntentRequest的{​​{1}}为dialogState。现在,所有必需的信息都可以在意图的插槽值中找到。

注意:使用COMPLETED指令,您无法从代码中发送Dialog.DelegateoutputSpeech。而是将使用在交互模型中定义的那些。并且reprompt状态只有在您使用COMPLETED时才可能。

2。控制对话框
在每次对话中,您都可以控制并询问您需要什么,而不必将其委托给Alexa。这特别有用,特别是当您希望按特定顺序填充广告位或要随身确认广告位或广告位的“ mandate” 属性本质上是动态的等等时。

您可以使用Dialog.Delegate指令来请求特定的广告位,Dialog.ElicitSlot来确定特定的广告位,Dialog.ConfirmSlot来确定意图本身。

3。两者结合
收到意向请求后,您可以根据需要返回Dialog.ConfirmIntent指令或任何其他指令。即使您委托,在任何时候都可以接管对话框,而不必继续委托给Alexa。

有关其他指令here

的更多信息

互动示例:
1.使用delegate指令here
2.使用delegate指令here
3.使用ElicitSlot指令here
4.使用ConfirmSlot指令here