Webhooks是我们工作流引擎的一个强大部分。要了解更多关于工作流的信息,本文访问。
为什么要创建端点?
可以创建一个端点来控制webhook接收器的身份验证和上下文。如果从可用的API中需要额外的信息,或者需要自定义代码来处理传入的webhook的有效负载,可以设置一个消费者端点来进行如下处理。
如何为Webhooks创建一个端点
下面是用Javascript创建端点的步骤(示例):
- 设置一个web服务器。我们将使用node
表达
图书馆
Const express = require('express');//快速web服务器
const bodyParser = require('body-parser');// json解析器
Const dotenv = require('dotenv');//提供访问环境变量
dotenv.config ();
Const app = express();
app.use (bodyParser.json ());
const port = process.env.PORT || 3000;
App.listen (port, () => {
console.log(' Webhook消费者在http://localhost:${port}收听');
});
- 验证x - mm签名,生成的HMAC
Webhook秘密
在配置webhook时创建。我们将使用node加密
库,并有明确的使用此函数来检查每一个请求。
Const crypto = require('crypto');
函数validateMMSignature(req, res, next) {
const mmSignature = req.headers['x-mm-signature'];
const mmTimestamp = req.headers['x-mm-timestamp'];
Const uri = req.headers['x-mm-request-uri'];
//创建验证字符串
const prehashedSignature =
“$ {process.env.WEBHOOK_SECRET}
$ {mmTimestamp}
帖子
$ {url}
$ {JSON.stringify(身体)}';
//使用Webhook Secret创建HMAC
Const hmac = crypto。createHmac (sha256, process.env.WEBHOOK_SECRET);
const generatedSignature = hmac.update(prehashhedsignature).digest('十六进制');
if (generatedSignature !== mmSignature) {
返回res.status(403)。send('签名不匹配');
}
next ();
}
app.use (validateMMSignature);
- 创建您的自定义端点!
App.post ('/', (req, res) => {
res.status(200)。发送(后收到的);
});app.post('/doSomeStuff', (req, res) => {
Const data = req.body.workflow;
sendMessage (data.message);
res.status(200)。发送(“信息”);
});
完整的示例
Const express = require('express');//快速web服务器
const bodyParser = require('body-parser');// json解析器
Const dotenv = require('dotenv');//提供访问环境变量
Const crypto = require('crypto');
dotenv.config ();
Const app = express();
app.use (bodyParser.json ());
函数validateMMSignature(req, res, next) {
const mmSignature = req.headers['x-mm-signature'];
const mmTimestamp = req.headers['x-mm-timestamp'];
Const uri = req.headers['x-mm-request-uri'];
//创建验证字符串
const prehashedSignature =
“$ {process.env.WEBHOOK_SECRET}
$ {mmTimestamp}
帖子
$ {url}
$ {JSON.stringify(身体)}';
//使用Webhook Secret创建HMAC
Const hmac = crypto。createHmac (sha256, process.env.WEBHOOK_SECRET);
const generatedSignature = hmac.update(prehashhedsignature).digest('十六进制');
if (generatedSignature !== mmSignature) {
返回res.status(403)。send('签名不匹配');
}
next ();
}
app.use (validateMMSignature);
App.post ('/', (req, res) => {
res.status(200)。发送(后收到的);
});
const port = process.env.PORT || 3000;
App.listen (port, () => {
console.log(' Webhook消费者在http://localhost:${port}收听');
});
有问题吗?
联系我们的支持团队Support@machinemetrics.com.
评论
0评论
请登录留下评论。