You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:45:07