web-dev-qa-db-fra.com

Exception PERMISSION_DENIED de la boîte de dialogue Google

J'essaie d'accéder à un Google DialogFlow à partir d'une application Windows Java. J'ai la variable d'environnement, GOOGLE_APPLICATION_CREDENTIALS, Correctement définie et je peux appeler d'autres API Google. Cependant, lorsque je appel:

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

Je reçois une exception grpc:

PERMISSION_DENIED: autorisation IAM 'dialogflow.sessions.detectIntent' sur 'projects/newagent-a0ef5/agent' refusée Chemin de session: projects/NewAgent/agent/sessions/xxxx

"newagent-a0ef5" est l'ID de projet de mon flux. "xxxx" est juste un jeton d'ID de session aléatoire.

Je comprends que je dois activer l'accès à dialogflow.sessions.detectIntent, Mais je ne sais pas où. J'ai créé un rôle personnalisé avec cette valeur et l'ai ajouté aux trois comptes IAM associés à mon flux. J'ai également activé l'API DialogFlow.

Quelqu'un sait-il où j'ajoute cette autorisation manquante?

8
Andrew Prokop

J'ai effectué toutes les étapes IAM correctement, mais je transmettais le mauvais ID de projet pour detectIntent. Donc je suppose que quelques choses à vérifier ...

  • Assurez-vous que l'ID du projet est correct. Votre chemin de session doit être "projets/<ID de projet>/agent/sessions/<ID de session>".
  • Assurez-vous que vous utilisez un compte de service avec le rôle Client d'API Dialogflow.
  • Essayez de le faire fonctionner dans API Explorer
5
Keeth

Il y a les choses suivantes que nous devons vérifier:

  1. Vous avez raison ID de projet:
  2. Le rôle IAM doit être ADMIN: Projet Admin> Propriétaire (accès complet à toutes les ressources Dialogflow (console et API) et GCP. Peut utiliser la console pour créer un agent.)

Ref pour ajouter un utilisateur IAM (n'oubliez pas de choisir la règle en tant qu'administrateur): https://dialogflow.com/docs/reference/v2-auth-setup

1
alok

J'ai eu le même problème lors de la création d'un chatbot. Je résous ce problème en utilisant un rôle client d'API Dialogflow. J'ai également dû changer ma version Ruby de 2.6 à 2.5.1.

Il est important de se rappeler que le GOOGLE_APPLICATION_CREDENTIALS doit pointer vers le fichier clé .jason. Pour éviter les problèmes, définissez le chemin d'accès au fichier jason dans le fichier .bashrc. Vous n'avez donc pas besoin d'exporter l'export GOOGLE_APPLICATION_CREDENTIALS="[PATH]" à chaque redémarrage de votre machine.

1
Robson Sampaio

Dans mon cas, l'erreur s'est produite car GOOGLE_CLOUD_PROJECT a été défini avec Project Name (un mot en majuscules), mais il doit s'agir de ProjectID (un mot en minuscule). Après l'avoir changé en ProjectID, il a commencé à fonctionner. HTH

0
Terry