跳到主要内容

指南

设置 Webhook

自动化与集成 · 阅读约 4 分钟

每当社区里发生某件事(例如有新成员加入或收到一笔付款),Webhook 就会从 Mateflow 向你控制的 URL 发送一个 HTTPS 请求。你可以用 Webhook 让 CRM、邮件工具或你自己的应用保持同步。Webhook 在后台 → 设置 → 集成 → Webhook 中设置。

谁可以操作:所有者和管理员。 · 在哪里:网页端(站点后台)。 · 套餐:能否使用 Webhook、可以创建多少个,取决于你的平台套餐。

创建 Webhook 端点

  1. 前往后台 → 设置 → 集成,打开 Webhook 标签页。
  2. 点击添加 Webhook。
  3. 输入名称(少于 100 个字符)和端点 URL。URL 必须使用 HTTPS。
  4. 可选但推荐:在密钥 (可选) 下,点击生成按钮(生成密钥),然后复制密钥,供你的服务器使用。参见下文的签名部分。
  5. 在订阅事件下,勾选要发送的事件。勾选某个分类名称,即可选中该分类下的所有事件。
  6. 保持是否激活开启,让 Webhook 开始接收事件。
  7. 点击创建 Webhook。

如果添加 Webhook 按钮显示升级提示,说明你的套餐不包含 Webhook,或者你已达到套餐的 Webhook 数量上限。参见查看套餐用量和限制。

可以订阅的 Webhook 事件

分类 事件
会员 会员加入、角色变更、会员被封禁(成员被停用或封禁时都会发送)、会员被恢复、会员加入访问组、会员移出访问组
内容 发布帖子、发表评论、删除帖子、删除评论
支付 收到付款、扣款失败、订阅创建、订阅续费、订阅取消、已退款

较早创建的 Webhook 可能会显示已不再提供的事件。你可以移除它们,但不能再添加回来。

访问组 Webhook 事件的工作方式

会员加入访问组和会员移出访问组(访问组以前叫会员等级)会在成员所属的组真正发生变化时触发。每个事件对应一位成员和一个组,包含成员的用户名和邮箱、组的名称,以及引起变化的原因:管理员、会员订阅、邀请、默认访问组,或组被删除。

  • 在会员加入之前不会发送任何访问组事件,所以新成员注册时获得的默认组不会触发事件,成员等待审批期间的变化也不会。
  • 删除一个访问组时,会为每位属于该组的成员各发送一个移出事件。这些事件,以及设置默认组引起的事件,可能会晚几分钟到达。
  • 移除由会员订阅授予的组时,会先发送一个移出事件,再发送一个加入事件,因为会员订阅会立即把这个组加回来。参见为成员添加或移除访问组。

用签名密钥验证 Webhook 签名

Webhook 设置了密钥时,Mateflow 会用 HMAC-SHA256 为每个请求签名,让你的服务器可以确认请求来自 Mateflow 且未被篡改(签名验证)。每个请求都带有两个请求头:

  • X-Mateflow-Timestamp:请求发送的时间,以 Unix 秒表示。
  • X-Mateflow-Signature:sha256= 后面跟着十六进制编码的签名。

在服务器上验证请求:

  1. 在解析 JSON 之前,按收到时的原样读取原始请求体。
  2. 拼出被签名的字符串:X-Mateflow-Timestamp 的值、一个英文句点(.),再加上原始请求体。
  3. 以你的密钥为 key,计算这个字符串的 HMAC-SHA256,并进行十六进制编码。
  4. 用常量时间比较,将结果与 X-Mateflow-Signature 中 sha256= 之后的部分比较。两者不一致时拒绝这个请求。
  5. 可选:拒绝时间戳已超过几分钟的请求,以防止重放攻击。

在过渡期内,请求还会在 X-Webhook-Secret 请求头中带上密钥本身。请验证签名,而不要依赖这个请求头。

来自自动化规则中触发 Webhook 动作的请求则不同:它们没有签名,规则的密钥会原样放在 X-Webhook-Secret 请求头中发送。参见用规则自动执行任务。

保存后,密钥会被隐藏。编辑 Webhook 时,如果要保留原密钥,请让这个字段留空。要轮换密钥,生成一个新密钥,并同时更新你的服务器。

测试、暂停、编辑或删除 Webhook

在 Webhook 的操作菜单中:

  • 测试 Webhook 会向你的端点发送一个测试请求。
  • 禁用会停止投递,但不删除 Webhook;启用会重新开启它。
  • 编辑可以更改它的名称、URL、密钥或事件。
  • 删除会移除这个 Webhook 及其所有投递日志。此操作无法撤销。

列表会显示每个 Webhook 的状态、最后触发时间,以及成功和失败次数。最近的投递失败时,Webhook 会显示错误状态。

查看 Webhook 的投递和重试

打开投递日志标签页,查看每个请求及其 HTTP 状态、耗时和来源。点击查看详情,可以看到完整的请求负载和响应体。投递日志保留 30 天。

投递失败时,Mateflow 会自动重试,最多 3 次。没有可以手动重新投递的按钮。每次尝试都有单独的一行和一个新的投递 ID,而事件 ID 保持不变,所以事件 ID 相同的几行是对同一个事件的多次尝试。投递可能重复到达,也可能乱序到达,所以请让你的服务器按事件 ID 去重。关于负载字段,请参阅 mateflow.com/developers 上的开发者文档。

相关文章

这篇指南对你有帮助吗?

返回指南列表

找不到所需的内容?

如果你是某个社区的成员,请联系该社区的管理员;如果你正在 Mateflow 上搭建或运营社区,我们的团队可以帮你。

开始免费试用