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

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

使用Python脚本调用dialogflow的DetectIntent函数时出现以下错误。

google.api_core.exceptions.PermissionDenied:“projects/project_name/locations/us-central1/agents/agent_id”上的 403 IAM 权限“dialogflow.sessions.detectIntent”被拒绝。

凭证和连接的核心代码:

credentials = service_account.Credentials.from_service_account_file(environment.credential_path)
session_client = dialogflow.SessionsClient(credentials=credentials, client_options=client_options)
response = session_client.detect_intent(request=request)

我设置了一个断点并确认 session_client._transport._credentials 看起来正确并且 service_account_email 正确。我还检查了策略故障排除程序,并确认为dialogflow.sessions.detectIntent 的服务帐户设置了允许权限(尽管拒绝策略设置为“未知”,但只是因为它不受支持且无论如何都不应该被拒绝) ).

因此,代码似乎使用了正确的服务帐户,并且服务帐户具有正确的权限,因此我不知道可能导致 403 的原因和/或下一步要检查/采取的步骤。我还确认 Dialogflow API 服务已启用。有什么想法/帮助吗?

google-cloud-platform chatbot service-accounts google-cloud-iam dialogflow-cx
1个回答
0
投票

您遇到的错误消息表明,由于

权限不足
,在 Google Dialogflow 服务中使用 detectIntent 操作的请求已被拒绝。

您通常需要

Dialogflow API Client
Dialogflow API Admin
角色。确保将这些角色分配给
service account
项目和代理级别。权限可以在项目级别建立并由 Dialogflow 代理继承,也可以直接在代理级别配置。确保项目级别和代理级别之间的权限不冲突。

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