我正在使用actionssdk
,并使用Javascript和node.js + Express构建我的Action实现。我正在寻找一种获取实现所在服务器的url(协议+主机名+端口)的方法。
是否有一种简单的方法?例如。在MAIN
意图中?我可以使用某些conv
属性吗?我可以在req
意图中保留MAIN
参数,从中可以推断出主机名等吗?
const express = require('express');
const expressApp = express();
const { actionssdk, ... } = require('actions-on-google');
const app = actionssdk({
ordersv3: true,
clientId: ...
});
expressApp.post('/fulfilment', app);
app.intent('actions.intent.MAIN', (conv) => {
let myUrl: string = ... // ???????
...
});
(background:显然我知道我将实现代码部署到哪里。但是我有一个可重复使用的实现代码模板,我想在其中引用主机url,并且我不想在其中键入每次我开发新的操作时都需要手动操作。)
您可以通过Framework Metadata来访问中间件中的请求对象,默认情况下,该类型为BuiltinFrameworkMetadata类型,其中包含objects used by Express
例如,您可以像这样使用它,它将在每个请求之前运行:
conv.middleware((conv, framework) => {
console.log(framework.express.request.headers.host)
})