我正在尝试从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。
有谁知道我在哪里添加这个缺失的权限?
我正确地执行了所有IAM步骤,但是我将错误的Project ID传递给detectIntent。所以我想要检查一些事情......
我在创建聊天机器人时遇到了同样的问题。我通过使用Dialogflow API客户端角色解决了这个问题。我还必须将我的ruby版本从2.6更改为2.5.1。
重要的是要记住,GOOGLE_APPLICATION_CREDENTIALS
必须指向关键的.jason文件。为避免出现问题,请在.bashrc文件中设置jason文件的路径。因此,每次重新启动计算机时都没有执行导出GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
。
在我的情况下发生错误是因为GOOGLE_CLOUD_PROJECT设置了项目名称(一个大小写混合的单词),但它应该是ProjectID(单词小写)。我将其更改为ProjectID后,它开始工作。 HTH
我们需要检查以下事项:
参考添加IAM用户(不要忘记选择规则作为管理员):https://dialogflow.com/docs/reference/v2-auth-setup