我正在将 集成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'],
},
Run Code Online (Sandbox Code Playgroud)
};
当我在 dialogflow 控制台中测试 FAQ 时它可以工作,但是当我尝试对 执行相同操作时Dialoglflow Nodejs SDK,knowledgeAnswers来自 dialogflow 响应的对象为空。
任何帮助表示赞赏。谢谢
发生这种情况是因为knowledgeBaseNames属性值不正确。当您创建知识库时,它会返回以下响应:
{
"name": "projects/project-id/knowledgeBases/NDA4MTM4NzE2MjMwNDUxMjAwMA",
"displayName": "knowledge-base-display-name"
}
Run Code Online (Sandbox Code Playgroud)
knowledgeBaseNames属性接受 的数组name。它不同于displayName.
如果您已创建 Konwledgebase 表单 Dialogflow 仪表板,您将不会在仪表板中看到此详细信息。但是,Dialogflow SDK 提供 API 来获取代理的知识库列表。Node js V2Beta1 SDK 有一个方法projects.knowledgeBases.list,当给定项目名称时,该方法将列出所有知识库及其显示名称和名称。您可以将名称列表发送到检测意图请求中。
如果您的用例仅需要知道知识库的 ID,那么您可以从 Dialogflow 控制台的“试用”部分获取。输入您在知识库中添加的问题,然后单击diagnostic info。它将显示 JSON 格式的对话流响应。寻找knowledgeAnswers对象。知识库ID是属性的一部分,source如下所述:
"knowledgeAnswers": {
"answers": [{
"source": "projects/project-id/knowledgeBases/knowledgebase-id/documents/document-id"
}]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |