首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用没有Firebase的DialogFlow,node.js v2库

如何使用没有Firebase的DialogFlow,node.js v2库
EN

Stack Overflow用户
提问于 2018-07-05 15:50:50
回答 2查看 397关注 0票数 0

我正在努力弄清楚如何在DialogFlow /bodyParser和node.js库v2 functions 中使用不带Firebase (在我自己的服务器上)。我让它处理请求/响应JSON数据,但我不知道如何使用node.js库函数对话框()。下面是我使用JSON数据的一个片段:

代码语言:javascript
复制
const {config} = require('./config');
const https = require('https');
const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');

const options = {
    key: fs.readFileSync(config.SSLDIR + 'privkey.pem'),
    cert: fs.readFileSync(config.SSLDIR + 'cert.pem'),
    ca: fs.readFileSync(config.SSLDIR + 'chain.pem')
};

const eapp = express();
eapp.disable('x-powered-by');
eapp.use(bodyParser.urlencoded({extended: true}));
eapp.use(bodyParser.json());

const server = https.createServer(options, eapp).listen(config.LISTEN_PORT, () => {
    console.log(`API listening on port ${config.LISTEN_PORT}. Ctrl-C to end.`);
});
server.on('error', (e) => {
    console.log(`Can't start server! Error is ${e}`);
    process.exit();
});

// I have an Agent class that reads the request object and handles it
eapp.post("/actions", (request, response) => {
    const agent = new Agent(request, response);
    agent.run();
    return;
});

eapp.all('*', (request, response) => {
    console.log("Invalid Access");
    response.sendStatus(404);
});

我在网上发布的唯一解决方案据说使用了以下代码:

代码语言:javascript
复制
const express = require('express');
const bodyParser = require('body-parser');
const { dialogflow } = require('actions-on-google');
const app = dialogflow();
express().use(bodyParser.json(), app).listen(3000);

但我很困惑:

  1. DialogFlow实现需要一个https端点,所以我不需要像我一样创建一个https服务器吗?
  2. 如何将此示例集成到我已经完成的工作中,停止使用JSON数据,并开始在库中使用来自app=dialogflow()的node.js函数?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-26 04:21:16

最后,这很简单。我只需要在just解析器中包含这个应用程序:

代码语言:javascript
复制
eapp.use(bodyParser.json(), app);
票数 0
EN

Stack Overflow用户

发布于 2018-07-09 19:37:11

使用app函数创建的dialogflow实例可以像使用快捷请求处理程序函数一样使用。因此,您可以使用Express requestresponse对象调用它来处理请求。

Agent类的run函数中,可以执行以下操作

代码语言:javascript
复制
run() {
  const request = ...; // Express request object
  const response = ...; // Express response object
  const app = ...; // app instance created using the dialogflow function
  app(request, response); // call app with the Express objects
}

然后,当您将此服务器部署到公共HTTPS端点时,可以将Dialogflow中的实现url设置为如下所示:

https://subdomain.domain.tld/actions,其中/actions是您在代码中收听的后置端点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51195505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档