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

Actions On Google V2 Node.js:conv.data无法按预期工作问题咨询

解决conv.data存储数据后后续意图无法访问的问题

我之前也碰到过一模一样的情况,结合Google Actions官方文档和实际踩坑经验,给你梳理几个大概率的问题点和对应的解决办法:

1. 先确认会话是否还保持活跃

conv.data是会话级别的临时存储,只有在同一个对话会话里才能访问到。如果用户中途退出Assistant(比如关掉APP再重新打开),或者会话超时(默认大概5分钟左右),conv.data里的所有数据都会被清空。

  • 快速排查:在后续意图的处理代码里先打印console.log(conv.data),如果整个对象是空的,那基本就是会话断了。

2. 检查意图是否属于同一个Agent

要确保[INTENTS.INTENT_A]和后续调用的意图属于同一个Actions Agent,跨Agent的话conv.data是完全不共享的。

3. 先验证参数存储的正确性

先确认在[INTENTS.INTENT_A]里,你要存储的parameter确实有值,可以加日志排查:

[INTENTS.INTENT_A]: (conv, { parameter }) => {
  console.log('接收的参数值:', parameter); // 确认参数是否真的传进来了
  conv.data.tempvariable = parameter;
  console.log('存储后的conv.data:', conv.data); // 确认存储操作成功
}

如果参数本身就是undefined,那后续自然拿不到值。

4. 后续意图里的访问方式要正确

确保后续意图的处理函数正确接收了conv对象,并且访问路径没有错:

[INTENTS.INTENT_B]: (conv) => {
  console.log('当前conv.data内容:', conv.data);
  const tempVar = conv.data.tempvariable;
  if (tempVar) {
    conv.add(`拿到的临时变量是:${tempVar}`);
  } else {
    conv.add('没找到存储的临时变量哦');
  }
}

注意别搞混存储作用域:

  • conv.data:当前会话有效,会话结束就清空
  • conv.user.data:用户级持久化存储,跨会话可用(需要用户授权)
  • conv.session.data:旧版本写法,现在官方推荐用conv.data

5. 排查场景切换的影响(如果用了Actions Builder)

如果你的项目用了Actions Builder的场景(Scene),要注意场景切换时的会话上下文配置。有些场景切换会默认重置会话数据,需要在场景设置里确保会话上下文被保留。

先从这几点入手排查,一般都能找到问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:04