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

如何从Google Actions的参数中获取指定字段值?

如何从Google Actions参数中获取newName字段值

看起来你在通过Google Actions fulfillment提取参数时遇到了小麻烦,我来帮你梳理一下正确的做法,顺便解答你关于参数命名意义的疑问。

问题根源:你的intent处理函数参数使用有误

你当前的代码里,app.intent('com.example.test.RENAME', (conv, input, arg) => { ... })的参数定义不符合预期:

  • input对应的是用户的原始查询文本(也就是你看到的"Talk to GoTestApp to rename Asda")
  • arg在这里其实只拿到了第一个参数trigger_query的值"rename Asda",所以arg[1]会取这个字符串的第二个字符"e",这显然不是你想要的。

正确获取newName的方式

因为你已经在Action Package里正确定义了命名参数newName,完全不需要依赖数组索引去提取,有两种更规范的方式:

方式1:通过解构参数直接获取(推荐)

在intent处理函数中,第二个参数是所有命名参数的集合,你可以直接解构出newName:

app.intent('com.example.test.RENAME', (conv, { newName }) => {
  console.log(newName); // 会输出 "Asda"
  // 后续逻辑...
});

方式2:通过conv.parameters访问

如果需要获取所有参数,也可以通过conv.parameters对象来访问指定参数:

app.intent('com.example.test.RENAME', (conv) => {
  const newName = conv.parameters.newName;
  console.log(newName); // 同样输出 "Asda"
});

为什么你的原始方法不推荐?

虽然你可以通过conv.inputs[0].arguments[1].rawText拿到值,但这种方式依赖参数在数组中的位置,一旦后续参数顺序调整、新增或删除参数,你的代码就会出错,非常不健壮。

参数命名的意义到底是什么?

参数命名的核心价值就是让你可以直观、稳定地获取指定参数值,不用关心参数在请求中的位置或传输格式。它相当于给每个参数加了一个"标签",你通过标签就能找到对应的值,而不是靠数组索引这种容易变化的标识。

比如你定义了newName参数后,不管Google Actions的请求JSON里参数顺序怎么变,你都能通过params.newName稳定拿到值,代码可读性和可维护性都会大大提升。

验证一下你的配置

从你提供的Action Package配置来看,queryPatterns里的"rename $SchemaOrg_Text:newName"已经正确关联了参数,所以只要用上面的正确方式,就能顺利提取到"Asda"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:49:45