Webhookを使ってTeamsに投稿する

先日、Forms アンケートが投稿されたら、内容をTeamsに投稿したいという内容を投稿しましたが、このままでは欠点があります。

それは誰がFormsに投稿しても、Flowを設定した人のアカウントがTeamsに投稿するのでいつも同じ人が投稿してるように見えて違和感があるんですよね。

んで、おそらく将来的に人ごとの投稿数とか見ようと思った時にも弊害が出るんじゃないかなぁと思ってます。

なので、システムが自動投稿していると分かるように設定しましょう。

参考:Microsoft Flow を使って Microsoft Teams へ投稿する

Teamsにwebhookコネクタを設定する

Webhookはチャンネル毎に複数設定することができます。
なので「通知専用のチームを作成し、各システム毎のチャンネルで外部から通知を受信する」なんて使い方ができます。
※2018/11現在、Webhookからメンションを投稿することはできないようです(通知がうるさいでしょうしね)

設定したいチャンネルの「…」をクリックして、コネクタ設定画面を出します。
Incoming Webhook の「構成」をクリックします。

Webhookの名前とアイコンを設定します。
ここで設定した名前とアイコンでTeamsに投稿されるので、通知とわかるような名前とアイコンに設定するといいでしょう。

作成ボタンをクリックすると、同じウィンドウの下にURLが発行されます。
これをコピーしておきましょう。
同じウィンドウにWebhookで投稿するときのJSONの書き方についての解説へのリンクもあるので確認しましょう。

これでTeams側はメッセージを受け取る準備ができました。
あとはFlowの投稿部分を改造しましょう。

ちなみに、既存のフローを直接編集せずに、コピーしてから使ったほうが良いですよね
参考:Flowをコピーして使う

前回作成したフローを編集するんですが、投稿部分の Apply to each 部分を全部消します。
(今回は半分消すわけで、これなら新規作成してもいいかも^^;)

代わりに「新しいステップ」から forms を検索して、「応答の詳細を取得する」アクションを選択します。

フォームIDは対象のフォームの名称をドロップダウンから選択。
応答IDは右側の動的なコンテンツの(「もっと見る」をクリックして)「応答通知の一覧 応答ID」を選択します。

応答 ID に「応答通知の一覧 応答 ID」がセットされたら、新しいステップを追加します。
追加するステップは「HTTP」(無印)です。

方法:POST
URI:先ほどTeamsコネクタでコピーした長いURL
本文:JSONを頑張って書く

Jsonの書き方については、以下のサイトを参考にしてください。
リンクは日本語の機械翻訳ページにリンクしていますが、英語のほうが見やすいかも^^;

参考:従来の操作可能なメッセージ カード リファレンス

ということで作成したJSONがこちら

実際にフォームに登録するとこんな感じでTeamsに投稿されます。

こうすることで、「システムからの通知」というのが分かりやすくなりました。(=゚ω゚)ノ

webhook というか API を初めて扱う人でもこの程度であれば見様見真似でできますし、まずはこれぐらいのカスタマイズから慣れるのが良いと思います。