Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

Salck APIとを使用してC#でテキストファイルを投稿する

$
0
0

はじめに

C#でSlak APIを利用する際に、

Webhookを使用した記事を用いたメッセージ投稿のプログラムは
よくみるものの、
Tokenを使用したプログラムはあまり見られなかったので、
自分への備忘録も兼ねて記事を書きます。

Slack APIについて

基本は使用したいAPIの公式ドキュメントを見てください。
そこに全ては書いてあります。
今回は"files.upload"を使用するので、
以下URL先のドキュメントをしっかりよむ。
https://api.slack.com/methods/files.upload

C#側のコード

以下、今回紹介するソース全文

//外部ファイルより、投稿したいChannelとTokenを取得stringchannel=System.Environment.GetEnvironmentVariable("Channel");stringtoken=System.Environment.GetEnvironmentVariable("Token");//パラメータにTokenとChannelをセットvarparameters=newNameValueCollection();parameters["token"]=token;parameters["channels"]=channel;varclient=newWebClient();client.QueryString=parameters;byte[]responseBytes=client.UploadFile("https://slack.com/api/files.upload",Filename);//結果を取得StringresponseString=Encoding.UTF8.GetString(responseBytes);ReturnValueReturn=JsonConvert.DeserializeObject<ReturnValue>(responseString);Console.WriteLine(Return);
classReturnValue{publicboolok{get;set;}publicStringerror{get;set;}publicSlackFilefile{get;set;}}classSlackFile{publicStringid{get;set;}publicStringname{get;set;}}

外部ファイルより値の取得

System.Environment.GetEnvironmentVariable()では
外部ファイル(今回はAzure Functionで作成したので”localsetting.json”から)
TokenとChannel(正確にはChannelID)から値を引っ張ってきます。
Tokenの取得は以下、
https://dev.classmethod.jp/articles/search-messages-with-slack-api/
ChannelIDの取得は以下を参考にするとわかりやすい
https://qiita.com/unsoluble_sugar/items/603e51106d9632f3ea4f

//外部ファイルより、投稿したいChannelとTokenを取得stringchannel=System.Environment.GetEnvironmentVariable("Channel");stringtoken=System.Environment.GetEnvironmentVariable("Token");

APIに渡す引数のセット

次に、NameValueCollection()をもちいて、
先ほど取得した
"parameters"にTokenとchannels(Slack APIに渡す引数)をセットする。

//パラメータにTokenとChannelをセットvarparameters=newNameValueCollection();parameters["token"]=token;parameters["channels"]=channel;

クエリを作成し、WebClientで送信する

WebClientのクエリとして"parameters"をセットした後に、
"client.UploadFile"でSlack APIにクエリを投げかけます。
(変数"Filename"に投稿したいファイルパスが格納されています)

byte[] responseBytes にはSlack APIからの返信がバイトで格納されます。

varclient=newWebClient();client.QueryString=parameters;byte[]responseBytes=client.UploadFile("https://slack.com/api/files.upload",Filename);

結果をコンソール出力

最後に、送信結果をコンソールに出力すると、便利かも。
(okのパラメータがTrueなら投稿できているはず)

//結果を取得StringresponseString=Encoding.UTF8.GetString(responseBytes);ReturnValueReturn=JsonConvert.DeserializeObject<ReturnValue>(responseString);Console.WriteLine(Return);

最後に

今回で、Slcak APIについて色々わかってきたので、
他も触っていきたいと思う今日この頃


Viewing all articles
Browse latest Browse all 9703

Trending Articles