Azure FunctionsからSlackにIncoming Webhook経由で投稿するコードです。
Timerトリガー使って起動させれば、定期的に情報を取得してSlackでメンバー宛に共有するとかできます。
コード
Azure FunctionsでTimerトリガー、C#を選んで以下のコードをコピペすれば動きます。
タイムアウトとかエラー処理は考慮してないので、本番運用の際は考慮要です。
run.csx
#r "Newtonsoft.Json"
using System;
using System.Text;
using System.Net;
using Newtonsoft.Json;
public static void Run(TimerInfo myTimer, TraceWriter log)
{
var slack_text = "Slack本文をここに記載!";
var wc = new WebClient();
var WEBHOOK_URL =
"https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"; //incoming hookのURL
var data = JsonConvert.SerializeObject(new
{
text = slack_text,
icon_emoji = ":ghost:", //アイコンを動的に変更する
username = "テストBot", //名前を動的に変更する
link_names = "1" //メンションを有効にする
});
log.Info("json=" + data );
wc.Headers.Add(HttpRequestHeader.ContentType, "application/json;charset=UTF-8");
wc.Encoding=Encoding.UTF8;
wc.UploadString(WEBHOOK_URL, data);
}
おまけ Azure FunctionsのタイマートリガーのCRON式は秒も含む
なので、毎時30分に起動したい場合は 0 30 * * * *
になるので注意が必要。
Azure Functions のタイマー トリガー | Microsoft Docs から引用
Azure Functions のタイマー トリガーの CRON 式には、次の 6 つのフィールドが含まれます。
{second} {minute} {hour} {day} {month} {day-of-week}