Actions on google 根据Express请求在google对象上创建操作
文档显示了为Express创建Actions SDK对象的以下代码示例:Actions on google 根据Express请求在google对象上创建操作,actions-on-google,Actions On Google,文档显示了为Express创建Actions SDK对象的以下代码示例: const express = require('express'); const bodyParser = require('body-parser'); const expressApp = express().use(bodyParser.json()); expressApp.post('/fulfillment', app); expressApp.listen(3000); 但我需要这样做: const e
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);
这显然不是正确的语法,它不会返回对Google操作的任何响应
我想这样做的原因是使用dynamicclientId
初始化actionssdk
对象。我可以从req.headers
对象中存在的授权标头中提取projectId
。从projectId
中,我可以动态获取clientId
,并通过传递clientId
来初始化actionssdk
正确的语法是什么 可以使用express request和response对象调用
app
变量,如下所示,因为它是一个函数:
const express=require('express');
const bodyParser=require('body-parser');
const expressApp=express().use(bodyParser.json());
expressApp.post('/fulfillment',异步(请求、回复)=>{
const clientId=//获取客户端ID的一些逻辑
const app=actionssdk({clientId})
//在这里定义意图处理程序
返回应用程序(请求、恢复)
});
expressApp.listen(3000);
太好了!虽然我已经找到了一种使用app.handler()的方法,但您的方法更加简洁。谢谢