首页 > 解决方案 > 使用 Dialogflow Python API 在 Dialogflow 代理内创建知识库的问题

问题描述

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

授予 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)

我可以在已创建的知识库中创建/删除/列出文档,但创建知识库会引发此错误

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

标签: pythonapidialogflow-esrolespermission-denied

解决方案


问题似乎出在我用来处理知识库的服务帐户上,显然目前还没有办法为 dialogflow python 客户端提供处理知识库的权限请纠正我,如果我'我错了)。

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

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

编辑(2020 年 7 月 27 日):Dialogflow python 客户端的 IAM 权限没有任何改变,我可能要等到知识库从 beta 阶段出来。同时,已实现的请求是比 curl 和 subprocess 更好的方法,并且建议您这样做


推荐阅读