Actions on google 根据Express请求在google对象上创建操作

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

文档显示了为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 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操作的任何响应

我想这样做的原因是使用dynamic
clientId
初始化
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()的方法,但您的方法更加简洁。谢谢