Dialogflow - 如果在调用上下文时输入无效,如何重新提示最终用户?

Dialogflow - How to re-prompt an end-user if the input is not valid whilst calling a context?

内联编辑器(Node.js)

我正在构建一个聊天机器人,该机器人要求最终用户提供 his/her 可用日期(格式:2020 年 12 月 12 日)。如果最终用户输入的日期早于今天的日期,我希望我的机器人给出提示,而不是已经在我的上下文中的提示。

目前,我的代码再次触发上下文,要求用户提供可用日期。在特定意图中定义了 'Date1' 参数,它是 'required' 并且带有一个提示。

如果 'IF' 语句满足,我应该如何提供自定义重新提示,然后将输入存储在相同的参数中,即 Date1?

代码片段:

if(Date4<currentDate){ //Date4 is the availability date //If the Date4 is less than currentDate then the Date intent will be recalled with the prompt mentioned at the bottom.
    agent.context.set({
        'name': 'Date123-followup',
        'lifespan': 1
        
    });
    agent.add('Please provide a valid Date, which is after today.');//the custom prompt
}

如果需要,请询问更多详细信息。

对话流程:

机器人:请提供您的可用日期?

用户:2019 年 1 月 1 日

'Current Response which is in the prompt of my intent'

机器人:请提供您的可用日期?

'Required Response: This is what the bot should ask'

机器人:请提供有效日期,即今天之后。

您可以对代理对象使用 setFollowupEvent 方法。这基本上会触发您只需要在意图中添加此事件的任何意图。

agent.setFollowupEvent({ name: 'deliveryEvent', parameters: {} }); // parameters are any data that you want to pass to next conversation.

您可以使用事件选项在任何意图中设置事件:这样您就可以从任何地方触发此意图,只需使用参数处理上下文即可。