我正在尝试从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。
有谁知道我在哪里添加了这个缺失的权限?
答案 0 :(得分:4)
我正确地执行了所有IAM步骤,但是我将错误的Project ID传递给detectIntent。所以我想要检查一些事情......
答案 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)
我们需要检查以下几件事:
引用添加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