0

我有一个将日期作为输入的意图。我曾经@sys.date识别日期,它能够识别多种日期格式,包括今天、11 月 2 日、2 天前
但是,令人惊讶的是,它无法将2 天之类的短语映射回特定日期。
有什么办法让它工作吗?

几天前

几天前

4

1 回答 1

3

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

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

您从此有效负载收到的 JSON 将根据@sys.date实体是否被识别或@Date您刚刚创建的实体是否被识别而有所不同。您的 webhook 将接收的 JSON 有效负载17 days back query如下所示:

{
  "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"
  }
}

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

于 2018-11-20T15:14:11.967 回答