当前位置: 首页 > article >正文

如何使用Webhook触发器,在 ONLYOFFICE 协作空间构建智能工作流

在数字化办公中,ONLYOFFICE 协作空间作为一款功能强大的文档协作平台,提供了丰富的自动化功能。对于开发者而言,Webhook 触发器是实现业务流程自动化与系统集成的关键工具。本文将深入探讨如何在 ONLYOFFICE 协作空间中高效利用 Webhook,实现智能工作流。

什么是 ONLYOFFICE 协作空间

ONLYOFFICE 协作空间供了一个基于房间的文档协作环境,让您在专用空间中存储和管理个人文档,旨在提升办公文档和其他内容的协作效率,让用户能够与同事、客户、合作伙伴、承包商、赞助商等多方人员顺畅协作。设置灵活的访问权限和用户角色设置,可支持用户对整个或单独房间的访问权限调整。开发者版本更是支持集成至您品牌下的商业软件和服务器,帮您定制扩展功能。

什么是开发者版 ONLYOFFICE 协作空间?无缝集成至您的软件和服务器

什么是 Webhook

Webhook 是一种灵活的“回调”机制,基于 HTTP/HTTPS 协议,可在特定事件发生时触发。它能够将信息传递给外部服务,实现不同系统间的无缝对接与联动。Webhook 可以用于以下核心场景

  1. 数据实时同步:在多系统协同办公场景下,Webhook 可以将协作空间中的文件状态、用户信息等数据实时更新至其他业务系统,如项目管理工具或客户关系管理系统,消除数据孤岛。

  2. 自动化业务流程:当特定文件夹内上传新文件时,自动触发外部脚本进行内容审核、格式转换或备份操作;新用户注册协作空间时,同步在企业内部通讯录或权限管理系统中创建对应账号。

  3. 监控与警报:结合监控平台,利用 Webhook 在文件删除、权限变更等敏感操作发生时发送通知,及时发现并处理潜在风险。

在协作空间中设置Webhook

1. 创建 Webhook

登录ONLYOFFICE协作空间,找到开发者工具,进入 Webhook 设置界面。

注:管理员既可以使用左侧的开发者工具链接,也可以通过点击左下角的选项图标菜单,选择设置 -> 开发者工具选项,切换到此部分。

点击创建 Webhook,开始创建新的 Webhook 触发器,并设置以下参数:

  • Webhook名称:便于管理的标识名称。

  • Payload URL:Webhook 发送到的端点地址,必须对HEAD方法的HTTP请求响应200状态。

  • 密钥:用于验证发送到 Payload URL 的请求。输入自己的密钥或点击生成。

  • SSL验证:默认启用,不建议禁用。

  • 触发器:选择特定事件或发送所有内容。

  • 目标ID:标识用户、组、文件或文件夹,以便跟踪对象的更改。

根据设置,创建的 Webhook 将被分配给所有协作空间事件或仅选定的触发器 / 多个触发器。您将在外部服务中收到有关协作空间事件的自动通知。在创建特定 Webhook 时选择的触发器仅在 Webhook 所有者有权访问修改后的协作空间实体时才会被触发。 

2. 管理Webhook

  • 使用切换开关禁用或重新启用 Webhook。

  • 使用选项图标更改设置、查看历史记录或删除 Webhook。

  • 查看历史记录时,可以通过交付日期或状态筛选 Webhook,并使用重试选项重新传递选定的 Webhook 。

3. 验证请求真实性

Webhook 收到请求时,需验证其真实性,防止恶意调用。协作空间采用密钥签名机制保障数据安全。例如,在 Node.js 中,可以通过以下代码验证签名:

const crypto = require('crypto');function getSecretHash(secretKey, body) {const hasher = crypto.createHmac('sha256', Buffer.from(secretKey, 'utf8'));hasher.update(Buffer.from(body, 'utf8'));return hasher.digest('hex').toUpperCase();
}

密匙包含在 x-docspace-signature-256 标头中:

{"Accept": ["*/*"],"x-docspace-signature-256": ["sha256=0D4C9D09136103625379E0BC3AA6084E941EA2F2901A2C94FACEFE3A7F9688F3"]
}

通过对比计算出的签名与接收到的签名,可精准判断请求是否来自可信的源头。

4. Webhook请求与响应机制

Webhook 请求体承载关键信息:

  • 触发器详情 :明确告知是何种事件引发此次数据发送,例如具体是哪个文件被上传或哪个用户被创建等。

  • 上下文信息 :涵盖 Webhook 执行时所处的环境数据,如当前用户身份、时间戳等,为后续处理提供丰富背景。

  • 实体匿名数据 :对被修改实体(文件、文件夹、用户等)进行匿名化处理后的数据,既保证数据可用性,又兼顾隐私安全。

若请求初次失败,ONLYOFFICE 协作空间会启动重试机制,最多尝试5次。重试间隔遵循2的尝试次数次方秒规则。每次重试,请求体都会补充如下信息:

  • retryCount :已尝试发送的次数。

  • retryOn :本次重试的时间戳。

  • lastFailureOn :上一次请求失败的具体时间。

  • lastFailureContent :上次失败的详细错误内容。

  • lastSuccessOn :该 Webhook 最近一次成功请求的时间。

此外,若响应返回 410 Gone 状态码,协作空间会自动移除对应 Webhook;若 5 次重试均失败且距离上次成功请求超三天,则会禁用该 Webhook,避免无效请求持续占用资源。

对于 Webhook 响应,协作空间要求相对宽松。响应体只需符合数据库文本大小限制,且无需签名。

5. Webhook队列处理

所有新创建的 Webhook 会被添加至队列,系统每5秒检查一次待处理队列,并最多启动10个线程并行发送 Webhook。这意味着多个 Webhook 可同时处理,但发送顺序可能与事件发生顺序存在差异,开发者在设计业务逻辑时需考虑这一特性,确保流程的正确性与稳定性。

6. 测试Webhook

要测试 Webhook 的运行,可以使用第三方服务。 例如,您可以从 Webhook.site 服务获取一个唯一 URL,并在创建网络钩子时在有效 Payload URL 字段中指定该 URL。 在门户网站上执行触发器时,将向指定地址发送请求,请求中的信息将显示在网站界面上。

立即在 ONLYOFFICE 中使用 Webhook

欢迎在评论区分享您的使用经验或建议。如果您尚未尝试,希望本文的介绍能为您提供一些参考。您可以通过下方链接访问我们的官网,亲自体验一下这一功能,更多高效的应用技巧期待您来探索!

相关文章:

如何使用Webhook触发器,在 ONLYOFFICE 协作空间构建智能工作流

在数字化办公中,ONLYOFFICE 协作空间作为一款功能强大的文档协作平台,提供了丰富的自动化功能。对于开发者而言,Webhook 触发器是实现业务流程自动化与系统集成的关键工具。本文将深入探讨如何在 ONLYOFFICE 协作空间中高效利用 Webhook&…...

跟我学c++中级篇——理解类型推导和C++不同版本的支持

一、类型推导 在前面反复分析过类型推导(包括前面提到的类模板参数推导CTAD),类型推导其实就是满足C语言这种强类型语言的要求即编译期必须确定对象的数据类型。换一句话说,理论上如果编译器中能够自动推导所有的相关数据类型&am…...

什么是DevOps智能平台的核心功能?

在数字化转型的浪潮中,DevOps智能平台已成为企业提升研发效能、加速产品迭代的核心工具。然而,许多人对“DevOps智能平台”的理解仍停留在“自动化工具链”的表层概念。今天,我们从一个真实场景切入:假设你是某互联网公司的技术负…...

Windows账户管理,修改密码,创建帐户...(无需密码)

前言 我们使用wWindows操作系统时,账户是非常重要的概念 它不仅能够帮助我们区分文档主题权限等等 嗯还有最重要的解锁电脑的作用! 但想要管理他,不仅需要原本的密码,而且设置中的管理项也非常的不全。 Windows有一款netplwi…...

软件功能模块归属论证方法

文章目录 **一、核心设计原则****二、论证方法****三、常见决策模式****四、验证方法****五、反模式警示****总结** 在讨论软件功能点应该归属哪些模块时,并没有放之四海而皆准的固定方法,但可以通过系统化的论证和设计原则来做出合理决策。以下是常见的…...

【Java后端基础 005】ThreadLocal-线程数据共享和安全

📚博客主页:代码探秘者 ✨专栏:文章正在持续更新ing… ✅C语言/C:C(详细版) 数据结构) 十大排序算法 ✅Java基础:JavaSE基础 面向对象大合集 JavaSE进阶 Java版数据结构JDK新特性…...

【C语言】C语言经典小游戏:贪吃蛇(下)

文章目录 一、游戏前准备二、游戏开始1、游戏开始函数(GameStart)1)打印欢迎界⾯(WelcomeToGame)2)创建地图(CreateMap)3)初始化蛇⾝(InitSnake)4…...

NTT印地赛车:数字孪生技术重构赛事体验范式,驱动观众参与度革命

引言:数字孪生技术赋能体育赛事,开启沉浸式观赛新纪元 在传统体育赛事观赛模式遭遇体验天花板之际,NTT与印地赛车系列赛(NTT INDYCAR SERIES)的深度合作,通过数字孪生(Digital Twin&#xff09…...

30.【新型数据架构】-区块链数据架构

30.【新型数据架构】-区块链数据架构:分布式账本,不可篡改性,用于数据溯源 一、区块链数据架构的本质:分布式账本的革新 区块链的核心是分布式账本技术(Distributed Ledger Technology, DLT),它颠覆了传统中心化数据库的架构模式: 去中心化存储: 账本数据不再集中存储…...

使用docker 安装Redis 带配置文件(x86和arm)版本

一、安装redis 1.1 拉去ARM镜像(7.4.2) docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/linux_arm64_redis:latest1.2 拉去x86镜像(8.0.1)版本 docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/redis:latest新建文件夹 mkd…...

在CSDN发布AWS Proton解决方案:实现云原生应用的标准化部署

引言:云原生时代的部署挑战 在云原生应用开发中,基础设施管理的复杂性已成为团队面临的核心挑战。随着微服务架构的普及,每个服务可能包含数十个AWS资源(如Lambda、API Gateway、ECS集群等),传统的手动配置…...

小白的进阶之路系列之十----人工智能从初步到精通pytorch综合运用的讲解第三部分

本文将介绍Autograd基础。 PyTorch的Autograd特性是PyTorch灵活和快速构建机器学习项目的一部分。它允许在一个复杂的计算中快速而简单地计算多个偏导数(也称为梯度)。这个操作是基于反向传播的神经网络学习的核心。 autograd的强大之处在于它在运行时动态地跟踪你的计算,…...

[蓝桥杯]整理玩具

整理玩具 题目描述 小明有一套玩具,一共包含 NMNM 个部件。这些部件摆放在一个包含 NMNM 个小格子的玩具盒中,每个小格子中恰好摆放一个部件。 每一个部件上标记有一个 0 ~ 9 的整数,有可能有多个部件标记相同的整数。 小明对玩具的摆放有…...

C++11 Move Constructors and Move Assignment Operators 从入门到精通

文章目录 一、引言二、基本概念2.1 右值引用(Rvalue References)2.2 移动语义(Move Semantics) 三、移动构造函数(Move Constructors)3.1 定义和语法3.2 示例代码3.3 使用场景 四、移动赋值运算符&#xff…...

JavaScript 中的单例内置对象:Global 与 Math 的深度解析

JavaScript 中的单例内置对象:Global 与 Math 的深度解析 在 JavaScript 的世界中,单例内置对象是开发者必须了解的核心概念之一。它们是语言规范中预定义的对象,无需显式创建即可直接使用。本文将深入解析 JavaScript 中最重要的两个单例内…...

11 - ArcGIS For JavaScript -- 高程分析

这里写自定义目录标题 描述代码实现结果 描述 高程分析是地理信息系统(GIS)中的核心功能之一&#xff0c;主要涉及对地表高度数据(数字高程模型, DEM)的处理和分析。 ArcGIS For JavaScript4.32版本的发布&#xff0c;提供了Web端的针对高程分析的功能。 代码实现 <!doct…...

通道注意力

一、 什么是注意力 其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器&#xff0c;就像人类视觉会自动忽略背景&#xff0c;聚焦于图片中的主体&#xff08;如猫、汽车&#xff09;。 transformer中的叫做自注意力机制&#xff0c;他是一种自己学习自己的机制…...

2048游戏的技术实现分析-完全Java和Processing版

目录 简介Processing库基础项目构建指南项目结构核心数据结构游戏核心机制图形界面实现性能优化代码详解设计模式分析测试策略总结与展望简介 2048是一款由Gabriele Cirulli开发的经典益智游戏。本文将深入分析其Java实现版本的技术细节。该实现使用了Processing库来创建图形界…...

全国县域统计年鉴PDF-Excel电子版-2022年

全国县域统计年鉴PDF-Excel电子版-2022年.ziphttps://download.csdn.net/download/2401_84585615/89784662 https://download.csdn.net/download/2401_84585615/89784662 《中国县域统计年鉴》是一部全面反映中国县域社会经济发展状况的资料性年鉴。自2014年起&#xff0c;该年…...

平滑技术(数据处理,持续更新...)

一.介绍 “平滑”是一种用于减少数据中的短期波动、噪声或者异常值的技术&#xff0c;从而更清晰地揭示数据的长期趋势或周期性特征。 平滑的主要作用&#xff1a; 1.减少噪声。数据中常常包含各种随机噪声或误差&#xff0c;这些误差可能会掩盖数据的真实趋势。平滑可以降低…...

App 上线后还能加固吗?iOS 应用的动态安全补强方案实战分享(含 Ipa Guard 等工具组合)

很多开发者以为 App 一旦上线&#xff0c;安全策略也就定型了。但现实是&#xff0c;App 上线只是攻击者的起点——从黑产扫描符号表、静态分析资源文件、注入调试逻辑&#xff0c;到篡改功能模块&#xff0c;这些行为都可能在你“以为很安全”的上线版本里悄然发生。 本篇文章…...

gitlab CI/CD本地部署配置

背景: 代码管理平台切换为公司本地服务器的gitlab server。为了保证commit的代码至少编译ok&#xff0c;也为了以后能拓展test cases&#xff0c;现在先搭建本地gitlab server的CI/CD基本的编译job pipeline。 配置步骤&#xff1a; 先安装gitlab-runner: curl -L "ht…...

AI大模型在测试领域应用案例拆解:AI赋能的软件测试效能跃迁的四大核心引擎(顺丰科技)

导语 5月份QECon深圳大会已经结束&#xff0c;继续更新一下案例拆解&#xff0c;本期是来自顺丰科技。 文末附完整版材料获取方式。 首先来看一下这个案例的核心内容&#xff0c;涵盖了测四用例设计、CI/CD辅助、测试执行、监控预警四大方面&#xff0c;也是算大家比较熟悉的…...

从零搭建uniapp项目

目录 创建uni-app项目 基础架构 安装 uni-ui 组件库 安装sass依赖 easycom配置组件自动导入 配置view等标签高亮声明 配置uni-ui组件类型声明 解决 标签 错误 关于tsconfig.json中提示报错 关于非原生标签错误&#xff08;看运气&#xff09; 安装 uview-plus 组件库…...

数据库密码加密

数据库密码加密 添加jar包构建工具类具体使用优缺点 添加jar包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>构建工具类 public class PasswordUtil …...

GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一

&#x1f4d8; GaLore&#xff1a;基于梯度低秩投影的大语言模型高效训练方法详解 一、论文背景与动机 随着大语言模型&#xff08;LLM&#xff09;参数规模的不断增长&#xff0c;例如 GPT-3&#xff08;175B&#xff09;、LLaMA&#xff08;65B&#xff09;、Qwen&#xff…...

OpenCV CUDA模块图像处理------图像融合函数blendLinear()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 该函数执行 线性融合&#xff08;加权平均&#xff09; 两个图像 img1 和 img2&#xff0c;使用对应的权重图 weights1 和 weights2。 融合公式…...

Linux服务器如何安装wps?

1.到wps官网 https://www.wps.cn/product/wpslinux 2.到安装目录上执行命令 sudo dpkg -i wps-office*.deb 3.启动wps 在终端中输入 wps 命令即可启动 WPS...

图片压缩工具 | 图片生成PDF文档

OPEN-IMAGE-TINY&#xff0c;一个基于 Electron VUE3 的图片压缩工具&#xff0c;项目开源地址&#xff1a;https://github.com/0604hx/open-image-tiny ℹ️ 需求描述 上一版本发布后&#xff0c;有用户提出想要将图片转换&#xff08;或者说生成更为贴切&#xff09;PDF文档…...

Python的浅拷贝与深拷贝

一、浅拷贝 浅拷贝&#xff0c;指的是重新分配一块内存&#xff0c;创建一个新的对象&#xff0c;但里面的元素是原对象中各个子对象的引用。 浅拷贝有几种方法&#xff1a; 1、 使用数据类型本身的构造器 list1[1,2,3]list2 list(list1) # 使用了数据类型本身的构造器 list…...