Google对话框流程PERMISSION_DENIED异常

时间:2018-04-05 13:26:57

标签: grpc dialogflow

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

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

我收到一个grpc例外:

  

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

     

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

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

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

5 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

就我而言,发生错误是因为GOOGLE_CLOUD_PROJECT设置为Project Name(大小写混合的单词),但它应该是ProjectID(小写的单词)。将其更改为ProjectID后,它开始工作。 HTH

答案 3 :(得分:0)

我们需要检查以下几件事:

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

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

答案 4 :(得分:0)

我也遇到此错误,可能是您无法在json凭据上设置环境,请确保它是正确的,我不需要我的管理员角色。

要在您所在目录的cmd上设置GOOGLE_APPLICATION_CREDENTIALS的路径,请像在环境变量上一样指向json文件(当您关闭cmd时将其删除):

设置GOOGLE_APPLICATION_CREDENTIALS = C:\ Users \ Owner \ Desktop \ reactbot \ config \ ddssa-adietv-aasddss.json