我正在使用IBM Watson Assistant,并尝试根据时间范围/跨度验证用户输入。我应该使用什么功能?
我曾经使用@sys-date.before(now())
方法来验证用户输入的过去到现在之间的时间范围,但是现在对我来说确实有效。如果我输入现在或今天,Watson Assistant仍然认为这是过去...
@sys-date.before(now())
:
看起来“就像您过去尝试进行预订一样。请重试。” 真实的
$day it is
我希望用户输入现在或今天使预订生效,并且用户输入过去的响应时间为
“就像您过去尝试进行预订一样。请重试。”
有问题的代码段如下所示:
{ "context":
{ "day": "@sys-date" } }
{ "context":
{ "time": "<? @sys-time.reformatDateTime('h:mm a') ?>" } }
答案 0 :(得分:0)
使用IBM Watson Assistant,您可以使用systen entities @sys-date and @sys-time将用户输入转换为数据/时间值。您可以使用expression language functions for date and time来评估和转换这些值。看来您已经同时使用了两者。现在由逻辑决定了……
在之前和之后,还有 sameMoment 或 sameOrAfter 等功能进行比较。如果用户输入今天,则该日期不早于立即,因为两者都指向同一日期和日期。您是在寻找时间值在当前时间戳之前还是在当前日期之前?您需要比较时间与时间或日期与日期。您可以reformat截取时间部分的值并将其转换为日期。
要进行更精美的验证,您甚至可以使用java.util.Date功能。
如果已经过去,那就应该是这样:
now.after(yourInput)
答案 1 :(得分:0)
我解决了!我所做的就是(今天)在这里@sys-date.before(today())
,现在在这里@sys-time.before(now())