上一篇文章 透過 Telegram 發送 Synology 的系統通知 已經簡單說明了,如何透過新增簡訊代發商的方式,來將Synology的DSM通報發送到手機上的Telegram。接收了一個禮拜訊息後,想說看看有沒有可能可以發送中文的系統訊息出來。研究了一會兒,以為從控制台–>區域選項–>語言,設定為語系為繁體中文就可以,但測試了很多次都還是一樣收到英文版的通知。
直到我打開DSM的Help,才發現原來只有特定的簡訊商才有支援不同的語系,只好死心了。
但最近又看到一篇文章 Synology DSM 6.x: Telegram Bot Alerts ,內容大致相同,前半段也是在說明如何用 SMS 來用 Telegram 接收系統通知,但後半段就有趣了,後半段在說明使用 SMTP 協定轉發系統通知到 Telegram 上接收。於是照著試看看原來透過 SMTP 可以發送中文的系統訊息,而且內容更詳盡完整。
那我們就開始吧..
-
在Telegram上建立一個通知機器人
這邊當然也是要在 Telegram 上建立一個通知機器人跟專屬的系統通知群組,取得機器人的 API Token 以及 群組的 GroupID,可以參考 透過 Telegram 發送 Synology 的系統通知 的步驟來進行即可。如果先前已經按照 SMS 的步驟建立了通知機器人,那其實可以直接沿用進行下一步即可。
-
透過 Docker 安裝 smtp_to_telegram 映像檔
原來已經有人寫好 SMTP 轉發至 Telegram 訊息發送 HTTP API 的介面,而且包裝好 docker image,所以只需要下載 image,然後設定環境參數後從 docker 啟動就可以了。
- 啟動 docker,切換到倉庫伺服器,敲入 smtp_to_telegram 搜尋映像檔,搜尋到唯一的映像檔就是我們要安裝的。
- 按下『下載』,image就會被安裝到下方映像檔清單中。
- 選擇 smtp_to_telegram 映像檔,然後按下『佈署』。再點入『進階設定』。可以將『啟用自動重啟』選項打勾,這樣如果 smtp_to_telegram 異常結束時,DSM會嘗試自動重新啟動。
選擇『連接埠設定』頁籤,本機連接埠原本是自動設定,請調整為一個固定的連接埠,例如就用 2525。
再選擇『環境設定』頁籤,設定下列環境變數
ST_SMTP_LISTEN = 這裡放 docker 容器裡面要啟動 SMTP Server 要監聽的網路介面以及連接埠,一般用 0.0.0.0:2525 即可,代表所有網路介面的連接埠 2525 都要監聽。
ST_TELEGRAM_MESSAGE_TEMPLATE = {body}
ST_TELEGRAM_BOT_TOKEN = 前一步驟所取得的通知機器人 API Token
ST_TELEGRAM_CHAT_IDS = 要通知的群組group id,可以用逗號區隔發送多個群組。例如:CHAT_ID,CHAT_ID_2(OPTIONAL),CHAT_ID_3(OPTIONAL),… - 最後按下『套用』,完成佈署。於是 smtp_to_telegram 就會出現在『容器』選單中。切換右邊的開關,smtp_to_telegram 就會啟動。
-
設定Email通知
剩下最後的步驟,就是從控制台–>通知設定裡面,將原來的電子郵件通知 SMTP Server 指向新啟動的 smtp_to_telegram 即可。SMTP 伺服器填上 Synology 的 IP 即可。最後可以按下『寄送測試電子郵件』看看 Telegram 是否能正確收到。
同場加映
DSM Download Station 裡面也有透過 SMTP 發送的下載完成通知,也可以改用 Telegram 來進行通知了。(所有的電子郵件通知都可以按此進行設定)
最後 Telegram 裡面收到的系統通知就正常顯示為中文,而且因為是 email 的格式,所以內容非常詳盡。