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

Dialogflow如何存储多轮对话参数并拼接后在目标意图中展示

实现方案

1. 修改firstnameletters意图处理逻辑

你当前遇到的核心问题是每次请求的alphabets参数会覆盖上一轮的值,所以需要自定义专属字段存储拼接后的结果,再回写到globalParameter上下文持久化,代码示例如下:

const first_name_letters = async (df, globalParameter) => {
  // 取当前轮次用户输入的字母段
  const currentInput = df._request.queryResult.parameters.alphabets;
  // 读取历史已拼接的内容,无历史值则初始化为空字符串
  const splicedName = (globalParameter.splicedName || '') + currentInput;
  // 将拼接后的值回写到globalParameter上下文,设置99轮生命周期保证多轮有效
  df.setContext('globalparameter', 99, {
    splicedName: splicedName,
    // 回写需要保留的其他原有参数
    languageCode: globalParameter.languageCode
  });
  // 返回响应提示用户继续输入
  df.setResponseText(`${currentInput.split('').join(' ')}\n\ncontinue`);
}

2. 配置Thank you意图处理逻辑

用户触发「完成了」话术进入该意图时,直接读取上下文中存储的拼接完成值返回即可:

const thank_you = async (df, globalParameter) => {
  const finalName = globalParameter.splicedName || '';
  df.setResponseText(`Thank you ${finalName}`);
}

注意事项

  • setContext的第一个参数要和你Dialogflow控制台创建的globalParameter上下文名称完全一致,大小写敏感
  • 上下文生命周期设置要大于你预期的最大输入轮次,避免中途上下文失效导致拼接值丢失
  • 如果需要支持用户输入错误重置,可以额外新增重置意图,触发时将globalParameter里的splicedName清空即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:09:01