首页 文章

如果我在我的话语中错过了一个参数,如何让Alexa提示我提供更多信息?

提问于
浏览
2

How can I make Alexa prompt me (e.g. “You want weather for which city again?”) if I missed a parameter (slot i.e. city_name) in my utterance?

我正在制作一项技巧,告诉我一个城市的天气 . 我有话语并且工作正常,但是当我没有定义城市名称(city_name也是我意图中唯一的插槽)时,它会直接停止意图并给出我的信息“Alexa无法帮助你” .

在我的插槽(city_name)中,我甚至检查过“这个插槽是否需要满足意图?”并填写Alexa提示和用户话语,但仍然无法正常工作 .

2 回答

  • 0

    使用alexa dialogs . Dialog通过向用户重新提供他错过的插槽值来自动填充所有必需的插槽 . 对话框有3个状态,STARTED,IN_PROGRESS,COMPLETED . 只有填写了所有必需的插槽值,才能完成对话状态 . 观看教程here

  • 0

    您可以使用不同的Dialog interface指令向用户询问完成其请求所需的信息 . 当用户与您的技能进行交互时,您将使用映射的意图和填充(或未填充)的插槽 . 即使您使用对话框模型并填写了每个插槽的所有话语,您也必须使用适当的指令进行回复才能继续 .

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

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

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

    对话完成后,传入 IntentRequestdialogStateCOMPLETED . 所有必需的信息现在都可以在intent的插槽值中找到 .

    Note: 使用 Dialog.Delegate 指令,您无法从代码中发送 outputSpeechreprompt . 而是将使用在交互模型中定义的那些 . 只有在使用 Dialog.Delegate 时才能使用 COMPLETED 状态 .

    2. Control the Dialog
    在每次谈话中,您都可以控制并询问您需要什么,而不是将其委托给Alexa . 这非常有用,尤其是当您希望插槽填充特定订单或者您想要确定插槽时,或者插槽的"mandate"属性是动态的等等 .

    您可以使用 Dialog.ElicitSlot 指令来请求特定的插槽, Dialog.ConfirmSlot 来确认特定的插槽,使用 Dialog.ConfirmIntent 来确认意图本身 .

    3. Combining both
    当您收到意向请求时,您可以根据需要返回 delegate 指令或任何其他指令 . 即使您委托,您也可以随时接管对话而不是继续委托给Alexa .

    更多关于不同的指令here

    Sample Interactions:
    1.使用 delegate 指令here
    2.使用 ElicitSlot 指令here
    3.使用 ConfirmSlot 指令here
    4.使用 ConfirmIntent 指令here

相关问题