使用 Dialogflow Python API 在 Dialogflow 代理中创建知识库问题

Issue Creating a Knowledge Base inside a Dialogflow agent using Dialogflow Python API

无法使用 python 对话流客户端在对话流中创建知识库。

在 IAM 服务帐户中获得对话流的管理员权限。

我已将 Dialogflow 管理员角色授予我正在使用的客户端邮件。

我使用了为服务帐户生成的 json 密钥并将其导出为环境变量

这是我使用的代码:

import dialogflow_v2beta1 as dialogflow

    client = dialogflow.KnowledgeBasesClient()
    project_path = client.project_path(project_id)

    knowledge_base = dialogflow.types.KnowledgeBase(
    display_name=display_name)
    response = client.create_knowledge_base(project_path, knowledge_base)

我能够 create/delete/list 已创建知识库中的文档,但创建知识库会引发此错误

error: google.api_core.exceptions.PermissionDenied: 403 IAM permission 'dialogflow.knowledgeBases.create' on 'projects/api_test2' denied

问题似乎出在我用来处理知识库的服务帐户上,显然没有办法为 dialogflow python 客户端提供处理知识库的权限 截至目前(如有错误请指正)

我发现的唯一解决方法是使用 curl 操作来处理知识库。

在使用 curl 对知识库进行操作后,我决定将所有 python 客户端代码更改为 curl 和子流程。与 python 客户端相比,它非常简单。

编辑(2020 年 7 月 27 日):Dialogflow python 客户端的 IAM 权限没有任何变化,可能是我要等到 KnowledgeBases 退出测试阶段。同时,已实现的请求比 curl 和 subprocess 是更好的方法,建议这样做