有没有办法将 DialogFlow 'today' 提取为过去 24 小时?

Is there a way to extract DialogFlow 'today' as the past 24 hours?

我有这样的训练短语:

我知道对于@sys.date-time,我能够将"past 6hours" 和"past 24hours" 提取为具有startDate 和endDate 的日期时间段。但是,对于 "today",我收到一个单一的日期。 有没有办法(通过自定义实体等)使用 startDate: 和 endDate: <24hours earlier> 将 "today" 解析为一个时间段?

最终,我正在尝试创建一个聊天机器人,它需要在执行期间将时间段(开始日期和结束日期)传递给我的外部 API,因此我将无法使用单一日期。

sys.time-periodsys.date-period 实体不接受今天作为有效值。

所以你可以做的是创建一个 composite custom entity,假设名称为 myDateTimeRange 并且值为 @sys.date-time :日期时间。当此实体匹配时,将返回一个 json 对象,这就是这里的技巧。现在这个实体可以为您提供日期时间和时间范围的结果,例如,如果匹配的文本是今天,那么您将获得 myDateTimeRange 实体的值 { "dateTime": "2020- 06-02T12:00:00+05:30" } 并且如果匹配的文本的范围类似于 过去 6 小时 那么返回的值将类似于 { "dateTime": { "endDateTime": "2020-06-02T12:12:10+05:30", "startDateTime": "2020-06-02T06:12:10+05: 30" } }

所以现在您可以轻松地根据返回值创建一些逻辑,比如如果您只收到 dateTime,这意味着输入了某个日期(比如今天),您可以将其同时作为开始日期和结束日期,但是如果你也得到 endDateTime 和 startDateTime 子属性然后你知道你已经收到了一个范围。

请注意,您可以通过向其添加更多值来改进复合实体,例如 @sys.time-period:timePeriod@sys.date-period:datePeriod,等等