はじめに
Microsoftから提供されているFlowですが2017/1現在、ドキュメントが少なく使い方がよくわかりませんでした。IFTTTのMaker's channelのような使い方ができるのか?がどうしても気になり試してみました。その時に作ったモノを説明します。
概要
microsoft Flow(以下、Flowと記す)上でフローを作成し、そのフローをHeroku上に構築したNode-REDから、https(POST)にてキックした事例を説明します。
IFTTTのMaker's channelはhttpsのGETでアクセスできるためWebブラウザのURL入力ボックスからキックできますが、Flowではhttps GETで行う方法がどうしてもわからず、仕方がないのでPOSTでキックするためにNode-REDを使いました。
作成したモノの機能概要は以下の通りです。
- Node-REDからhttps POSTメソッドでJSONデータをFlowに送ります。
- Flowがリクエストを受け取ります。そして、予め設定しておいたJSONスキーマに基づいてパースします。
- 少々、データを加工したレスポンスを作りNode-REDに返します。
1. microsoft Flow設定
Flowのアカウント取得方法は省きます。
以下の様に2つのフロー(要求、応答)を定義します。
JSONスキーマは以下です。
しかし、いつの間にJSONスキーマなんていうものができたのか・・・知らなかった・・・
{
"title": "test",
"type": "object",
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "integer"
},
"c": {
"type": "integer"
}
}
}
2. Node-REDの設定
こちらもフローという名称なので、説明がややこしいですが、Node-REDのフローを図のように作成します。作成後、デプロイボタンを押して配備して下さい。
3. Node-REDから実行
Node-RED画面のinjectノードの左の角丸四角ボタンを押すと実行できます。以下に実行結果を示します。Node-REDから送信したメッセージについてFlow側でJSONメッセージのうちプロパティ名だけ変更して返却されてきています。
終わりに
Microsoft Flow 便利!っと思ったんですが、冷静に考えたらNode-REDでいいじゃん、と思いました。素のNode-REDは現在(0.15.2)、機能追加はNode-REDを停止した上でnpmを使ってインストールする必要があります。これをnode store(仮称)機能で一覧表示&ボタン一発で停止せずインストでき、かつ、色々なnode-flowのパッケージを自由に提供するstoreサーバを用意※できれば、機能的にも分かりやすさや拡張性でもNode-REDの方が(いまのところ)一歩先を行っていると思います。ただ、Office365を契約した上で、power appsを使えるようにしたら、・・・これは侮れない、な・・・
※ということは・・・もうサービスを起こしている誰かがいそうだな、と思って検索したら、Node-REDをホスティングしているプロバイダがすでに複数存在していますね・・・