使用@ sys.date

时间:2018-11-20 13:44:39

标签: chatbot dialogflow

我有一个以日期为输入的意图。我使用@sys.date来识别日期,该日期能够识别许多日期格式,包括今天,11月2日,2天前
但是,令人惊讶的是,它无法将 2天前之类的短语映射到特定日期。
有什么办法可以使它工作?

days ago

days back

1 个答案:

答案 0 :(得分:3)

您不能添加到系统实体(以@sys开头的实体),但是可以使用自定义日期单位实体(包括“ days back”)和系统编号实体来创建自己的复合日期实体:< / p>

  1. 使用值date-unit和同义词days创建一个新的days back实体: 并保存实体
  2. 创建另一个名为Date的实体,取消选中Define synonyms的框,然后输入@sys.number @date-unit作为实体的值: enter image description here 并保存实体
  3. 接下来,将X days back培训示例添加到意图中,该意图应自动注释(如果未突出显示训练短语并手动对其进行注释): enter image description here 并保存意图。通过X days back查询来查询您的代理,以进行尝试。

从此有效负载接收的JSON取决于识别到@sys.date实体还是识别出您刚刚创建的@Date实体。您的Webhook将收到的17 days back query的JSON有效负载如下:

{
  "responseId": "1f67167c-8840-42ed-b3ed-420e2c2b1c43",
  "queryResult": {
    "queryText": "17 days back",
    "parameters": {
      "Date": "17 days"
    },
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            ""
          ]
        }
      }
    ],
    "intent": {
      "name": "projects/anotheragent-c5ea8/agent/intents/6743e47a-8cb5-458d-b573-626d1a392a46",
      "displayName": "Date"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "en"
  }
}

因此,除了@sys.date类型之外,您还需要在Webhook中添加一些逻辑来解析此日期类型。