C#.NETからTeamsへのドキドキ初投稿

# 概要

この記事では
**『C#.NETからTeamsへ投稿なんてまったくやったことないよ』**
な状態向けに、基本的な設定方法から書いてるよ。

# Teams側の設定

Windowsデスクトップ版Teamsで操作していきます。

右上 ⇒ コネクタ 。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7db35468-fa4c-b704-391e-8a75b4fc989d.png)

```Incoming Webhook``` を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/ab451857-7844-3f18-57c6-bf54b87b05d6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/4005108a-feaa-6553-6aaa-6d4f50e79696.png)

追加したら構成へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/af89c49e-d82e-1d9b-0b05-3fa1f10eec05.png)

適当に名前つけて作成。
名前とイメージは作成後に変更できるからテキトーで大丈夫だよ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/81b3c870-1366-f89b-5f16-8923c25c2278.png)

WebhookのURLを控えたら完了。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/be137c28-97ae-735a-2f23-fcf27c6f4328.png)

Webhook出来上がると ↓ こんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/7f65d315-dafb-45ec-a615-ba34e2782c82.png)

Teams側の準備はこれで終わり。

ね、簡単でしょ。

ちなみに、Webhookの名前やイメージを変更しても『WebhookのURL』は変わらないよ。
名前や画像は気軽に変えてOK。


# C#.NET側

## プロジェクト

VisualStudio起動して ↓ こんな感じにプロジェクト作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/042d4888-85bb-8b33-a357-71e2b006229a.png)

## 参照

プロジェクト右クリック ⇒ NuGetパッケージの管理 。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/3d1462ba-f3f3-b940-f670-5626426347bd.png)

Json化する場面があるから、System.Text.Jsonを用意。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/427edced-d277-cfc3-564d-7db93db23d0a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/9243c0ec-6e9c-0ce6-4055-7e539cecb554.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/a0d016a6-031a-2571-fb3a-8f3193a851df.png)

## ソースコード

```c#
using System.Collections;
using System.Net;
using System.Text;
using System.Text.Json;

namespace HogeHook
{
    internal class Program
    {
        static void Main(string[] args)
        {

            //Teamsに作ったWebhookのURL。
            const string teams_webhook_url_ = "ほげええええええWebhookのURL";

            //サンプルだからtry catchは無し。

            //念の為WebClientのリソース開放の為にusing使っとく。
            using (WebClient web_client_ = new WebClient())
            {

                //Teamsに投稿する内容。
                Hashtable param_ = new Hashtable();
                param_["Text"] = "ね、簡単でしょ";

                //Json化せよ。
                string json_ = JsonSerializer.Serialize(param_);

                //投稿せよ。
                web_client_.Headers.Add(HttpRequestHeader.ContentType, "application/json;charset=UTF-8");
                web_client_.Encoding = Encoding.UTF8;
                web_client_.UploadString(teams_webhook_url_, json_);

            }

        }
    }
}
```

# 実行結果

VisualStudioでF5でデバッグすれば ↓ こんな感じに投稿されましたとさ。
エンコーディングちゃんと指定してるから日本語文字化けも無しだね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/706116/880aceb6-4507-45ca-cec8-8946abfce1dc.png)

# 蛇足

ドキドキする要素などどこにも無かったのであった。

# 参考サイトさん

http://pokuda-tyoubun.blogspot.com/2018/08/microsoft-teamsc.html

https://www.terry-u16.net/entry/system-text-json

https://stackoverflow.com/questions/16785819/how-to-close-browser-after-creating-c-sharp-webclient-class

# バージョン

Windows 10 Pro 21H2 OSビルド 19045.2311
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.3.6
Microsoft .NET Framework Version 4.8.04084
Microsoft Teams バージョン 1.5.00.31168 (64 ビット)