DialogFlow PermissionDenied:403 IAM 权限“dialogflow.sessions.detectIntent”

问题描述 投票:0回答:5

PermissionDenied:“projects/XXXX-live/agent”上的 403 IAM 权限“dialogflow.sessions.detectIntent”被拒绝。

我在创建服务时使用了 DialogFlow 客户端作为角色。

可能是什么问题?

dialogflow-es
5个回答
8
投票

当我尝试使用服务帐户的权限时,我也遇到了同样的问题。我创建了一个全新的服务帐户,然后赋予它客户端角色,并且由于某种未知的原因它起作用了。 我建议尝试创建另一个帐户,然后赋予其客户角色,看看它是否适用于该帐户。 另外,这不一定是一个彻底的解决方案,但如果您为该帐户授予管理员角色,那么您的问题也将得到解决。

编辑:起初我认为这可能与服务帐户的创建方式有关(云控制台与命令行),但情况似乎并非如此。由于某种原因,这只是您创建的第一个服务帐户,客户端角色不适用于该帐户。


7
投票

我在将 Dialogflow 与外部客户端集成时遇到了同样的问题。

我的案例的根本原因是,即使我为外部客户端创建了服务帐户,我也忘记添加服务帐户并赋予“Dialogflow API 管理员”角色。

解决方法:在 GCP 项目中,转到 IAM > 单击顶部的“+ADD”按钮并搜索要授予访问权限的服务帐户,选择角色类型“Dialogflow API Admin”


0
投票

我通过这样做解决了我的错误

from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
    'C:\\Users\\ashis\\Downloads\\id.json')
def create_intent(project_id, display_name, training_phrases_parts,
                  message_texts):
    """Create an intent of the given intent type."""
    intents_client = dialogflow.IntentsClient(credentials=credentials)
    # session_client = dialogflow.SessionsClient(credentials=credentials)

然后我进入我的项目的 IAM 设置 https://console.cloud.google.com/iam-admin/iam?project= 并赋予对话流服务帐户成员更高的角色(如项目所有者)。


0
投票

您必须向超级代理授予许可。


0
投票

解决方案非常简单 -> 在创建代理时选择父项目。不要创建新项目。因为它不会继承 JSON 密钥权限1

这解决了我的问题。我希望你会发现它很有用。我在几个项目中尝试过这个方法,发现它工作得很好。快乐编码!

© www.soinside.com 2019 - 2024. All rights reserved.