在dialogflow的某些意图中,我想评估一些参数(必需的),然后,如果它们不符合某些条件,请再次请求它们。 更具体地说,我问用户事件发生的日期,以防他只是向我提供例如与参数关联的@ sys.date-period实体“ june”将其转换为“ 01/06/2019 to 30/6/2019”,该日期尚未过去,因此无法接受。因此,我想检查日期是否有效,如果无效,请再次要求用户提供该日期(删除先前的参数和“ reprompt”)。
日期可以有多种形式,可以由开始日期和结束日期定义月份,年份,时期,因此google的自动实体非常有用。在开始时,我尝试创建自己的实体(例如月份,季节),但是由于必须针对项目中的多个不同意图执行此过程,因此我不想最终仅出于日期检索而使用100多个意图。出于相同的原因,我想通过我的Webhook而不是通过日期无效的情况下可以触发的意图来执行此操作。 因此,我想对用户说“您的日期无效,请重试。”然后等待一个日期,该日期将被评估,并且根据评估结果,该过程将继续进行或再次询问有效参数。
我阅读了有关此内容的信息,但没有发现任何迹象表明可以做到这一点(如果有人知道方法,请与我分享)。所以现在我试图触发一个事件(eventToTrigger),该事件是我在此意图中输入的(需要日期),但是没有成功。
var bool1=isDateInValid(startDate);
var bool2=isDateInValid(endDate);
if (bool1 && bool2) {
agent.add("This date is invalid: "+startDate+ " to "+endDate+". Please retry");
return {
"followupEventInput": {
"name": "eventToTrigger"
}
};
}
它会显示“此日期无效:2019年6月1日至2019年6月30日。请重试”,但没有其他提示。 除了上述消息外,我还想问用户“给我一个时间段”,这是机器人在输入特定意图时在没有用户提供日期的情况下的响应,这是我上面所说的。 我怎样才能做到这一点? 预先感谢!
编辑:
我执行了@ sid8491给我的建议。我打算使用输入上下文rongDate,并将以下内容添加到实现代码中:
if (bool1 && bool2) {
agent.add("This date is invalid: "+startDate+ " to "+endDate+". Please retry");
const context=agent.session+"/contexts/wrongDate";
console.log("Follow up intent with context: "+context);
return {
"outputContexts": [
{
"name": context,
"lifespanCount": 1
}
]
};
}
我还通过intentMap将这个新的意图与相同的功能相关联。当我(以用户身份)给出无效日期(例如“可能”)时,机器人会回答“此日期无效:2019-05-01至2019-05-31。请重试”。之后,我输入“ may”或“ may 2018”,然后机器人进入后备意图,就好像我没有发送输出上下文(这与事件的问题类似,我无法确定消息是否只是会被忽略,或者如果我没有以正确的形式/方式发送它。
答案 0 :(得分:2)
在日期错误的情况下,您无需调用事件,而只需返回一条带有错误提示以及附加上下文的消息即可。
这是您需要做的:
This
date is invalid: "+startDate+ " to "+endDate+". Please retry
wrong-date
制作
另一种意图将处理日期输入并设置输入上下文
到wrong-date
#output-context.parameter_name
(将输出上下文替换为
错误的日期和parameter_name以及您的参数的确切名称)希望有帮助。