4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-02-05

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}

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?