在使用Dialogflow REST API V2批量更新培训短语的同时,自动为其添加注释

时间:2019-05-02 21:53:31

标签: node.js dialogflow

我正在将dialogflow REST API V2用于batchUpdate的意图,即,使用Node.js将更多的训练短语发布到我的dialogflow代理中的每个意图。我将这些训练用语保存在.txt文件中(用“ \ n”字符分隔的短语),在调用batchUpdate方法之前,我的node.js脚本将其解析为training phrase对象。我目前的代理人有一堆我创建的自定义实体。我使用entity List方法来抓住我定义的所有实体,并手动获取代码以检查我的训练短语中是否存在任何这些实体类型,以进行相应的解析。

但是,我的问题是,我希望dialogflow在此过程中自动检测一些系统定义的实体(例如@ sys.given-name,@ sys.date等)。在我的脚本“嗅探”这些实体类型并将训练短语分解为相应的parts时,捕获自定义实体似乎没有任何问题。我希望dialogflow可以对系统定义的实体进行类似的注释,而无需我再次手动将训练短语分解为多个部分。

我看到part对象具有一个我不完全理解的名为“ userDefined”参数的参数。切换此参数没有改变我的训练短语对象中的任何内容。我还可以看到TrainingPhrase对象带有一个“类型”参数,我也尝试过使用它。我不清楚TYPE_UNSPECIFIED是什么意思,为什么EXAMPLE是唯一的其他选择,所以不允许在训练短语中包含@前缀的实体类型名称。

在训练短语对象中是否可能没有设置参数,以允许dialogflow自动检测这些@前缀的实体类型名称?

这是我在请求正文中使用的intentBatch对象。

{
  "intentBatchInline": {
    "intents": [
      {
        "displayName": "cheese",
        "name": " projects/copy-c6f8c/agent/intents/07207104-75f1-4ed0-b97a-8d6931f9049e",
        "trainingPhrases": [
          {
            "type": "TYPE_UNSPECIFIED",
            "parts": [
              {
                "text": "Here's my Indian phone number: 5432543243",
                "userDefined": false
              }
            ]
          }
        ]
      }
    ],
  }
}

1 个答案:

答案 0 :(得分:0)

更新:我在他们的文档中发现API无法像Dialogflow控制台一样自动注释短语。如果有人有任何其他建议或NLP库可以帮助我用一些预定义的实体注释短语,请告诉我。

[Link](https://cloud.google.com/dialogflow-enterprise/docs/reference/rest/v2/projects.agent.intents#TrainingPhrase)