Ibm watson 如何从用户输入中提取传递的原始日期值

Ibm watson 如何从用户输入中提取传递的原始日期值,ibm-watson,watson-conversation,Ibm Watson,Watson Conversation,背景: Watson对话机器人有一个节点,由用户的三个输入实体触发,这很好,但我希望机器人的回复是正确的 “检查你明天是否有课。给我一点时间” 然后,在后台有一个查询,用于生成稍后回复给用户的答案 strong word明天是一个@sys date实体,但我希望它回复用户所说的内容,而不是日期,因为机器人可以检查两周、两个月等所有有效的日期格式,如果我可以使用用户的原始文本,回复看起来会更好 当我让它工作时,这种来源检索也将用于其他实体。在这种情况下,您可以使用上下文变量,如果您想要获取特定数据

背景: Watson对话机器人有一个节点,由用户的三个输入实体触发,这很好,但我希望机器人的回复是正确的

“检查你明天是否有课。给我一点时间”

然后,在后台有一个查询,用于生成稍后回复给用户的答案

strong word明天是一个@sys date实体,但我希望它回复用户所说的内容,而不是日期,因为机器人可以检查两周、两个月等所有有效的日期格式,如果我可以使用用户的原始文本,回复看起来会更好


当我让它工作时,这种来源检索也将用于其他实体。

在这种情况下,您可以使用
上下文变量,如果您想要获取特定数据,您可以使用正则表达式来提取用户输入:

所有用户输入示例

"date": "<? input.text?>"
文档示例 :

我的问题是,文本输入中有3个实体,而过滤它以仅提取分配给@sys date实体的输入部分是不可能的。如果我更改触发器,整个节点将毫无用处,因为用户可以通过发送简单的输入遍历对话框树并获得相同的结果。此节点的目的是,用户只需一次输入即可触发正确的输出,而无需走3步进入另一个对话框。您可以编辑和添加对话的一部分吗?因为这样我才能更好地理解。我认为在这种情况下,我们可以用实体来解决。。但我需要看清楚输入:我这周有讲座吗?给出:好的,检查你是否有讲座2017-01-22。请给我一分钟。想要的结果:好的,检查你这周是否有讲座。请给我一分钟。Watson必须有后端逻辑分析输入,以便存储sys.date的原始值,但问题是检索此原始值并将其用作我回复用户时的输出
 "date": "<?@sys-date.literal?>"
        {
  "context": {
    "date": "<?@sys-date.literal?>"
  },
  "output": {
    "text": {
      "values": [
        "Checking if you have a lecture $date. Give me a moment."
      ],
      "selection_policy": "sequential"
    }
  }
}