Webhook
Webhook 类似于一种通知机制,可用于构建与 CKEditor 云服务的集成。当指定事件触发时,CKEditor 云服务会向配置的 URL 发送 HTTP POST
请求。
Webhook 可用于 CKEditor 云服务与另一个系统之间的数据同步,或用于构建通知系统。例如,借助 Webhook,系统可以通过电子邮件通知用户文档中的更改。
# 使用 Webhook 的优势
在将应用程序与 CKEditor 协作服务器集成时使用 Webhook,可以使集成更加可靠。您的应用程序仅在需要时才向 CKEditor 协作服务器发送请求,无需任何定期请求。这将限制两个服务器之间的传输量和实现复杂性,因为 Webhook 基于 REST API 端点。Webhook 在特定事件发生后几乎立即被调用。
# 示例
# 评论同步
使用 Webhook 的一种方法是将评论与您的服务器同步。应用程序可以注册与评论相关的事件,并根据 Webhook 事件负载中包含的数据,在外部数据库中添加、删除和更新评论。
# 评论通知
Webhook 在另一个情况下也很有用,即编辑需要了解文档中新评论的情况。应用程序可以注册 comments.added
Webhook 事件,并在处理它后,可以使用任何外部服务提供商发送电子邮件。
# 保存文档
使用 Webhook 和 REST API 保存文档的示例在初始化和保存文档指南中进行了描述。
# 用户访问监控
可能需要接收有关谁在何时连接到文档的信息。使用 user.connected
和 user.disconnected
事件可以轻松实现。您的应用程序可以收集有关谁、何时以及访问文档多长时间的信息。
# 安全
从 CKEditor 云服务发送到配置的 Webhook URL 的每个 Webhook 请求都包含签名和时间戳。因此,可以检查和确认服务器收到的每个请求都来自 CKEditor 云服务,并且没有被修改过。
有关签名请求的验证过程的更多信息,请参阅请求签名指南。
# Webhook 顺序
请注意,Webhook 事件是异步发送的。因此,您不应依赖接收事件的顺序。
如果要执行的操作对顺序敏感,则应在处理事件的端点添加另一层验证。
# Webhook 格式
CKEditor 云服务发送的每个 Webhook 请求都具有以下属性
event
– 触发 Webhook 的事件名称。environment_id
– 环境 ID。sent_at
– 发送指定 Webhook 的日期。payload
– Webhook 的负载。它包含有关特定事件的数据。
# 示例
以下是一个 CKEditor 云服务发送的示例 Webhook 请求。它由用户 ID 为 user-1
的用户在文档 ID 为 doc-1
的文档中添加评论线程 thread-1
中的评论所触发。
{
"event": "comment.added",
"environment_id": "environment-1",
"payload": {
"document": {
"id": "doc-1"
},
"comment": {
"id": "comment-1",
"created_at": "2019-05-29T08:17:53.450Z",
"content": "Some comment content.",
"thread_id": "thread-1",
"user": {
"id": "user-1"
}
}
},
"sent_at": "2019-05-29T08:17:53.457Z"
}
# 示例
对于通过 collaboration.document.exported
Webhook 接收文档并将其存储在外部数据库中的机制,应该将负载中 document.removed_at
字段与先前事件的日期进行比较。这将在接收事件顺序更改的情况下确保应用程序安全,并且当前文档将被来自接收事件顺序后的最新版本的旧版本覆盖。如果 document.removed_at
早于数据库中已存储的日期,则应跳过保存文档。
这有助于您避免数据库中文档状态之间出现不一致。