DialogFlow CX意图检测报错:需切换至us-central1专属域名
DialogFlow CX 意图检测域名切换报错问题
问题描述
我尝试用以下NodeJS代码检测DialogFlow CX意图:
const session=new dialogflow.SessionsClient({ project_id:"activity3-viod", keyFilename:"assets/keys/dialogflow.json" }); const sessionPath = session.projectLocationAgentSessionPath("activity3-viod","us-central1","Test-CX","123456789"); const request = { session: sessionPath, queryInput:{ text: { text: "sample phrase", languageCode:"en-US" } } }; const responses = await session.detectIntent(request);
收到报错:
Error: 3 INVALID_ARGUMENT: Please switch to 'us-central1-dialogflow.googleapis.com' to access resources located in 'us-central1'.
我的项目确实位于us-central1,项目ID、代理名称均与DialogFlow后台一致,疑惑为何仍提示需切换域名?
解决方案
- 核心问题是你用了DialogFlow ES(标准版)的客户端库调用CX(进阶版)代理,两者客户端不通用,必须切换为CX专属客户端。
- 先安装CX客户端库:
npm install @google-cloud/dialogflow-cx - 修改代码,使用CX客户端并指定区域endpoint:
const { SessionsClient } = require('@google-cloud/dialogflow-cx'); const session = new SessionsClient({ projectId: "activity3-viod", keyFilename: "assets/keys/dialogflow.json", apiEndpoint: "us-central1-dialogflow.googleapis.com" // 强制指定区域域名 }); const sessionPath = session.projectLocationAgentSessionPath( "activity3-viod", "us-central1", "Test-CX", // 注意这里填代理ID,不是显示名称,ID可在后台代理设置中获取 "123456789" ); const request = { session: sessionPath, queryInput: { text: { text: "sample phrase" }, languageCode: "en-US" } }; const responses = await session.detectIntent(request); - 额外验证:确认
Test-CX是代理的ID而非显示名称,避免因名称不匹配导致的隐性错误。
内容的提问来源于stack exchange,提问作者Bill Ferster
相关产品推荐
相关产品推荐

