返回外挂组件

Webhook 通知

听悦可以在登录、播放、入库和扫描等事件发生时,主动向外部服务发送通知。 每个 Webhook 都能独立设置请求头和 Body 模板,因此既能连接企业微信, 也能连接自建的 ntfy、Gotify 或自动化服务。

按事件推送

每个目标可单独选择登录、播放、媒体库变更、作品变更和扫描完成事件。

自由定义请求

请求头和 Body 都可以使用变量,JSON 模板还支持自动转义。

保存前测试

测试发送会展示 HTTP 状态、服务响应和最终请求体,排错更直接。

1. 创建通知目标

管理员进入 我的 - 设置与管理 - 通知与事件,点击“添加 Webhook”。填写名称和 URL 后,可以从常见模板中选择服务,也可以完全自行编辑。

内置模板

企业微信 Markdown、企业微信文本、ntfy JSON、Gotify JSON、原始事件 JSON 和纯文本。

2. 模板变量

普通变量会原样输出,适合纯文本;JSON 请求体请使用{{json:变量}},它会自动处理引号和换行。

原样输出

{{title}}
{{message}}
{{event}}
{{notification}}
{{data.username}}

JSON 安全输出

{
  "title": {{json:title}},
  "message": {{json:message}},
  "event": {{json:event}}
}

{{notification}} 是“标题 + 换行 + 正文”,{{json:payload}} 会输出完整原始事件。

3. 常见服务配置

企业微信机器人

URL 使用群机器人提供的完整地址,机器人密钥已经包含在 URL 的key参数中。

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=机器人密钥
{
  "msgtype": "markdown",
  "markdown": {
    "content": {{json:notification}}
  }
}

听悦会继续检查企业微信响应里的 errcode,避免 HTTP 200 但消息实际发送失败。

ntfy

JSON 发布模式填写服务根地址,Topic 写在请求体中。私有服务可增加Authorization请求头。

https://ntfy.example.com
{
  "topic": "ting-reader",
  "title": {{json:title}},
  "message": {{json:message}},
  "priority": 3,
  "tags": ["headphones"]
}

Gotify

使用 Gotify Application Token,并将它放在消息接口 URL 中。

https://gotify.example.com/message?token=APPLICATION_TOKEN
{
  "title": {{json:title}},
  "message": {{json:message}},
  "priority": 5
}

4. 自定义请求头

请求头可用于 Bearer Token、Basic Auth 或目标服务的自定义参数。值同样支持模板变量。

Content-Type: application/json
Authorization: Bearer your-token
X-Event: {{event}}

认证 Token 会随请求发送。建议使用 HTTPS,并避免把完整 Token 发布到日志或截图中。

5. 可监听事件

user.login

用户登录

用户登录成功时触发。

playback.play

播放开始

用户开始播放作品或章节时触发。

library.scan_completed

扫描完成

媒体库扫描任务结束时触发。

book.created

作品入库

新作品被创建或扫描入库时触发。

6. 测试与排错

  • 先测试发送,再保存配置。
  • 展开“实际请求体”检查模板渲染结果。
  • JSON 字符串值优先使用 {{json:变量}}
  • ntfy JSON 模式填写服务根地址,Topic 放在 Body 中。
  • Gotify 使用 Application Token,不要使用 Client Token。
  • Docker 中的 127.0.0.1 指向听悦容器本身。
  • 发送记录可在系统日志的“通知记录”中查看。