代码之家  ›  专栏  ›  技术社区  ›  Mizlul

如何使用Dialogflow与Heroku通信

  •  2
  • Mizlul  · 技术社区  · 6 年前

    我目前使用Google云功能Firebase构建了一个DialogFlow聊天机器人。这一切都很好,但我不想使用firebase,我想使用Heroku,我如何才能使DialogFlow向Heroku服务发出请求。

    我已经知道我应该添加heroku的URL,并且必须是HTTPS和正确的响应格式。

    我不知道的是,如何在DailogFlow和使用node的Heroku之间建立连接。js以便我可以发送响应,例如:

    sendResponse('Hello, this is responsing from Heroku')

    使用firebase,我必须具有如下功能:

        exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
      console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
      console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
      if (request.body.result) {
        processV1Request(request, response);
      } else if (request.body.queryResult) {
        // processV2Request(request, response);
      } else {
        console.log('Invalid Request');
        return response.status(400).end('Invalid Webhook Request (expecting v1 or v2 webhook request)');
      }
    });
    

    我不知道当我在Firebase外使用时是否需要这个,在这种情况下Heroku!此外,由于我没有使用firebase,此代码会发生什么情况:

    functions.https.onRequest((request, response) => {
    

    如果我不使用firebase,我就没有“functions”变量。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Prisoner    6 年前

    大多数代码可以原封不动地使用-Firebase云函数使用node。js/express。js和Dialogflow库假定请求和响应对象是来自express的对象。JSON主体解析器中间件。

    所讨论的这一行是语法糖,让Firebase云函数处理器发现并处理它。所以你会替换那条线

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    用更像这样的东西

    const express = require('express');
    const app = express();
    app.use( express.json() );
    
    app.get('/', (req, res) => processWebhook( req, res ));
    
    app.listen(3000, () => console.log('App listening on port 3000!'));
    
    var processWebhook = function( request, response ){
      // ... the console logging and all the processing goes here