我正在尝试在自己的服务器上运行google助手示例webhook nodejs应用程序(index.js),但不知道这是什么设置为webhosting .. https://codelabs.developers.google.com/codelabs/your-first-action-on-google-with-webhook/#2
在我的服务器上运行此应用的环境是什么?由于它不是作为监听服务器运行,我不能使用nginx,node_cgi与apache不成熟,我该如何运行这个样本?
答案 0 :(得分:1)
非常好,您应该确保在页面上提交错误请求以表明它不清楚。
如上所示,代码旨在使用Google Cloud Functions运行。
这并不意味着您无法在自己的服务器上运行它 - 只需要知道如何在Apache或Nginx环境之外运行Node.js服务器。我已经看到了许多配置,但通常您会让Node.js服务器应用程序运行并侦听本地端口,并在特定路径的外部Web服务器和此端口之间拥有代理。
但即使在这种情况下这还不够 - 代码本身不会监听端口 - 它希望在表单中传递request
和response
对象具有JSON中间件的Express.js可以处理。为此,您需要安装Express.js库,然后开始使用以下代码进行监听:
const express = require('express');
const app = express();
app.use( express.json() );
app.get('/', (req, res) => exports.bitcoinInfo( req, res ));
app.listen(3000, () => console.log('App listening on port 3000!'));
答案 1 :(得分:0)
感谢@Prisoner和@Ido绿色链接的帮助,效果更好!运行样本的最小值我执行了以下操作:
使用mainfile main.js创建一个新的nodejs项目,install express和actions-on-google
mkdir googleActionServer
cd googleActionServer
npm init
npm install --save actions-on-google
npm install --save express`
从google复制index.js并将其放入main.js
const express = require('express');
const bitcoinInfo = require("./index");
const app = express();
app.use( express.json() );
app.post('/', (req, res) => bitcoinInfo.bitcoinInfo( req, res ));
app.listen(3000, () => console.log('App listening on port 3000!'));
运行以下命令启动应用程序:
node ./main.js
要使用DialogFlow进行测试,请将ngrok下载并安装到/ usr / local / bin,然后运行:
ngrok http 3000
Ngrok将为您提供可从外部访问的网址,并将请求转发给nodejs应用。它还会为您创建一个https,因此将https地址复制粘贴到DialogFlow webhook地址中,然后就可以了