C#からSLACK APIを使用してCSVファイルのアップロードを行う

C#のクラス

MEMO
Slack Regacy Tokenが必要です、以下より作成してください。
https://api.slack.com/custom-integrations/legacy-tokens
注意点として、文字コードをUTF8以外にすることは出来ません。
※Content-Typeをmultipart/form-dataにしてSJISバイトデータを送り込めば出きそうな気もしますが、うまくいかず。
        public static void PostSlackCSV(string csvFilename, string csv, string channel)
        {
            Dictionary<string, string=""> postParam = new Dictionary<string, string="">
            {
                ["token"] = "SLACK-REGACY-TOKEN",
                ["channels"] = WebUtility.UrlEncode(channel) ,
                ["content"] = WebUtility.UrlEncode(csv),
                ["filetype"] = "csv",
                ["filename"] = WebUtility.UrlEncode(csvFilename),
            };

            string postParamStr = "";
            foreach (string k in postParam.Keys)
            {
                postParamStr += String.Format("{0}={1}&amp;", k, postParam[k]);
            }

            byte[] data = Encoding.ASCII.GetBytes(postParamStr);

            string url = ENDPOINT;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded;";
            req.ContentLength = data.Length;

            req.Headers.Add("Authorization", " Bearer " + "SLACK-REGACY-TOKEN");

            Stream reqStream = req.GetRequestStream();
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();

            /* 結果 確認用

            WebResponse res = req.GetResponse();
            Stream resStream = res.GetResponseStream();

            Encoding encoder = Encoding.GetEncoding("utf-8");
            StreamReader sr = new StreamReader(resStream, encoder);
            string result = sr.ReadToEnd();
            sr.Close();
            resStream.Close();
            */
        }

使い方

PostSlackCSV("ふぁいるめい.csv","あ,い,う,え,お", "ちゃんねる");

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です