errnesto / kirby-plugin-webhooks

Kirby 插件,用于注册基于 Kirby 钩的自定义 webhook

安装次数: 1,018

依赖者: 0

推荐者: 0

安全: 0

星标: 12

关注者: 3

分支: 1

开放问题: 3

类型:kirby-plugin

1.0.0 2020-02-17 00:21 UTC

This package is not auto-updated.

Last update: 2024-09-24 21:59:58 UTC


README

这是一个简单的插件,允许您配置自定义 webhook。webhook 由 Kirby 钩事件触发。

替代方案

https://github.com/pju-/kirby-webhook-field

安装

下载

下载并将此存储库复制到 /site/plugins/webhooks

Git 子模块

git submodule add https://github.com/errnesto/kirby-plugin-webhooks.git site/plugins/webhooks

Composer

composer require errnesto/kirby-plugin-webhooks

设置

此插件会在 Kirby 的 site 对象中查找 webhook 配置。因此,要创建 webhook,您只需编辑 content/site.txt 文件。

Webhooks:

-
  url: >
    https://webhook.site/74a7ed53-7091-4871-a1d7-749417b24269
  payload: '{"secret":"123"}'
  triggers: page.create:after, page.update:after

配置必须存储在 Webhooks 键下作为 YAML 数组。
每个 webhook 需要以下选项

  • url: 当触发 Kirby 钩时需要发布的 URL
  • payload: POST 请求的主体
  • triggers: 以逗号分隔的 kirby 钩 列表

在面板中编辑 webhook 的蓝图可能如下所示

webhooks:
  label: Webhooks
  type: structure
  fields:
    url:
      label: URL
      type: url
    payload:
      label: Payload
      type: text
    triggers:
      label: Triggers
      type: tags

选项

您可以使用自己的函数自定义插件发送的请求。
每个函数都会收到以下参数

  • $trigger: 导致 webhook 被调用的钩子的名称
  • $webhook: 从 site 对象中读取的 webhook。 (这将包括您定义的任何字段)
  • ...$params: 从 kirby 钩 中的所有参数。

您可以通过在 /site/config/config.php 中返回它们来设置以下所有选项

getURL()

// default:
return [
  'errnesto.webhooks.getURL' => function ($trigger, $webhook, ...$params) {
    return $webhook['url'];
  }
];

getHeader()

return [
  // default:
  'errnesto.webhooks.getHeader' => function ($trigger, $webhook, ...$params) {
    return "Content-type: application/json\r\n";
  }
];

getMethod()

return [
  // default:
  'errnesto.webhooks.getMethod' => function ($trigger, $webhook, ...$params) {
    return "POST";
  }
];

getPayload()

return [
  // default
  'errnesto.webhooks.getPayload' => function ($trigger, $webhook, ...$params) {
    return $webhook['payload'];
  },
];

待办事项

  • 添加自定义面板视图并将 webhook 存储在别处?
  • getURL 返回 null 应跳过钩子而不会导致错误
  • 选项使钩子非阻塞?

许可

MIT