Google对话框流程PERMISSION_DENIED异常

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

我正在尝试从Windows Java应用程序访问Google DialogFlow。我有环境变量GOOGLE_APPLICATION_CREDENTIALS,设置正确,我可以调用其他Google API。但是,当我打电话时:

DetectIntentResponse response = sessionsClient.detectIntent(session, queryInput);

我收到一个grpc例外:

PERMISSION_DENIED:'projects / newagent-a0ef5 / agent'的IAM权限'dialogflow.sessions.detectIntent'denied.Session路径:projects / NewAgent / agent / sessions / xxxx

“newagent-a0ef5”是我的流程的项目ID。 “xxxx”只是一个随机的会话ID令牌。

我知道我必须启用dialogflow.sessions.detectIntent访问,但我无法弄清楚在哪里。我创建了一个具有该值的自定义角色,并将其添加到与我的流相关联的三个IAM帐户中。我还启用了DialogFlow API。

有谁知道我在哪里添加这个缺失的权限?

grpc dialogflow
4个回答
5
投票

我正确地执行了所有IAM步骤,但是我将错误的Project ID传递给detectIntent。所以我想要检查一些事情......

  • 确保项目ID正确无误。您的会话路径应为“projects / <Project ID> / agent / sessions / <Session ID>”。
  • 确保使用具有Dialogflow API客户端角色的服务帐户。
  • 尝试让它在API Explorer工作

0
投票

我在创建聊天机器人时遇到了同样的问题。我通过使用Dialogflow API客户端角色解决了这个问题。我还必须将我的ruby版本从2.6更改为2.5.1。

重要的是要记住,GOOGLE_APPLICATION_CREDENTIALS必须指向关键的.jason文件。为避免出现问题,请在.bashrc文件中设置jason文件的路径。因此,每次重新启动计算机时都没有执行导出GOOGLE_APPLICATION_CREDENTIALS="[PATH]"


0
投票

在我的情况下发生错误是因为GOOGLE_CLOUD_PROJECT设置了项目名称(一个大小写混合的单词),但它应该是ProjectID(单词小写)。我将其更改为ProjectID后,它开始工作。 HTH


0
投票

我们需要检查以下事项:

  1. 你是对的项目ID:
  2. IAM角色应为ADMIN:Admin Project> Owner(对所有Dialogflow(控制台和API)和GCP资源的完全访问权限。可以使用控制台创建代理。)

参考添加IAM用户(不要忘记选择规则作为管理员):https://dialogflow.com/docs/reference/v2-auth-setup

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