【问题标题】:Date-time always giving 1200HRS日期时间总是给出 1200HRS
【发布时间】:2020-06-01 14:38:57
【问题描述】:

我正在开发一个聊天机器人并使用 Dialogflow 的 sys.date-time 实体。所以当我向机器人展示一些日期时,比如“今天”或“2 月 14 日”,我总是得到

"parameters": {
  "date-time": "2021-02-14T12:00:00Z"
}

我想要

"parameters": {
  "date-time": "2021-02-14T00:00:00Z"
}

现在我正在使用我的应用程序将 datetime 替换为 hours=0,但是,我也希望机器人提供

"parameters": {
  "date-time": "2021-02-14T08:00:00Z"
}

当我说“2 月 14 日上午 8 点”时(明确提到了小时),但应用程序将替换小时。所以必须从Dialogflow方面修复它。请问有什么解决办法吗?

【问题讨论】:

    标签: python dialogflow-es


    【解决方案1】:

    对于 Dialogflow 系统实体 @sys.date-time,这是按照 ISO-8601 格式的默认行为,您可以做些什么来解决此问题,而不是使用 @sys.date-time,请按照以下步骤操作:

    1. 使用两个单独的日期和时间参数@sys.date@sys.time
    2. @sys.date 为必填项,@sys.time 为可选项。
    3. @sys.time 设置一些适当的默认值作为00:00:00,这样当没有像2 月14 日那样给出时间时,它将需要时间作为默认值。
    4. 在您的应用中,您可以使用这两个值。

    示例意图

    希望对你有帮助!

    【讨论】:

    • 谢谢。无论如何我可以从“日期”参数中获取日期部分而不是全部,并设置“那个日期的日期”的默认值? (切片是唯一的选择吗?)我还会使用“周二上午 9 点到周五晚上 11 点之间”这样的短语,这样可以吗?
    • 我认为你必须在你的应用程序级别进行切片,尽管 dialogflow 以某种方式仅在其响应中给出日期和时间,但它会将整个日期时间对象作为 json 请求发送到 webhook,对于这个Between tuesday 9am and friday 11pm你可以做额外的参数ex。 date1 或 time1 根据您的逻辑。请接受答案并投票:)
    【解决方案2】:

    我能够通过正确分析收到的 value 为带有多个短语的 Dialogflow 的内置实体 @sys.date-time 解决了这个语义错误。

    当只提到一天/日期时(比如Feb 14 2020),这是我收到的数据:

    "parameters": {
      "date-time": "2020-02-14T12:00:00Z"
    }
    

    当我明确地(比如Feb 14 3pm)提到时间和日期时,这是收到的数据:

    "parameters": {
      "date-time": {
        "date_time": "2021-02-14T15:00:00Z"
      }
    }
    

    这里的区别在于,在第二种情况下,date-time 中呈现的是嵌套字典。

    区分这两者,我能够在我的应用程序上对 ISO-8601 格式进行切片并将 12:00:00 替换为 00:00:00,但如果我收到的是字典,我没有切片/替换它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2018-07-26
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多