【问题标题】:Is there a way to extract DialogFlow 'today' as the past 24 hours?有没有办法将 DialogFlow '今天'提取为过去 24 小时?
【发布时间】:2020-06-01 06:20:31
【问题描述】:

我有如下训练短语:

  • 过去 24 小时内有多少客户访问了我的网站?
  • 过去 6 小时内访问了多少人?
  • 今天有多少客户访问了我的网站?

我了解对于@sys.date-time,我可以提取“过去 6 小时”和“过去 24 小时”作为带有 startDate 和 endDate 的日期时间段。但是,对于“今天”,我收到一个单数日期。 有没有办法(通过自定义实体等)使用 startDate: 和 endDate: 将“今天”解析为时间段?

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

【问题讨论】:

    标签: dialogflow-es dialogflow-es-fulfillment


    【解决方案1】:

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

    所以你可以做的是创建一个composite custom entity,假设名称为myDateTimeRange,值为@sys.date-time:dateTime。当此实体匹配时,将返回一个 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、等等

    【讨论】:

    • 谢谢!关于通过添加更多值来改进我的复合实体,您能否在我的示例中给我一个示例来说明如何做到这一点?我尝试添加值 sys.time-period:timePeriod 和 sys.date-period:datePeriod 但无论如何查询都会与日期时间匹配。添加这些值究竟对改进复合实体有何帮助?
    • 没有具体内容。我只是补充说,给你一个探索的方向,以防你的要求没有被 dateTime 满足。
    猜你喜欢
    • 2019-10-28
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2019-12-12
    • 2012-07-05
    • 1970-01-01
    相关资源
    最近更新 更多