guideWebhook

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.connecteduser.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 早于数据库中已存储的日期,则应跳过保存文档。

这有助于您避免数据库中文档状态之间出现不一致。

# 下一步