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

时间:2019-05-29 04:37:46

标签: ibm-cloud ibm-watson watson-assistant

我正在使用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') ?>" } }

2 个答案:

答案 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())