waldhacker / hooky
TYPO3 扩展,用于配置各种事件发送的 webhooks。
Requires
- php: ^8.0.0 | ^8.1.0
- enqueue/dbal: ^0.10.15
- typo3/cms-backend: ^11.5@dev || ^12.0.x-dev
- typo3/cms-core: ^11.5@dev || ^12.0.x-dev
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- overtrue/phplint: ^2.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: *
- roave/security-advisories: dev-latest
- typo3/cms-extensionmanager: @dev
- typo3/cms-install: @dev
- typo3/coding-standards: ^0.4.0
- vimeo/psalm: ^3.0 | ^4.0
This package is auto-updated.
Last update: 2024-05-12 18:44:57 UTC
README
为 TYPO3 中的任何事件发送 webhooks - 使其能够与 automate.io、Zapier 等第三方服务一起使用。
安装
此扩展仅作为 composer 包提供,因为它使用了 enqueue 包来处理消息队列,该包作为 composer 依赖项安装。
composer req waldhacker/hooky
配置
该扩展包含一个自定义的后端模块,允许创建新的 webhooks。默认情况下,它知道两种类型的事件 - 记录更新或创建 - 并将原始数据作为消息体发送。在大多数情况下,您将想要使用自定义事件 - 请参阅下面的说明。
输入目标 URL 和(可选)webhook 的密钥,并选择要监听的事件。
使用以下两个命令(理想情况下通过调度程序、cron 或 system.d 定期运行)来触发消息队列的处理和消息发送:
./bin/typo3 hooky:hooks:queue
- 将检查是否有配置了事件的钩子,并为每个配置的钩子排队一条消息。./bin/typo3 hooky:hooks:send
- 将处理队列并发送钩子请求
钩子签名
钩子请求使用配置的密钥进行签名,该密钥以 base64 编码的形式发送到头文件 X-TYPO3-HookSignature
。为了在接收端验证内容,创建到达内容的哈希并与头文件进行比较。
示例:hash_hmac('sha256', $content, $secret)
使用自定义事件
触发钩子的事件需要满足两个要求:
- 它需要实现接口
JsonSerializable
- 它需要在 DI 配置中标记为可钩子的事件
由 jsonSerialize 返回的数据将是 webhook 消息体中的数据。
DI 配置看起来如下 - 以下是从此扩展直接取出的示例
Waldhacker\Hooky\Events\RecordUpdatedEvent: tags: - name: hooky.hookable label: 'LLL:EXT:hooky/Resources/Private/Language/hooky.xlf:event.recordUpdated.label' description: 'LLL:EXT:hooky/Resources/Private/Language/hooky.xlf:event.recordUpdated.description'
标签和描述将在 TYPO3 后端选择 webhook 配置中的事件时显示。
在许多情况下,您可能需要实现一个事件监听器以响应 TYPO3 核心事件,并让该事件监听器分发您的自定义事件,该事件是可钩子和可序列化的。例如:您可以为文件上传事件添加事件监听器,并通过 webhook 自动通知外部图像服务。