我正在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”对象中。这确实很烦人,因为现在我需要在履行代码中考虑这两种情况。有人知道为什么会这样吗?这是我这边的错误吗?谢谢!
答案 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”
希望有帮助!