Edited at

Azure Functions(C#)でSlackに投稿する

More than 1 year has passed since last update.

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}