WebHooks
什么是 Webhook?#
在 ArcBlock 的 Blocklet 生态系统中,Webhook 是一种强大的机制,能让您的 Blocklet 平台中发生的事件。
想象一下,传统方式下,您需要不断地 "询问" Blocklet 有没有新的数据或事件发生。这就像您不停地刷新网页查看是否有新邮件。而 Webhook 则完全不同:它像一个"智能通知",当特定事件发生时,Blocklet 会发出特定的事件访问你配置的 URL,其中包含了事件的详细数据。这就像邮件服务在收到新邮件时,立即向您的手机发送推送通知一样,高效而及时。
Webhook 的应用场景极为广泛,它能让您的 Blocklet 与其他服务无缝连接,实现智能自动化:
- 当 Discuss Kit Blocklet 发布新内容时,您的 Blocklet 能立即捕获此发布事件。
- 当 Vote Blocklet 完成投票时,您的 Blocklet 能实时接收投票创建情况。
- 您甚至可以定义自己的自定义事件,让您的 Blocklet 能够对外发布通知。
创建 Webhook 时,您只需指定一个 URL,并订阅您希望监听的 Blocklet 上发生的特定事件。一旦这些事件被触发,Blocklet Service 就会向您指定的 URL 发送一个包含事件相关数据的 HTTP 请求。如果您的服务器已配置为监听该 URL 上的 Webhook 请求,它就可以在收到这些请求时立即采取行动。
如何注册事件#
在 Blocklet 中,您通常不会直接在 blocklet.yml
中注册”Webhook 的事件。相反,blocklet.yml
主要用于定义 Blocklet 的元数据、配置和能力。用于被 Blocklet Service 发现需要监听的事件。具体文档参考 。
要让您的 Blocklet 的事件能够被 Webhook 捕获,您需要:
- 了解并配置 Event Bus Service: 这是关键的一步。请务必参阅 https://www.arcblock.io/content/docs/blocklet-developer/en/event-bus-service 以了解其工作原理和配置方法。只有将事件正确地发布到事件总线,它们才能被 Webhook 发现。
- 在 Blocklet Service 中创建 Webhook:
- 登录您的 Blocklet Service 管理界面。
- 导航到 Webhook 配置部分。
- 在这里,您将能够发现 Blocklet Service 通过 Event Bus 暴露的可用事件列表(例如
vote.published
、discuss.published
或您自定义的事件)。 - 选择您需要捕获的事件。
- 指定当这些事件触发时,Webhook 将把数据触发哪个 URL
使用流程示例#
以下是一个简化的示例,展示了如何配置 Webhook,以便在 vote.published
事件发生时,向 Slack 发送通知:
- 完成 Event Bus Service 配置:
- 确保您的投票 Blocklet 已正确配置并正在向 Event Bus Service 发布
vote.published
事件。 - 请参考 https://www.arcblock.io/content/docs/blocklet-developer/en/event-bus-service 进行设置。
- 确保您的投票 Blocklet 已正确配置并正在向 Event Bus Service 发布
- 创建 Webhook:
- 在 Blocklet Service 的 Webhook 管理界面中,点击 "创建新 Webhook"。
- 在事件列表中,找到并选择您希望捕获的事件,例如
vote.published
。 - 在 "URL" 字段中,输入您的 Slack Incoming Webhook URL(这是 Slack 为您提供的特定于频道的 Webhook 地址) / 任何hook 接口。
- 配置完成,实时通知:
- 完成创建后,当您的投票 Blocklet 中有新的投票发布(即
vote.published
事件被触发)时,Blocklet Service 会自动向您配置的 Slack URL 发送一个 HTTP 请求。 - Slack 将接收到这个请求中的数据,并根据您的 Slack Webhook 配置,在指定的频道中显示通知。
- 完成创建后,当您的投票 Blocklet 中有新的投票发布(即