我试图让愚蠢的名字制作者使用我服务器上托管的webhook工作 . 使用PTs-V2我能够看到Dialogflow的JSON帖子 .

... { “颜色”: “红”, “数字”:6} ...

使用Hurl.it我能够成功将帖子发送到我的服务器并获得正确的响应 .

{“演讲”:“好吧,你这个愚蠢的名字是红色的!我希望你喜欢它 . 下次见 . ”......

但是,当我尝试将自己的服务器用于Dialogflow时,它不起作用 . 不确定是否有我遗漏的东西 .

Webhook在服务器上

'use strict';

const https = require('https');
const fs = require('fs');

var privatekey = fs.readFileSync('...');
var certificate = fs.readFileSync('...');
var credentials = {key: privatekey, cert: certificate};

process.env.DEBUG = 'actions-on-google:*';
var DialogflowApp = require('actions-on-google').DialogflowApp;
const express = require('express');
const bodyParser = require('body-parser');

let app = express();
app.use(bodyParser.json({type: 'application/json'}));
var httpsServer = https.createServer(credentials, app);
httpsServer.listen(443);

const NAME_ACTION = 'make_name';
const COLOR_ARGUMENT = 'color';
const NUMBER_ARGUMENT = 'number';

app.get('/', function(req, resp) {
	resp.send("Hello!");
	console.log('app.get');
});

app.post('/', function (request, response){
	console.log('app.post');
	const app = new DialogflowApp({request: request, response: response});

  console.log('Request headers: ' + JSON.stringify(request.headers));
  console.log('Request body: ' + JSON.stringify(request.body));

  // Make a silly name
  function makeName (app) {
    let number = app.getArgument(NUMBER_ARGUMENT);
    let color = app.getArgument(COLOR_ARGUMENT);
    app.tell('Alright, your silly name is ' +
      color + ' ' + number +
      '! I hope you like it. See you next time.');
  }

  let actionMap = new Map();
  actionMap.set(NAME_ACTION, makeName);

  app.handleRequest(actionMap);
});

谢谢你的帮助 .

编辑:当我在端口上运行网站的Apache服务器时,来自Dialogflow的响应

"status":{"code":206,"errorType":"partial_content",“ errorDetails ": " Webhook调用失败 . 错误:无法解析webhook JSON响应:java.lang.IllegalStateException:预期BEGIN_OBJECT但是在第1行第1行路径为$ .", " webhookTimedOut”:假},

JS服务器在端口而不是Apache上运行时的响应

"status":{"code":206,"errorType":"partial_content",“ errorDetails ": " Webhook调用失败 . 错误:Webhook响应为空.", " webhookTimedOut”:false},

Dialogflow Setup(截图)

我的JS服务器永远不会收到帖子 .