最近、無償提供されたMicrosoft Teamsにプログラムからメッセージ投稿してみたいと思い、実装してみた。
システム監視、センサなどから情報投稿など、いろいろ利用できそう。
まずは、Microsoft TeamsのIncoming Webhook APIのURLを取得。
取得方法の詳細はこちら
○Microsoft Teamsに平文メッセージを投稿するためのユーティリティメソッド
public class MSTeamsUtil {
// Microsoft Temasに平文メッセージを投稿
public void PostPlainMessage(string webhookURL, string message) {
using (var client = new WebClient()) {
var param = new Dictionary();
// Textパラメータは必須
param["Text"] = message;
var json = JsonConvert.SerializeObject(param);
client.Headers.Add(HttpRequestHeader.ContentType, "application/json;charset=UTF-8");
client.Encoding = Encoding.UTF8;
client.UploadString(webhookURL, json);
}
}
}
public class MSTeamsUtilTest {
//取得したImcoming WebhooksのURLをセット
private string _webhookURL = "https://outlook.office.com/webhook/・・・";
public void PostPlainMessageTest() {
var mst = new MSTeamsUtil();
mst.PostPlainMessage(_webhookURL, "hoge hoge");
}
}
エラーの原因は、よく解らないので、追々調査してみることに。
代わりにWebClientに変更して実装してみるとメッセージ投稿に成功した。
なお、HttpClientを利用する時はリクエストの度にインスタンス生成・破棄してはならにとのこと。
TCPコネクションが都度、張られ、パフォーマンスを低下させるとのこと。
WebClientではリクエストの度にインスタンス生成・破棄してもTCPコネクションが使い回されるため問題ない。
【参考】
・C# HTTPクライアントまとめ
・不適切なインスタンス化のアンチパターン
0 件のコメント:
コメントを投稿