起因

电子邮件是很常见的警报和通知推送手段,我家里的 Surveillance 也一直将各类事件的通知推送到个人邮箱,但是由于我的 DS923+ 的入侵检测没有人脸识别功能,每次我回家都会被认为是陌生人入侵,从而给我发送大量的邮件,直到手机上的 DS cam 定位生效,解除报警,所以我决定把事件推送从邮件换成 Telegram,减少邮件干扰。

背景

群晖的 Surveillance 支持将事件通知推送到电子邮件、短信、DS cam、Webhook。推送到 Telegram 需要借助 Webhook。

操作流程

Step 1. 申请 Telegram Bot

在 Telegram 中添加 @BotFather 为联系人,并输入 /new_bot 开始对话(也可以通过命令菜单操作),按照它的提示设置机器人的名称并获取 API 令牌。

创建机器人
创建机器人

创建机器人成功
创建机器人成功

Step 2. 查看自己的 ChatID

添加 @GetIDsBot 为联系人,并输入 /start 获得自己的 ChatID

ChatID
ChatID

Step 3. 在 Surveillance 中设置 Webhook

1.打开 Surveillance 中的“事件通知”设置,切换到 Webhook 选项卡后点击“新增”

2.在弹出的窗口中,名称输入 Telegram,服务供应商选择“自定义”,然后点击下一步

3.在接下来的窗口中,按如下要求填写各项内容:

  • Webhook URL:https://api.telegram.org/bot[API令牌]/sendPhoto
  • 方法:POST
  • 内容类型:application/json
  • NAS IP地址:换成可以访问自己的 NAS 的公网地址(DDNS或云服务器中转)
  • 正文:可以按照自己的需求编辑正文内容
{
  "chat_id":"[Chat ID]", 
  "caption": "%SUBJECT%\n\n%CONTENT%",
  "photo":"%ATTACHMENT%"
}
[API令牌] 换成 Step 1 中获得的API令牌
[Chat ID] 换成 Step 2 中获得的 Chat ID

填写完成后,点击右下角的“保存”按钮。

如果你按照我的设置,在 Telegram 上收到的信息是这样的:

Step 4. 修改推送规则

在事件通知中,切换到“规则”选项卡,勾选需要通过 Telegram 推送的事件,到这里就完成了全部的设置。

尾记

我现在已经把各项服务的事件通知、流量统计等集成到 Telegram 中,相对于邮件,Telegram 有更好的即时性,而且不需要经常去批量删除通知邮件。