■＊＊＊を使って "Microsoft Teams" に投稿してみた件

##**■はじめに**
・会社で"Microsoft Teams"を導入されたのをきっかけに、他サービスからの投稿方法をいくつか調べたのでここに備忘録として残します

###**■■ここで出来るようになること**
・”Microsoft Teams” の ”Incoming Webhook” の設定方法

・”cUrl” を使って ”Microsoft Teams” に投稿してみる
・”Power Shell” を使って ”Microsoft Teams” に投稿してみる
・”python” を使って ”Microsoft Teams” に投稿してみる

※下記からの事例では”Microsoft Automate”（旧Flow）を利用したものになります

・”Microsoft Forms” を使って ”Microsoft Teams” に投稿してみる

<!-- 
・”Slack” を使って ”Microsoft Teams” に投稿してみる
-->

注）事例によってはO365以外のアカウントが必要なものもあります。その際には個別に入手するようお願いします

▲初投稿：2019-12-24

##**■やってみよう！**
###**■■”Microsoft Teams に Incoming Webhook を設定しよう**
・外部サービスからHTTPリクエストでTeamsにメッセージを送るために、Teamsの接続用コネクタ”Incoming Webhook”を新規作成します

・投稿先のTeamsのチャネルの**”...”**をクリックしてメニューを出し**”コネクタ”**をクリックします

![b00001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/10bab226-d1b0-334a-ba3f-d835018076be.png)

・コネクタの一覧の中から” Incoming Webhook”を探し出して**”追加”**ボタンをクリックします

![b00002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/d6c72a13-0260-6fff-6bc8-30a90e03e92a.png)

・確認画面が出てくるので、また**”追加”**ボタンをクリックします

![b00003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/5c1d3958-da8e-15d8-97ce-3004adaedda9.png)

・接続用の名前を入力します。必要であればアイコンをも変更する事ができます（タイムラインに表示されるアイコンが変わります）。入力が完了したら**”作成”**ボタンをクリックします

![b00004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/d666917d-9d3d-ec92-5207-dd06cc9b4987.png)

・他サービスからの接続先になるURLが表示されるので、コピーして取っておきます。コピーしたら**”完了”**ボタンをクリックします

![b00005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/da84ebd9-ecdc-5f6e-58df-c32b8455a77b.png)

・**既に設定が作られていた場合**、**”構成済み”**メニューをクリックします。追加で別の設定を作りたい場合、**”構成”**ボタンをクリックします。既存の設定を変更もしくわURLを再確認した場合、**”構成済み”リンクをクリックします

![b00006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/912bc565-a55e-5966-ef84-36cd2c63b7fc.png)

・**”構成済み”**リンクをクリックすると構成済みの設定の一覧が表示されるので、該当のところの**”管理”**ボタンをクリックします

![b00007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/dd5d1a88-8416-d155-e512-9c996c7b9113.png)

・既存の情報が表示されるので確認もしくわ変更します。

![b00008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/40c634f1-9db5-c034-9886-17d126e14626.png)

・変更した場合、**”保存”**ボタンを削除した場合、**”削除”**ボタンをクリックします

![b00009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/2b97806f-a607-97bb-4c69-270a15754e99.png)

**※接続先のURLは外部サービスからの呼び出しによく使うのでメモを残して置くとよいでしょう！**

###**■■”cURL”を使って Microsoft Teams に投稿してみる**
・実現するための手順としては下記の様になります
　**Mac等:cURLコマンド→Teams:Incoming Webhook→Teams:Channel**

・Mac等のcURLコマンドが使用可能なパソコンから、本文（"Hello World"）をTeamsに投稿してみる

```
echo '{"text": "Hello World"}' | curl -H 'Content-type: application/json' -d @- <Teams:Incoming Webhook URL>
```

![b00010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/532e8153-2e8f-6422-1edb-39078bd097f4.png)

###**■■”PowerShell”を使って Microsoft Teams に投稿してみる**
・実現するための手順としては下記の様になります
　**Windows10:PowerShell→Teams:Incoming Webhook→Teams:Channel**

・Windows10のPoweShellが使用可能なパソコンから、本文（"Hello World"）をTeamsに投稿してみる

```
$URI = '<Teams:Incoming Webhook URL>'
$body = ConvertTo-JSON @{
  text  = 'Hello World'
}
Invoke-RestMethod -uri $URI -Method Post -body $body -ContentType 'application/json'
```

![b00010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/532e8153-2e8f-6422-1edb-39078bd097f4.png)

###**■■”Python”を使って Microsoft Teams に投稿してみる**
・実現するための手順としては下記の様になります
　**Python(Shell: sendteams.py)→Teams:Incoming Webhook→Teams:Channel**

・"Python" から "Micrsoft Teams" にメッセージを送信するには "pymsteams" というライブラリを使うのが簡単です。以未インストールの場合は以下の手順で"pymsteams"をインストールします。

```
yum -y install gcc python-devel
curl -L https://bootstrap.pypa.io/get-pip.py | python
pip install pymsteams
```

・下記の”Python”の実行Shellファイル(sendteams.py)を作成します

・"Python"が使用可能なパソコンからsendteams.pyを実行し、本文（"Hello World"）をTeamsに投稿してみる

```
sendteams.py

import pymsteams
myTeamsMessage = pymsteams.connectorcard("h<Teams:Incoming Webhook URL>")
myTeamsMessage.text("Message Body")
myTeamsMessage.send()
```

![b00010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/532e8153-2e8f-6422-1edb-39078bd097f4.png)

###**■■”Microsoft Forms”を使って Microsoft Teams に投稿してみる**
・実現するための手順としては下記の様になります
　**Forms(投稿用WEB画面)→Power Automate（旧Flow）→Teams:Channel**

・"Forms" から "Micrsoft Teams" にメッセージを送信するには "Forms" に投稿用WEB画面、"Power Automate（旧Flow）" にFormsとTeamsを連携させるフローを用意する必要があります
注）本事例はO365アカウントが必要になります

**・Forms WEB画面作成**

・"Forms" を起動して **”新しいフォーム”**をクリックします

![b00011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/6b8141a0-8275-a210-230d-f62888af601f.png)

・編集モードの画面から**”＋新規追加”**をクリックします

![b00012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/a3e40a24-8023-61fc-6595-f4b503ba21be.png)

・今回は "Teams" にメッセージを投稿したいので **”テキスト”** をクリックします

![b00013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/0ebc41ed-e610-3a09-df14-d800d5ba3fed.png)

・本フォームのタイトルを入力します

![b00014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/d9949eea-a331-4e32-35ee-3c2813ce7a57.png)

・メッセージ入力欄のコメントを入力します

![b00015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/5141ac79-579d-9adc-f6d6-91191c9b7ec1.png)

・フォーム自体の作成はこれで完了なので、動作確認をしてみます。画面右上の**”プレビュー”**をクリックします

![b00016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/127b372f-2f98-2b13-56e1-978d53135c71.png)

・フォームの実行画面に切り替わるので、コメントを入力します。入力出来たら**”送信”**ボタンを押します

![b00017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/d9838e49-91e6-9d29-51e9-ba04ab505f27.png)

・下記の様な送信完了画面が出てきたら成功です。左上にある**”戻る”**クリックを押すと元の編集画面に戻ります

![b00018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/8149bd50-9735-31c7-3d6f-692ca05afd8b.png)

・**”回答”**タブをクリックします

![b00019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/7accb0c3-5a48-f67c-8795-6935bc0bec84.png)

・先ほど入力した内容が表示されていれば確認完了です

![b00020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/46bfd7c5-b66c-1a80-2d9c-2c5ae3f2b32c.png)

・念のため編集画面以外から呼び出し出来る様に**”共有”**から**接続先のURL**をコピーしておきます。Formsで行うことは以上です

![b00021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/311390d8-b9a7-1bd0-a971-cba01a6c29bb.png)

**・"Power Automate（旧Flow）" フロー作成**

・"Power Automate（旧Flow）" を使ってFormsとTeamsの間を連携させるフローを作成します。ですが、ここではテンプレートにちょうどやりたい事のフローがあるのでそれを使いたいと思います

・"Power Automate（旧Flow）" を立ち上げます。立ち上がったら、画面左側のメニューから**”テンプレート”**をクリックします。画面上部にある検索用のテキストボックスに**”Forms Teams”**を入力し検索します。検索の結果出てくる**”新しい回答が送信されたときにチームに通知する”**を探し出してクリックします

![b00022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/325b2f1e-0695-ee0f-8415-241119fca4ff.png)

・アカウント、ライセンスがが正常に登録されていれば、必要なサービスに自動的にログインされます。アカウント横の**”...”**をクリックすると接続先のアカウントを変更する事も可能です

・接続先に問題がなければ、**”続行”**ボタンをクリックします

![b00023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/a66f0af9-5907-b9f8-1735-72d31fb8316b.png)

・テンプレート内に設定されているフローが表示されます。今回、先ほど作ったFormsの画面に投稿されたコメントをTeamsの特定のChanelに投稿したいだけなので、このフローの設定だけを変えればOKです

![b00024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/edfc9a85-5c29-bdcf-9812-a1fafbe7eb02.png)

・先ほど作ったFormsを **”When a new response is submitted: フォームID”** のドロップダウンリスト内から見つけて選択します

![b00025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/f593e931-90d8-306f-fdc6-790d01e521eb.png)

・**”Apply to each: Get response details: フォームID”** も先ほど作ったFormsをドロップダウンリスト内から見つけて選択します

![b00026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/9ab4811e-b473-e2db-5d83-8a30c7d636a5.png)

・**”Apply to each: Post message”** は連携先のTeamsの情報を下記の様に入力します
　①チーム：投稿先のTeamsのチーム名をドロップダウンリストから選択します
　②チャネル：稿先のTeamsのチャンネル名をドロップダウンリストから選択します
　③先ほど作ったFormsのテキストをTeamsに投稿する本文にしたいので**”動的コンテンツの追加”**をクリックします
　④別窓にFormsのテキスト入力時のタイトル名**”コメントを入力してください”**が表示されるので、それをクリックします
　⑤メッセージ：**”コメントを入力してください”**が追加されるので、あとは他にも必要なコメントや文字装飾を施します
　⑥問題なければ**”保存”**を押します

![b00027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/0e3cdce0-3362-e4d6-1553-cbbc93d85a57.png)

・不具合が無いか確認します。画面右上にある**”フローチェッカー”**をクリックします。すると下記の様な画面が現れ、エラーがあればその内容を表示します。（↓の場合は何もエラーが無い状況を示しています）

![b00029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/edc86cf7-df8a-c027-e3f3-93bdf1a14247.png)

・画面左上にあるフロー名をクリックするとフローの詳細画面に戻ります

![b00031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/0297007b-3c25-4417-2f72-5ad240d108ea.png)

**・一連の動作確認を行ってみる**

・Formsの入力画面を呼び出しコメントを入力します。入力出来たら**”送信”**ボタンをクリックします

![b00032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/1e0632b1-c507-54b7-63d5-e1e77e362ef8.png)

・該当のTeamsのチャネルにFormsに投稿した内容が登録できていたら完成です

![b00033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/c0dda2f4-cf03-d0f7-ddfe-3895c8dd2155.png)

・"Power Automate（旧Flow）" のフロー詳細画面を見ると先ほどの実行履歴が残っているので状況が**”成功”**になっているか確認します

![b00034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/224568/0517cda7-b2cc-b0fc-f946-0d70a1f67f66.png)










##**■参考**
・Microsoft Teams documentation　・・・　[こちら](https://docs.microsoft.com/ja-jp/microsoftteams/teams-overview)
・Microsoft Teams のテクニカル ドキュメンテーション　・・・　[こちら](https://docs.microsoft.com/ja-jp/microsoftteams/microsoft-teams)
・Use Markdown formatting in Teams　・・・　[こちら](https://support.office.com/en-us/article/use-markdown-formatting-in-teams-4d10bd65-55e2-4b2d-a1f3-2bebdcd2c772)

・Microsoft Teamsにメッセージを飛ばす　・・・　[こちら](https://qiita.com/miyay/items/38a21f00768a19737d12)
・Microsoft Teams に PowerShell で投稿してみる　・・・　[こちら](https://qiita.com/miyamiya/items/ccae505b8e97b5b532a7)
・Python から Microsoft Teams へ投稿する　・・・　[こちら](http://sig9.hatenablog.com/entry/2019/06/21/000000)

・Qiita(KSxRDevelop)　・・・　その他の情報は[こちら](https://qiita.com/KSxRDevelop)