如何在沃森对话中提取当前日期

How to extract current date in watson conversation

我需要在 Watson Conversation 对话模型中创建一个条件,如下所示:

if "today's date" < 2017 年 4 月 15 日做点什么。 否则做点别的。

我不想询问用户当前日期并保存它。

我试了很多方法都不行,我也试过输出日期(不行):

{
  "context": {
    "currdate": "@sys-date:today"
  },
  "output": {
    "text": {
      "values": [
        "here it is $currdate"
      ],
      "selection_policy": "sequential"
    }
  }
} 

我不确定,但在我尝试过的所有测试中,如果用户今天没有输入或什么的,Watson 不会识别,但是,我相信通过代码我们可以做一些事情。可能使用 IBM Watson 的人会正确回答您。

但是,据我所知:

尝试在条件中使用 now() 并将日期保存在上下文变量中。

return是:

yyyy-MM-dd HH:mm:ss

使用您的代码获取上下文变量并仅获取日期...在您可以设定条件后...

JSON 示例:

{
  "context": {
    "dateHour": "<? now() ?>"
  },
  "output": {
    "text": {
      "values": [
        "Now is $dateHour."
      ],
      "selection_policy": "sequential"
    }
  }
}

我正在研究有关 Watson 中系统实体的所有文档,如果用户不请求,我看不到任何关于提取数据的信息,但是,我怎么说,可能有人在 IBM 工作会回答,我只是想帮忙你了解我的基本知识。

查看有关此实体的文档 @sys-date now() here

她是对的,您需要应用程序代码来获取当前日期和时间并将其作为上下文传递。到目前为止,我们所有的系统实体和努力都围绕着理解用户所说的内容,所以如果他们今天不说,我们就不会知道这很重要。 从理论上讲,我认为您可以让您的应用程序在用户的句子末尾通过 'today' 或其他内容,然后 运行 它通过处理管道并为您提供今天的日期,但可能是一个奇怪的用户经验。

如果您使用 now(),那么您可以重新格式化它以使其正常工作。

我将要比较的日期存储在 $date 中,在你的情况下 "date": "04-15-2017",然后使用以下内容:

要查看日期是否在未来,请使用: now().reformatDateTime('dd-MM-yyyy').before($date)

如果过去: now().reformatDateTime('dd-MM-yyyy').after($date)

您可以阅读 reformatDateTime here. It uses standard JAVA date string formatting rules which you can find here