dialogflow sys.date-time参数格式问题

时间:2019-11-26 19:51:49

标签: dialogflow actions-on-google dialogflow-fulfillment

我正在Dialogflow上制作一个应用,需要从用户提取date-time信息。因此,我故意在@ sys.date-time实体中指定了一个称为“ date-time”的必需参数。但是,当我尝试在履行代码中提取此参数时,我发现每次提取该参数时结构都不相同。例如,当我在聊天机器人中输入12:30am时,返回的API json响应包含以下内容:

"parameters": {
      "date-time": "2019-11-27T00:30:00-08:00",
      "log": "5"
    },

所以我可以通过date-time直接读取parameters['date-time']参数值

但是,如果我在聊天机器人中键入“昨天下午2点”,则返回的参数结构为:

"parameters": {
      "date-time": {
        "date_time": "2019-11-25T14:00:00-08:00"
      },
      "log": "log"
    },

请注意,“ date-time”参数包装在额外的“ date-time”对象中。这确实很烦人,因为现在我需要在履行代码中考虑这两种情况。有人知道为什么会这样吗?这是我这边的错误吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您现在可能已经找到了答案,但是通过Google文档here,我发现使用@ sys.date-time实体时必须考虑多种情​​况。因此,您的一端没有错。

在指定日期和时间时,会使用一个额外的“ date_time”,而如果在一段时间内,则还必须在原始“ date_time”对象内查找“ startDate”和“ endDate” 。

通过查看该文档中的示例,我概述了以下一些情况。

特定时间(例如12:30 am)或特定日期(例如12月12日)=单个date_time对象

时间段(日期或时间,例如4月或早晨)= date_time对象中的“ startDate”和“ endDate”条目

特定日期+特定时间(例如昨天的下午2点)= date_time对象中的“ date_time”条目

日期+时间段(例如昨天下午)= date_time对象中的“ startDateTime”和“ endDateTime”

希望有帮助!