PermissionDenied:“projects/XXXX-live/agent”上的 403 IAM 权限“dialogflow.sessions.detectIntent”被拒绝。
我在创建服务时使用了 DialogFlow 客户端作为角色。
可能是什么问题?
当我尝试使用服务帐户的权限时,我也遇到了同样的问题。我创建了一个全新的服务帐户,然后赋予它客户端角色,并且由于某种未知的原因它起作用了。 我建议尝试创建另一个帐户,然后赋予其客户角色,看看它是否适用于该帐户。 另外,这不一定是一个彻底的解决方案,但如果您为该帐户授予管理员角色,那么您的问题也将得到解决。
编辑:起初我认为这可能与服务帐户的创建方式有关(云控制台与命令行),但情况似乎并非如此。由于某种原因,这只是您创建的第一个服务帐户,客户端角色不适用于该帐户。
我在将 Dialogflow 与外部客户端集成时遇到了同样的问题。
我的案例的根本原因是,即使我为外部客户端创建了服务帐户,我也忘记添加服务帐户并赋予“Dialogflow API 管理员”角色。
解决方法:在 GCP 项目中,转到 IAM > 单击顶部的“+ADD”按钮并搜索要授予访问权限的服务帐户,选择角色类型“Dialogflow API Admin”
我通过这样做解决了我的错误
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(
'C:\\Users\\ashis\\Downloads\\id.json')
def create_intent(project_id, display_name, training_phrases_parts,
message_texts):
"""Create an intent of the given intent type."""
intents_client = dialogflow.IntentsClient(credentials=credentials)
# session_client = dialogflow.SessionsClient(credentials=credentials)
然后我进入我的项目的 IAM 设置 https://console.cloud.google.com/iam-admin/iam?project= 并赋予对话流服务帐户成员更高的角色(如项目所有者)。
您必须向超级代理授予许可。