Jellyfin使用Webhook发送通知到钉钉

本文同步发表在我的个人博客https://evine.win。

效果图

jellyfin.jpg

流程

  1. 通过手机版钉钉->面对面建群,建立一个一人群。

  2. 通过PC版钉钉在群中创建一个“自定义”的Webhook机器人,名字随意,安全设置勾选“自定义关键词”,并新增两个词:播放添加,同时把Webhook链接记录下来,链接形如https://oapi.dingtalk.com/robot/send?access_token=1234567890abcdef1234567890abcdef

  3. Jellyfin通过官方插件库安装好“Webhook”插件,并重启Jellyfin。

  4. 在Jellyfin的“Webhook”插件的设置界面中,点击 Add General Destination 按钮新增一个Hook,设置以下信息:

  • Server Url:你的Jellyfin访问地址,形如http://example.com:8096
  • Webhook Name:取个名,比如DingTalk
  • Webhook Url:第2步中添加的“自定义”机器人的Webhook链接
  • Notification Type:勾选Item AddedPlayback StartPlayback Stop
  • User Filter:勾选你想触发通知的用户
  • Item Type:勾选你想监控的媒体类型,不能勾选其中的Send All Properties (ignores template)
  • Template:填入以下内容
{
    "msgtype": "markdown",
    "markdown": {
        {{#if_equals NotificationType 'ItemAdded'}} 
        {{#if_equals ItemType 'Season'}}
        "title": "{{{SeriesName}}} {{{Name}}} 已添加到 {{{ServerName}}}",
        {{else}}
        {{#if_equals ItemType 'Episode'}}
        "title": "{{{SeriesName}}} S{{SeasonNumber00}}E{{EpisodeNumber00}} {{{Name}}} 已添加到 {{{ServerName}}}",
        {{else}}
        "title": "{{{Name}}} ({{Year}}) 已添加到 {{{ServerName}}}",
        {{/if_equals}}
        {{/if_equals}}
        "text":
"**媒体添加通知** \n\n
{{#if_equals ItemType 'Season'}}
名称:{{{SeriesName}}} S{{SeasonNumber00}} {{{Name}}}\n
{{else}}
{{#if_equals ItemType 'Episode'}}
名称:{{{SeriesName}}} S{{SeasonNumber00}}E{{EpisodeNumber00}} {{{Name}}}\n
{{else}}
名称:{{{Name}}} ({{Year}})\n
{{/if_equals}}
{{/if_equals}}
链接:
{{~#if_exist Provider_imdb~}}
[IMDb](https://www.imdb.com/title/{{Provider_imdb}}/)\n
{{~/if_exist~}}

{{~#if_exist Provider_tmdb~}}
{{~#if_equals ItemType 'Movie'~}}
[TMDb](https://www.themoviedb.org/movie/{{Provider_tmdb}})\n
{{~else~}}
[TMDb](https://www.themoviedb.org/tv/{{Provider_tmdb}})\n
{{~/if_equals~}}
{{~/if_exist~}}

{{~#if_exist Provider_opendouban~}}
[豆瓣](https://movie.douban.com/subject/{{Provider_opendouban}}/)\n
{{~/if_exist~}}

[Jellyfin]({{ServerUrl}}/web/index.html#!/details?id={{ItemId}}&serverId={{ServerId}})\n\n
{{#if_equals ItemType 'Episode'}}
时长:{{RunTime}}\n\n
{{else}}
{{#if_equals ItemType 'Movie'}}
时长:{{RunTime}}\n\n
{{/if_equals}}
{{/if_equals}}
{{~#if_exist Overview~}}
简介:{{Overview}}
{{~else~}}
简介:(无)
{{~/if_exist~}}"
        {{/if_equals}}

        {{#if_equals NotificationType 'PlaybackStart'}}
        "title": "{{{NotificationUsername}}} 开始播放",
        "text":
"**开始播放通知** \n\n
用户:{{{NotificationUsername}}}\n
{{#if_equals ItemType 'Episode'}}
剧集:{{{SeriesName}}} ({{Year}}) S{{SeasonNumber00}}E{{EpisodeNumber00}} - {{{Name}}}\n
{{else}}
电影:{{{Name}}} ({{Year}})\n
{{/if_equals}}
起点:{{PlaybackPosition}}\n
设备:{{DeviceName}}\n
终端:{{ClientName}}\n\n
{{~#if_exist Overview~}}
简介:{{Overview}}
{{~/if_exist~}}"
        {{/if_equals}}

        {{#if_equals NotificationType 'PlaybackStop'}}    
        "title": "{{{NotificationUsername}}} 停止播放",
        "text":
"**停止播放通知** \n\n
用户:{{{NotificationUsername}}}\n
{{#if_equals ItemType 'Episode'}}
剧集:{{{SeriesName}}} ({{Year}}) S{{SeasonNumber00}}E{{EpisodeNumber00}} - {{{Name}}}\n
{{else}}
电影:{{{Name}}} ({{Year}})\n
{{/if_equals}}
设备:{{DeviceName}}\n
终端:{{ClientName}}"
        {{/if_equals}}
    }
}
  • 点击Add Request Header,并新增一组:Key: Content-Type, Value: application/json
  1. 保存好配置,接下来,只要Jellyfin中有新的媒体添加进来,或者选定用户开始/停止播放媒体,你则会收到通知。

参考资料

jellyfin-plugin-webhook, templates, Handlebars.

你可能感兴趣的:(Jellyfin使用Webhook发送通知到钉钉)