Dialogflow es 为什么Dialogflow nodejs sdk;使用知识库“检测意图”;方法响应为null?(V2Beta)

Dialogflow es 为什么Dialogflow nodejs sdk;使用知识库“检测意图”;方法响应为null?(V2Beta),dialogflow-es,Dialogflow Es,在以下文档的帮助下,我正在将Dialogflow Nodejs sdk集成到我的应用程序中,以检测知识库意图 下面是我的查询请求 const request = { session: sessionPath, queryInput: { text: { // The query to send to the dialogflow agent text: message, // The language used by the client (en-US) la

在以下文档的帮助下,我正在将Dialogflow Nodejs sdk集成到我的应用程序中,以检测知识库意图

下面是我的查询请求

const request = {
session: sessionPath,
queryInput: {
  text: {
    // The query to send to the dialogflow agent
    text: message,
    // The language used by the client (en-US)
    languageCode: 'en-US',
  },
},
queryParams: {
  knowledgeBaseNames: ['projects/my-project-id/knowledgeBases/my-knowledge-base-name'],
},
})

当我在dialogflow控制台中测试FAQ时,它可以工作,但当我尝试对dialogflow Nodejs SDK执行相同操作时,dialogflow响应中的
knowledgeAnswers
对象为空


感谢您的帮助。谢谢

发生这种情况是因为
knowledgeBaseNames
属性中的值不正确。 创建知识库时,将返回以下响应:

{
  "name": "projects/project-id/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA",
  "displayName": "knowledge-base-display-name"
}
knowledgeBaseNames
属性接受
name
的数组。它不同于
displayName

如果您已经创建了Konwledgebase表单Dialogflow仪表板,您将不会在仪表板中看到此详细信息。然而,Dialogflow SDK提供API来获取代理的知识库列表。NodeJSV2beta1SDK有一个方法,当给定项目名称时,该方法将列出所有知识库及其显示名称和名称。您可以将名称列表发送到detect intent请求中

如果您的用例只需要知道知识库的ID,那么您可以从Dialogflow控制台的“试用”部分获得If。键入您在知识库中添加的问题,然后单击诊断信息。它将以JSON显示dialogflow响应。查找
knowledgeAnswers
对象。knowledgebase ID是
属性的一部分,如下所述:

"knowledgeAnswers": {
            "answers": [{
                "source": "projects/project-id/knowledgeBases/knowledgebase-id/documents/document-id"
            }]
}

答案并不清楚,它指导OP实际做什么。我有一个类似的问题,我使用了谷歌在控制台内测试时共享的诊断信息中的“name”值,但它仍然无法通过SDK工作。对我来说,问题是我使用的是/v2/API版本,而不是/v2beta1/版本