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

如何通过NodeJS向Dialogflow请求传递参数?

解决方案:通过Node.js向Dialogflow传递自定义参数

我懂你想实现的效果——从Node.js代码里给Dialogflow传个参数(比如name),让它自动返回带这个参数的动态响应,比如"Hi $name"。下面是调整后的完整可运行代码,已经帮你把参数传递的逻辑补全了:

const projectId = 'your-project-id';
const sessionId = 'session-id';
const query = 'your-query'; // 这里填触发对应意图的问句,比如"打招呼"
const languageCode = 'your-language'; // 示例:'zh-CN' 或 'en-US'

// 引入structjson工具(用于JSON与Dialogflow Struct格式互转,把对应代码存为structjson.js放在同目录即可)
const j = require("./structjson.js");
const dialogflow = require('dialogflow');

// 初始化会话客户端,替换为你的服务账号密钥文件路径
const sessionClient = new dialogflow.SessionsClient({keyFilename: './your-service-account-key.json'});
const sessionPath = sessionClient.sessionPath(projectId, sessionId);

async function sendRequestWithParams() {
    // 初始化上下文客户端
    const contextClient = new dialogflow.ContextsClient({ 
        keyFilename: './your-service-account-key.json' 
    });

    // 构造包含自定义参数的上下文
    const contextData = {
        name: contextClient.contextPath(projectId, sessionId, 'custom-context'), // 自定义上下文名称
        parameters: j.jsonToStructProto({ name: 'John' }), // 传入你要传递的参数,比如这里的name: 'John'
        lifespanCount: 1 // 上下文有效期,1表示仅当前请求生效
    };

    // 创建上下文
    const [context] = await contextClient.createContext({
        parent: sessionPath,
        context: contextData
    });

    // 构造Dialogflow请求,把上下文加入queryParams
    const request = {
        session: sessionPath,
        queryInput: {
            text: {
                text: query,
                languageCode
            }
        },
        queryParams: {
            contexts: [context] // 传入刚才创建的上下文
        }
    };

    // 发送请求并打印结果
    const result = await sessionClient.detectIntent(request);
    console.log('Dialogflow响应结果:', result);
}

// 执行请求
sendRequestWithParams();

关键注意事项:

  • structjson.js:这是Dialogflow官方提供的格式转换工具,你只需要把对应代码保存成这个文件放在项目目录里就能用。
  • Dialogflow控制台配置:要在控制台给目标意图关联你定义的上下文(比如上面的custom-context),并在意图响应里用$name引用参数。
  • 密钥文件:务必把代码里的密钥文件路径替换成你自己的Dialogflow服务账号密钥路径。

这样调整后,运行代码就能让Dialogflow接收到你传入的参数,返回对应的动态响应啦!

内容的提问来源于stack exchange,提问作者Marco Lampis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:10:15