Как использовать DialogFlow, библиотеку node.js v2 без Firebase - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь выяснить, как использовать DialogFlow с express / bodyParser и библиотекой node.js v2 функции без Firebase (на моем собственном сервере). Он работает с данными JSON запроса / ответа, но я не могу понять, что мне нужно сделать, чтобы использовать библиотечную функцию node.js dialogflow () . Вот фрагмент того, что у меня есть, которое работает с данными JSON:

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);
});

Единственное решение, размещенное в сети, которое я нашел, говорит, что использует следующий код:

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 и начните использовать функции node.js из app = dialogflow () в библиотеке?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

В конце концов, это было очень просто. Мне просто нужно было включить приложение в bodyparser:

eapp.use(bodyParser.json(), app);
0 голосов
/ 09 июля 2018

Экземпляр app, созданный с помощью функции dialogflow, можно использовать как функцию обработчика экспресс-запроса. Таким образом, вы можете вызвать его с помощью объектов Express request и response для обработки запроса.

В функции запуска для вашего Agent класса вы можете сделать что-то вроде

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, вы можете установить URL выполнения в Dialogflow на что-то вроде:

https://subdomain.domain.tld/actions где /actions - конечная точка сообщения, которую вы прослушали в коде.

...