Webhooks不向外部应用程序发送数据

时间:2017-05-12 06:38:14

标签: node.js post webhooks podio

这是我想要做的:

  • 在某个应用中创建项目时,webhook会将该项目中包含的数据发送到外部应用程序
  • 同样的事情发生在编辑或删除项目

当然,我使用原生的Podio webhooks。我为item.create,item.update和item.delete创建了一个钩子。外部网址是正确的,然后点击"验证"按钮向外部应用程序发送成功呼叫。

然而,这些行动都没有实际效果。我创建,更改和删除了项目 - 没有。只需点击"验证"按钮会导致与外部应用程序的任何通信。

为什么这可能不起作用的常见原因是什么?

1 个答案:

答案 0 :(得分:1)

以下是我如何设法验证我的 Node.JS webhook 端点并使用 Express.JS 使其活动

const express = require("express");
const app     = express();
const https = require('https');

app.use(express.urlencoded());
app.use(express.json());

app.post('/', function(request, response){

  console.log( "POST", request.body);

  // VERIFICATION >>
  const postData = JSON.stringify({ code: request.body.code });
  const options = {
      hostname: 'api.podio.com',
      port: 443,
      path: '/hook/' + request.body.hook_id + '/verify/validate',
      method: 'POST',
      headers: {
          'content-type': 'application/json',
          'accept': 'application/json'
      }
  };
  const req = https.request(options, (res) => {
      res.setEncoding('utf8');
      res.on('data', (chunk) => {
          console.log(`BODY: ${chunk}`);
      });
      res.on('end', () => {
          console.log('No more data in response.');
      });
  });
  req.on('error', (e) => {
      console.error(`problem with request: ${e.message}`);
  });
  req.write(postData);
  req.end();
  // << VERIFICATION
  
  response.send(request.body);

});

app.listen(443);