IBM Watson Assistant:用户输入时间范围验证
IBM Watson Assistant: user input time frame validation
我正在使用 IBM Watson Assistant 并尝试根据时间范围/跨度验证用户输入。我应该使用什么功能?
我使用 @sys-date.before(now())
方法来验证用户输入过去和现在之间的时间范围,但它现在对我有用。如果我输入 now 或 today 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 来评估和转换这些值。看来您已经在使用两者了。现在取决于逻辑...
有函数before和after,还有sameMoment或sameOrAfter 和更多用于比较。如果用户输入 today,则不会在 now 之前,因为两者指的是同一天和日期。您要查找的时间值是在当前时间戳之前还是在当前日期之前?您需要将时间与时间或日期与日期进行比较。您可以 reformat 截断时间部分的值并将其转换为日期。
您甚至可以使用 java.util.Date 功能进行更奇特的验证。
如果是过去的时刻,应该是这样:
now.after(yourInput)
我解决了!我所做的是(今天)在这里 @sys-date.before(today())
现在在这里 @sys-time.before(now())
我正在使用 IBM Watson Assistant 并尝试根据时间范围/跨度验证用户输入。我应该使用什么功能?
我使用 @sys-date.before(now())
方法来验证用户输入过去和现在之间的时间范围,但它现在对我有用。如果我输入 now 或 today 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 来评估和转换这些值。看来您已经在使用两者了。现在取决于逻辑...
有函数before和after,还有sameMoment或sameOrAfter 和更多用于比较。如果用户输入 today,则不会在 now 之前,因为两者指的是同一天和日期。您要查找的时间值是在当前时间戳之前还是在当前日期之前?您需要将时间与时间或日期与日期进行比较。您可以 reformat 截断时间部分的值并将其转换为日期。
您甚至可以使用 java.util.Date 功能进行更奇特的验证。
如果是过去的时刻,应该是这样:
now.after(yourInput)
我解决了!我所做的是(今天)在这里 @sys-date.before(today())
现在在这里 @sys-time.before(now())