Pra*_*xit 8 chatbot service-accounts google-cloud-platform dialogflow-es
我正在尝试使用 Dialogflow 的 V2 API 获取我的 Dialogflow 代理中的意图列表,但出现以下错误:
PermissionDenied:“projects/xxxx/agent”上的 403 IAM 权限“dialogflow.intents.list”被拒绝。
我采取了以下步骤:
以下是我的代码:
import dialogflow_v2 as dialogflow
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/home/user/folder/service-account-key.json"
client=dialogflow.IntentsClient()
parent = client.project_agent_path('[PROJECT_ID]')
for element in client.list_intents(parent):
pass
Run Code Online (Sandbox Code Playgroud)
我制作了各种代理和服务帐户,甚至将角色从管理员更改为客户端,但找不到任何解决方案。我尝试了以下解决方案但没有用
尝试的解决方案:DialogFlow PermissionDenied:403 IAM 权限“dialogflow.sessions.detectIntent”
Ris*_*tra 10
无需创建新代理。您可以编辑现有代理 IAM。
问题出在 GCP 的 IAM 部分。可能您正在使用没有必要授权的角色发出 POST 请求。
这解决了我的问题。
当由于文件丢失、凭证路径无效、环境变量分配不正确等多种原因导致应用程序未正确进行身份验证时,通常会引发此错误消息。请记住,当您在会话中设置环境变量值时,每次删除会话时都会重置该值。
基于此,我建议您验证凭证文件和文件路径是否已正确分配,并遵循手动获取和提供服务帐户凭证指南,以便直接在代码中显式指定您的服务帐户文件;通过这种方式,您将能够永久设置它并验证您是否正确传递了服务凭据。
在代码示例中传递服务帐户密钥的路径:
def explicit():
from google.cloud import storage
# Explicitly use service account credentials by specifying the private key
# file.
storage_client = storage.Client.from_service_account_json('service_account.json')
# Make an authenticated API request
buckets = list(storage_client.list_buckets())
print(buckets)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9842 次 |
| 最近记录: |