Skip to content

通知渠道 ​

notify 插件通过自己的服务发送 Nginx UI 的通知:聊天服务、推送网关、告警系统。它的渠道会出现在内置通知渠道旁边。用户只需配置一次渠道,之后每当有通知路由到该渠道,Nginx UI 就会调用插件。

方法必需用途
notify.send是发送一条通知。
notify.validate否在不发送任何内容的情况下检查渠道配置。

notify 能力不是 notify 权限:后者允许插件用 host.notify 在 Nginx UI 中发出通知。notify 插件接收 notify.send 不需要任何权限,但由于它要与外部服务通信,应请求 network。

声明渠道 ​

json
"capabilities": ["notify"],
"permissions": ["network"],
"notify": {
  "channels": [
    {
      "code": "mychat",
      "name": "MyChat",
      "configuration": {
        "fields": [
          { "key": "webhook_url", "display_name": "Webhook URL", "required": true },
          { "key": "token", "display_name": "Token", "help_text": "Bot token of the workspace", "required": true, "secret": true },
          { "key": "mention_all", "type": "bool", "display_name": "Mention everyone on errors" }
        ]
      }
    }
  ]
}
字段必填含义
code是渠道的标识,参见命名规则。在清单内唯一。
name是渠道名称。
configuration.fields否渠道表单的字段。

配置表单 ​

渠道、健康检查类型、存储后端、部署目标、封禁列表来源和发现提供方都用同样的 configuration.fields 描述表单:

字段必填含义
key是值在 config 中的键。不能为空,在表单内唯一。
type否text(默认)、textarea、number 或 bool。
display_name是字段标签。
help_text否字段下方的说明。
required否该字段为空时 Nginx UI 不会保存配置。
secret否凭据:遮蔽显示,从不记录。

每个值都以字符串的形式出现在 config 中:数字为十进制文本,例如 "30",bool 为 "true" 或 "false"。空字段可能不存在。Nginx UI 会加密保存配置。

注意

请把 config 中的每个值都当作机密,而不仅仅是 secret 字段:Webhook 地址中常常包含令牌。

发送 ​

json
{
  "jsonrpc": "2.0", "id": 30, "method": "notify.send",
  "params": {
    "channel": "mychat",
    "config": { "webhook_url": "https://chat.example/hooks/xxx", "token": "tok_live_xxx" },
    "title": "Certificate Expiring Soon",
    "content": "Certificate example.com expires in 7 days.",
    "severity": "warning"
  }
}
字段含义
channel渠道的 code。
config渠道表单的值。
title、content通知内容,已翻译成渠道的语言。纯文本:请按服务自己的格式进行转义。
severityinfo、success、warning 或 error。未知的值按 info 处理。

服务接受消息后回复 {}。失败时,原因在于配置(令牌已吊销、地址错误)则回复 -32003 和 data.field,否则回复 -32000。Nginx UI 不会重试:这条通知仍然显示在 Nginx UI 中,也仍会通过其他渠道发送。notify.send 最多等待 30 秒。

校验 ​

json
{ "jsonrpc": "2.0", "id": 33, "method": "notify.validate", "params": { "channel": "mychat", "config": { "webhook_url": "not a url" } } }

在不发送任何内容、不访问服务的情况下检查配置。对第一个缺失或格式错误的字段回复带 data.field 的 -32003,否则回复 {}。创建或修改渠道时 Nginx UI 会调用它,并且不会保存被它拒绝的配置。没有实现这个方法的插件回复 -32002,视为没有异议。

Released under the AGPL-3.0 License. (350eea3f)