You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.7 KiB

title description
通知器 为以何种方式向用户发送通知提供的扩展点。

通知器扩展点是用于扩展为 Halo 通知系统提供更多通知方式的扩展点例如邮件、短信、WebHook 等。

public interface ReactiveNotifier extends ExtensionPoint {

    Mono<Void> notify(NotificationContext context);
}

notify 方法用于发送通知参数context 为通知上下文,包含通知的内容、接收者、通知配置等信息。

除了实现该扩展点并声明 ExtensionDefinition 自定义模型对象外,还需要声明一个 NotifierDescriptor 自定义模型对象用于描述通知器,例如:

apiVersion: notification.halo.run/v1alpha1
kind: NotifierDescriptor
metadata:
  name: default-email-notifier
spec:
  displayName: '邮件通知'
  description: '通过邮件将通知发送给用户'
  notifierExtName: 'halo-email-notifier'
  senderSettingRef:
    name: 'notifier-setting-for-email'
    group: 'sender'
  #receiverSettingRef:
  #  name: ''
  #  group: ''
  • notifierExtName 为通知器扩展的自定义模型对象名称
  • senderSettingRef 用于声明通知器的发送者配置例如邮件通知器的发送者配置为SMTP 服务器地址、端口、用户名、密码等,如果没有可以不配置,参考:表单定义
    • name 为发送者配置的名称,它是一个 Setting 自定义模型对象的名称。
    • group 用于引用到一个具体的配置 Schema 组,它是一个 Setting 自定义模型对象中描述的 formSchemagroup,由于 Setting 可以声明多个配置分组但通知器的发送者配置只能有在一个组,因此需要指定一个组。
  • receiverSettingRef 用于声明通知器的接收者配置,例如:邮件通知器的接收者配置为:接收者邮箱地址,如果没有可以不配置,namegroup 配置同 senderSettingRef

当配置了 senderSettingRef 后,触发通知时 notify 方法的 context 参数中会包含 senderConfig 即为发送者配置的值,receiverConfig 同理。

ReactiveNotifier 对应的 ExtensionPointDefinition 如下:

apiVersion: plugin.halo.run/v1alpha1
kind: ExtensionPointDefinition
metadata:
  name: reactive-notifier
spec:
  className: run.halo.app.notification.ReactiveNotifier
  displayName: Notifier
  type: MULTI_INSTANCE
  description: "Provides a way to extend the notifier to send notifications to users."

即声明 ExtensionDefinition 自定义模型对象时对应的 extensionPointNamereactive-notifier

使用案例可以参考:Halo 邮件通知器