Microsoft Flowで自前のPHPアプリとデータをやり取りする

Flowとは

Flowというのは、マイクロソフトが提供している、さまざまなWEB上のサービスを連携させて自動化するためのサービスです。IFTTTという同じような先行のサービスがありますが、私はWindows Phoneを使っているので、Flowのほうが端末と連携させるのに都合の良いことがあるのではないかと思い、Flowを使ってみることにしました。IFTTTだとWindows Phone向けの公式アプリが無かったりするわけですが、Flowだとさすがにそんなことはなく、Windows Phone向け公式アプリはちゃんとありました。ただ、久しぶりにIFTTTのほうも覗いてみると、結構な数の家電との連携が可能なようで楽しそうです。日本のメーカーの電化製品が見当たらないのはちょっと残念。

FlowではHTTPというコネクタ(個々のWEB上のサービス)というのがあり、自作のPHPサーバーサイドのPHPアプリにデータを送ったり受けたりが可能です。なお、HTTPの他に、自前のサーバー側の処理と連携させる方法として昔ながらのFTPやSFTPコネクタも用意されていて、色々と応用が効きそうです。

処理の流れ

コネクタをいくつか繋げて作る一連の処理をフローと呼びます。今回は、RSSで新しいフィードが発行されるとHTTPで自作のサーバーサイドの処理に記事を送るフローと、そこから戻ってくる値を受け取ってメールとして送るというフローを作ります。二つです。一つで出来ないかとも思いましたが、分かりませんでした。

自作の処理ではとくに何もしません。単にデータを投げ返すだけのテストです。

POSTする側

まず、Flowにログインします。Hotmail.comやOutlook.comのアカウントを持っていれば、ログインできるはずです。

https://japan.flow.microsoft.com/ja-jp/

まず、自作のPHPアプリでRSSの更新を受け取ってきてデータを投げる方は次のようにします。

まずはログイン後、「マイフロー」から「一から作成」を選択して、コネクタを選びます。下の図では「HTTP」を選んでいますが、まずは「RSS」を選んでこれをトリガーとします。

RSSフィードURLを登録後に「HTTP – HTTP」を追加します。そうすると以下のようにRSS情報の中の何の値をPOSTするかをクリックで選べるようになっています。json形式となるように「本文」欄に追加していきます。もちろんPOST先の自作のPHPアプリのURLの指定も行います。

PHP側の処理

ひとまず、これで値を受け取ることが出来るようになります。値を受け取る側のPHPは以下のような内容になりました。「PHP json POST データ取得」などでググればこうした記事が見つかると思います。ありがとうございます。

$json_string = file_get_contents(‘php://input’);
$obj = json_decode($json_string);

あとは、$obj->bodyなり$obj->title なりを加工したり、あたらしい値を作ったりして、以下のように値を返します。

$url = ‘(あとでFlowで取得します。)’;

$data_json = json_encode($obj);

// 参考:http://nanase.hatenablog.jp/entry/2013/04/12/160836
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json’));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘POST’);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$result=curl_exec($ch);
echo ‘RETURN:’.$result;
curl_close($ch);

POSTされる側

今度はPHPから値を受け取る側のフローを作ります。そこで上記$urlが決まります。

POSTデータを受け取る場合は「HTTP-要求」をトリガーとします。

ここで、「要求本文jsonスキーマ」を入れろと言われてあきらめそうになりましたが、「サンプルのペイロードを使用してスキーマを生成する」と、良いところで助け舟。適当にJsonっぽくペイロードデータ(予定)を書いてみるとスキーマが生成されました。

で、受け取ったデータをメールで送信。

動作確認

うまく行かない時は、以下のように実行履歴で詳細を確認出来ますし、再送信して動作検証することもできます。フローの中でエラー処理や条件分岐・繰り返しもできます。

感想

今回はレンタルサーバーで処理を行わせましたが、できれば、用意されているコネクタだけでいろいろやりたい所です。例えば、Google Appsを使えば、自前でサーバーを用意しなくても柔軟なことが出来そうです。スケジュール機能を使えば定期的に処理を実行させることもできます。しかし、有料でも良ければ、多分Office365などのマイクロソフトのサービスを使ったほうがやり易いのかも知れません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)