如何用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
相关产品推荐
相关产品推荐

