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

如何用Node.js版actions-on-google获取完整Google Action请求JSON?

解决方法:获取完整请求JSON及ID字段

嘿,作为JavaScript新手遇到这个问题很正常,我来帮你理清楚怎么拿到你需要的内容!

1. 获取完整的Google Action请求JSON

你不需要额外做复杂处理,conv对象本身就包含了整个原始请求的JSON数据,它存放在conv.body属性里。直接在你的意图函数里打印这个属性,就能看到模拟器里展示的完整请求内容了。

2. 直接获取特定的ID字段

如果只是需要userId或者conversationId这类特定字段,不用手动解析整个JSON,conv对象已经帮你封装好了对应的便捷属性:

  • 用户ID:conv.user.id
  • 会话ID:conv.conversation.id

修改后的示例代码

我把你的代码调整了一下,补上了关键的初始化步骤,同时添加了获取字段的逻辑,你可以直接测试:

const express = require('express')
const bodyParser = require('body-parser')
const { actionssdk, Image, } = require('actions-on-google')

// 补上Action SDK应用初始化步骤,这是之前代码遗漏的关键部分
const app = actionssdk()

app.intent('actions.intent.TEXT', (conv, input) => {
  if (input === 'bye' || input === 'goodbye') {
    return conv.close('See you later!')
  }
  conv.ask(`I didn't understand. Can you tell me something else?`)
})

app.intent('com.example.MyDevice.TEST', (conv, input) => {
  // 打印完整请求JSON
  console.log('完整请求JSON:', conv.body);
  // 打印用户ID
  console.log('用户ID:', conv.user.id);
  // 打印会话ID
  console.log('会话ID:', conv.conversation.id);
  
  console.log(input);
  console.log(conv.action);
  console.log(conv.intent);
  conv.close('Test Done');
});

express().use(bodyParser.json(), app).listen(3000)

为什么之前只能拿到查询部分?

你之前打印的input参数,它对应的只是用户输入的文本内容(也就是请求里inputs[0].arguments[0].textValue或者rawInputs[0].query那部分),并不是整个请求对象,所以只能看到查询内容。

内容的提问来源于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 07:25:31