根据 Express 请求创建 actions-on-google object
Create actions-on-google object from Express request
文档 here 显示了为 Express 创建 Actions SDK object 的代码示例:
const express = require('express');
const bodyParser = require('body-parser');
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', app);
expressApp.listen(3000);
但我需要做这样的事情:
const express = require('express');
const bodyParser = require('body-parser');
function func (req, res) {
let headers = req.headers;
let body = req.body;
console.log(headers);
console.log(body);
const app = actionssdk({
// init: () => body
// init: () => req
});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask("Welcome to the app");
})
return app;
}
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', func);
expressApp.listen(3000);
这显然不是正确的语法,它不会 return 对 Google 操作的任何响应。
我想做这样的事情的原因是用动态 clientId
初始化 actionssdk
object。我可以从 req.headers
object 中的授权 header 中提取 projectId
。从 projectId
我可以动态获取 clientId
并通过传递 clientId
来初始化 actionssdk
正确的语法是什么?
app
变量可以像这样用明确的请求和响应对象调用,因为它是一个函数:
const express = require('express');
const bodyParser = require('body-parser');
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', async (req, res) => {
const clientId = // Some logic to get client ID
const app = actionssdk({ clientId })
// Define intent handlers here
return app(req, res)
});
expressApp.listen(3000);
文档 here 显示了为 Express 创建 Actions SDK object 的代码示例:
const express = require('express');
const bodyParser = require('body-parser');
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', app);
expressApp.listen(3000);
但我需要做这样的事情:
const express = require('express');
const bodyParser = require('body-parser');
function func (req, res) {
let headers = req.headers;
let body = req.body;
console.log(headers);
console.log(body);
const app = actionssdk({
// init: () => body
// init: () => req
});
app.intent('actions.intent.MAIN', (conv) => {
conv.ask("Welcome to the app");
})
return app;
}
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', func);
expressApp.listen(3000);
这显然不是正确的语法,它不会 return 对 Google 操作的任何响应。
我想做这样的事情的原因是用动态 clientId
初始化 actionssdk
object。我可以从 req.headers
object 中的授权 header 中提取 projectId
。从 projectId
我可以动态获取 clientId
并通过传递 clientId
actionssdk
正确的语法是什么?
app
变量可以像这样用明确的请求和响应对象调用,因为它是一个函数:
const express = require('express');
const bodyParser = require('body-parser');
const expressApp = express().use(bodyParser.json());
expressApp.post('/fulfillment', async (req, res) => {
const clientId = // Some logic to get client ID
const app = actionssdk({ clientId })
// Define intent handlers here
return app(req, res)
});
expressApp.listen(3000);