LoginSignup
5
6

More than 5 years have passed since last update.

Microsoft Flowをコードに組み込む

Last updated at Posted at 2019-03-20

TL;DR

Microsoft FlowのトリガをHTTPリクエストに設定すると、AWS LambdaみたいなFaaSっぽい使い方ができる。(戻り値を使うとかはできないけど・・・) 2019/3/30追記: 戻り値を使うパターンは[応答]アクションを使えば実現できるそうです。r-wakatsukiさん、ありがとうございます!

また、デフォルトで登録されていない、任意のサービスに対応することができる。

Microsoft Flowって?

ノードベースプログラミングで簡単に操作のフローを自動化できる。
Slackやメール、Twitter等のアプリと連携が可能。
フリープランが存在し、月ごと750回まで実行可能 (2019/3/21現在)
https://japan.flow.microsoft.com/ja-jp/pricing

簡単な例 ( Hello World )

  1. トリガに[HTTP要求の受信時]を設定します。
  2. トリガに好きなフローを繋げる。ここではSlackにHello Worldを投稿させます。 スクリーンショット (24).png
  3. 生成されたURLにHTTPリクエストします。メソッドはデフォルトでPOSTです。powershellだと以下のようなコードで発火できます。
helloworld.ps1
Invoke-RestMethod -Uri "https://prod-27.japaneast.logic.azure.com:443/XXXXXXXXXXXXXXXXXXXXXX" -Method POST

引数を渡す例 ( Slackに任意の内容を投稿 )

トリガに[HTTP要求の受信時]を設定する際、JSONスキーマを指定すると、受け取ったJSONのデータをフロー内で扱うことができます。(ペイロードをアップロードすると、自動でスキーマ生成してくれます。)

  1. 以下のsample_payload.jsonから[HTTP要求の受信時]にスキーマを生成します。
  2. Slackのチャネル名で[カスタム値の入力]を選択し、channelを選択します。メッセージテキストも同様にし、messageを選択します。
    スクリーンショット (25).png

  3. 生成されたURLにHTTPリクエストします。powershellだとhelloworld2.ps1のようなコードで発火できます。今度はrandomにhello worldを投稿します。

sample_payload.json
{
    "channel":"general",
    "message":"hello world"
}
helloworld2.ps1
Invoke-RestMethod -Uri "https://prod-27.japaneast.logic.azure.com:443/XXXXXXXXXX" -Method POST -Body ( @{"channel"="random";"message"="hello world"} | ConvertTo-Json) -ContentType 'application/json'

サービス連携 ( GitHub : forced push通知 )

Microsoft Flowはアプリケーション連携が豊富で便利だけど、GitHubにforced pushされたとき用のトリガは存在しないので、自分で作っていくしかありません。

  1. github webhookのサンプルペイロード( https://gist.github.com/gjtorikian/5171861 )から[HTTP要求の受信時]にスキーマを生成します
  2. 条件フローを作成し、[forced]trueに等しいとき、という設定にします。
  3. [はいの場合]にSlackを繋げてメッセージの投稿を設定します。 スクリーンショット (26).png
  4. 最後に、GitHubのWebhookに[HTTP要求の受信時]から生成されたURLを設定します。

これでforced pushされたときに、Slackに通知が飛びます。

5
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6