IBM Watson Assistant:用户输入时间范围验证

IBM Watson Assistant: user input time frame validation

我正在使用 IBM Watson Assistant 并尝试根据时间范围/跨度验证用户输入。我应该使用什么功能?

我使用 @sys-date.before(now()) 方法来验证用户输入过去和现在之间的时间范围,但它现在对我有用。如果我输入 nowtoday Watson Assistant 仍然认为这是过去...

@sys-date.before(now()):

Looks "like you're trying to make a reservation in the past. Try again." true $day it is

我希望如果用户输入 现在今天 进行预订,并且如果用户输入过去的时间作为

"like you're trying to make a reservation in the past. Try again."

有问题的代码片段如下所示:

{ "context": 
    { "day": "@sys-date" } }
{ "context": 
    { "time": "<? @sys-time.reformatDateTime('h:mm a') ?>" } }

借助 IBM Watson Assistant,您可以使用 systen entities @sys-date and @sys-time to turn user input into data / time values. And you can use expression language functions for date and time 来评估和转换这些值。看来您已经在使用两者了。现在取决于逻辑...

有函数beforeafter,还有sameMomentsameOrAfter 和更多用于比较。如果用户输入 today,则不会在 now 之前,因为两者指的是同一天和日期。您要查找的时间值是在当前时间戳之前还是在当前日期之前?您需要将时间与时间或日期与日期进行比较。您可以 reformat 截断时间部分的值并将其转换为日期。

您甚至可以使用 java.util.Date 功能进行更奇特的验证。

如果是过去的时刻,应该是这样:

now.after(yourInput)

我解决了!我所做的是(今天)在这里 @sys-date.before(today()) 现在在这里 @sys-time.before(now())