(2017/5/19 追記)Microsoft Flow の対応サービスとして Microsoft Teams が追加され、簡単に投稿できるようになっていました。ただ、単純なテキストの投稿のみのようなので、表現を工夫したい場合などは引続きこの記事の方法が利用できます。
Microsoft Flow の対応サービスに Microsoft Teams が追加されました
https://idea.tostring.jp/?p=2866
Microsoft Flow では、どんどんと連携可能なサービスが追加されており、さっきほど確認した時点では 125 個のサービスが「サービス」の一覧に並んでいました。最近では「PREMIUM」と表示されている、いわゆる有償版でしか利用できないサービスも増えてきたようです。
と、連携可能なサービスが増えていることは嬉しいのですが、いつまで経っても Microsoft Teams が追加されません!いつかは追加されるのでしょうけど、待ってられん!ということで、今できる方法で Microsoft Flow を使って Microsoft Teams へ投稿するフローを作ってみます。
Microsoft Teams に Webhook の受け口を作成しておく
Microsoft Teams では、「コネクタ」と呼ばれる他システムとの連携機能が用意されています。たとえば、「Twitter コネクタ」であれば、Twitter に特定タグが付けられた投稿などがあれば、自動的に拾ってきて Microsoft Teams にも投稿してくれるという機能です。
この中には「Incoming Webhook」というコネクタが用意されており、こちらのコネクタを使うことで Microsoft Teams のチャンネルに Webhook の受け口を作成することができます。
というわけでさっそく作成してみます。
まずは、投稿先のチャンネルを選択し開きます。つぎに、チャンネル名の横の「…」をクリックし表示されるメニューから「コネクタ」を選択します。
すると、追加可能なコネクタの一覧が表示されますので、その中から「Incoming Webhook」を追加します。
つぎの画面では、コネクタにつける名前(たとえばデータ送り元のアプリ名などでしょうか)と、イメージ(顔写真ですね)を登録し、作成をクリックします。
すると、Webhook のエンドポイントとなる URL が作成されますので、こちらをコピーしておきます。
あとは、この URL に特定の JSON フォーマットを含めたデータを送信できれば、Microsoft Teams への投稿ができるというわけです。
Microsoft Flow から Microsoft Teams の Webhook へデータを送信
Microsoft Flow からは、「HTTP」アクションで任意の HTTP リクエストを送信可能ですので、このアクションを使って先ほどのエンドポイントへデータを送信します。
設定は簡単です。「方法」では「POST」を選択し、「URI」へは先ほど Microsoft Teams からコピーしてきた URL を、本文には指定された形式の JSON を設定します。今回は、Flow ボタンをトリガーにして、下記のようなフローにしてみました。Flow ボタンでは、スマホからボタンを押した時の任意の入力項目を設定でき、そちらを合わせて設定しています(今回は「タイトル」と「本文」を設定)が、とても簡単な設定ですので今回は説明を省略して進めます。
JSON の書き方は、下記のページにまとまっています。残念ながら英語しかありませんが、簡単なものであれば、Messages(text)と Title そして Links あたりの書き方を覚えておけば大丈夫かと思います。
Office 365 Connectors API Reference
https://dev.outlook.com/connectors/reference
動作を確認してみる
Flow ボタンをトリガーにしたため、Microsoft Flow のスマホアプリを起動すると「ボタン」にフローの名前が付いたボタン表示されます。
ボタンを押すと入力項目が表示されますので、好きな文章を入力します。(この時、iOS の日本語キーボードの動作が少しあやしい気もします…)
と、ちょっと待っていると、はい、出ましたね。ちゃんとコネクタを設定したチャンネルに、スマホアプリから入力した文字列が投稿されています。送信したデータで title に指定したところは太字になっています。もちろん返信もつけられます。
あ。ホントは顔文字を「(*^_^*)」としたのですが、なぜか「(^_^)」となってしまいました。どうやら「*」が「em」タグで書き換えられているようです。ちょっと調べてみたところ、Incoming Webhook を利用した投稿では下記の Markdown が有効になっているみたいです。
Actionable Messages Reference
https://dev.outlook.com/actions/reference
さいごに
このようにちょっとだけコチョコチョと作業が必要ですが、Microsoft Flow から Microsoft Teams へ投稿することができます。いまはこちらの方法しかないようですが、後々ちゃんと対応してくれるのでしょうかね…。
応用編として、Micrsoft Flow は外部からの HTTP リクエストを受け取ることもできます。サイボウズさんの Cybozu Developer Network では、kintone Webhook の送信先を Microsoft Flow へ設定する方法が説明されています。こちらと今回の方法と組み合わせることで「kintone へレコードが追加されたことを、Microsoft Teams へ通知する」なども簡単に実現できます。
kintone Webhook & Microsoft Flowを使ってSlackに投稿する- cybozu developer network
https://cybozudev.zendesk.com/hc/ja/articles/115000210766
Microsoft Flow や Microsoft Teams は、アイデア次第で色々と面白い使い方ができそうですので、ぜひ一度ためしてみてください。