我想在 Side Project 加上發通知到手機的功能,原本想用 LINE,但因為通知對象就只有我自己,找到更簡單的做法 - Slack

用 Slack 免費版建個一人 Workspace,開個一人頻道(如果加上機器人應該算兩個人),只需簡單設定跟幾行程式就搞定。在手機安裝 Slack App,走到哪裡都能即時收到訊息,不花一毛錢目標輕鬆達成。

開始前要到 Slack API 介面建立一個 App 帳號給發送訊息程式用,過程需提供名稱、指定 Scope (授與在聊天室寫入訊息的權限)、安裝到 Workspace,最後將 App 機器人加入 Slack 頻道。這部分操作我是參考用3個步驟在Python寫出Slack機器人 by Andrew Learning,文章的圖文解說很詳細,照著做應該都能順利設好。

串接 Slack 是很普遍的應用,NuGet 上有很多現成程式庫,所以我就不自己造輪子了。評估之後,我選了 SlackAPI

來寫個範例程式測試一下。用指令 dotnet new console -o SlackBotDemo 新增專案,dotnet add package SlackApi 參照程式庫,code . 叫出 VSCode:

開始前要在 Slack API 介面查詢 Bot User OAuth Token:

程式寫法超級簡單,只要提供 Bot User OAuth Token、頻道名稱跟要傳送的文字就可以了!

using SlackAPI;
// 實務上
var botOauthToken = "xoxb-2100....CQNXg";
var client = new SlackTaskClient(botOauthToken);
var resp = await client.PostMessageAsync( 
    "#即時通知", //頻道名稱
    "這是由機器人傳送的通知" //訊息本文
);

輕鬆秒殺!

除了單純文字,Slack API 還可以寫 Markdown、標成員、傳檔案... 等花式應用,我不太用得到,除了 Markdown 加連結,例如:部落格文有新留言時可直接連到文章,感覺又更方便了。

var resp = await client.PostMessageAsync(
    "#即時通知",
    "[為自己寫程式 - 身分證影本加浮水印]有新留言", // 顯示在通知的本文
    blocks: new IBlock[] {
        new SectionBlock {
            text = new Text {
                type = "mrkdwn",
                // https://api.slack.com/reference/surfaces/formatting 
                // Slack mrkdwn 格式連結寫法為 <url|text>,不是 [text](url)
                text = "<https://blog.darkthread.net/blog/id-card-watermark-ps-tool/|為自己寫程式 - 身分證影本加浮水印> 有新留言"
            }
        }
    }
);

薑 薑 薑 薑~~~

開發工具箱再添好用工具一把。

Example of using SlackApi library to send notifications to Slack channels by C# program.


Comments

# by 小黑

哥目前Slack 的自我通知,能用在哪些應用?

Post a comment