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

时间:2019-01-10 07:23:45

标签: dialogflow

我正在将Dialogflow Nodejs sdk集成到我的应用程序中,以借助以下文档nodejs-dialoglowflow-detect-knowledgebase-intent来检测知识库的意图。

以下是我的查询请求

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时,它可以工作,但是当我尝试对Dialoglflow Nodejs SDK执行此操作时,dialogflow响应中的knowledgeAnswers对象为空。

感谢您的帮助。谢谢

1 个答案:

答案 0 :(得分:1)

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

{
  "name": "projects/project-id/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA",
  "displayName": "knowledge-base-display-name"
}

knowledgeBaseNames属性接受name的数组。它不同于displayName

如果您创建了Konwledgebase表单Dialogflow仪表板,则在该仪表板中不会看到此详细信息。但是,Dialogflow SDK提供了API以获取代理的知识库列表。 Node js V2Beta1 SDK具有方法projects.knowledgeBases.list,该方法在给定项目名称时将列出所有知识库以及它们的显示名称和名称。您可以将名称列表发送到检测意图请求中。

如果您的用例仅需要知道知识库的ID,则可以从Dialogflow控制台的“试用”部分中获取信息。输入您在知识库中添加的问题,然后单击diagnostic info。它将以JSON显示dialogflow响应。查找knowledgeAnswers对象。知识库ID是source属性的一部分,如下所述:

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