SORACOM Beam をトリガーとして Microsoft Flow を動かす方法

# はじめに

先月、弊社に Office 365 が導入され、付随のサービスをいろいろ試していたのですが、その中でも [Microsoft Flow](https://flow.microsoft.com/ja-jp/) がなかなか面白いことできるんじゃないか？と試してたら、[SORACOM Beam](https://soracom.jp/services/beam/) を Flow のトリガーにすることができたので手順をさくっとまとめます。

# 前提条件

* SORACOM のアカウントを作成し、SORACOM Beam を利用できること<br>※Raspberry Pi や Wio LTE/3G から Beam を撃てれば OK ですよ！
* Microsoft Flow の利用登録が完了していること

# Microsoft Flow ってなんぞ？

[公式ガイド付き学習サイト](https://docs.microsoft.com/ja-jp/flow/guided-learning/) より

>MMicrosoft Flow とは、オンライン ワークフロー サービスであり、最もよく使用されているアプリおよびサービス間のワークフローを自動化することにより、仕事を無駄なく効率的に行えるようになります。 たとえば、100 を超えるフォロワーを持つユーザーがあなたの会社についてツイートするたびに、Dynamics 365 に潜在顧客を、MailChimp に記録を追加するためのフローを作成することができます。
>https://docs.microsoft.com/ja-jp/flow/guided-learning/get-started?tutorial-step=1

MS のこういうドキュメントの日本語、正直よーわからんですね。
もっと端的に言えば、 Microsoft 版 [IFTTT](https://ifttt.com) / [Zapier](https://zapier.com/) と思っていただければ、だいたいあってるはずです（ほんと？

IFTTT/Zapier の詳細は Qiita にも記事がありますので、そちらをご覧ください。

* [IFTTT](https://qiita.com/tags/ifttt)
* [Zapier](https://qiita.com/tags/zapier)

# 設定手順

## 0. 前準備
以前投稿した、[Wio LTE と IFTTT 連携をした話](https://qiita.com/ko2a/items/f0da03e739b6154d6733) の構成を使って説明していこうと思います。
そのため、Wio LTE からアップされるデータは以下の形式となります。

```json
{ "value1" : "{PhoneNumber}", "value2" : "{Temperature}", "value3" : "{Humidity}" }
```

## 1. Microsoft Flow の設定

［マイフロー］から［一から作成］を選択します。
![soracom_msflow001.png](https://qiita-image-store.s3.amazonaws.com/0/49240/854c462a-aaab-4726-980a-48349f2b058c.png)

![soracom_msflow002.png](https://qiita-image-store.s3.amazonaws.com/0/49240/d253d9fb-8aed-bd8a-d413-aa89d2784bc5.png)

![soracom_msflow003.png](https://qiita-image-store.s3.amazonaws.com/0/49240/761b3335-6fb8-a12f-834c-42df4e93e25c.png)

トリガーの検索欄へ「HTTP」と入力し、［トリガー］の［要求 - HTTP 要求の受信時］を選択します。
![soracom_msflow004.png](https://qiita-image-store.s3.amazonaws.com/0/49240/47edf9eb-6171-aa52-0926-26d594f4f130.png)

［サンプルのペイロードを使用してスキーマを作成する］を選択し、サンプルの JSON ペイロードを貼り付け［完了］を選択します。
![soracom_msflow005.png](https://qiita-image-store.s3.amazonaws.com/0/49240/1527a1da-4039-645d-47a7-c2d02fb18583.png)

![soracom_msflow006.png](https://qiita-image-store.s3.amazonaws.com/0/49240/7c3c31d3-b79d-c59f-8293-b7f74d0510bf.png)

［要求本文の JSON スキーマ］が登録されていることを確認後、［+ 新しいステップ］→［アクションの追加］を選択します。
![soracom_msflow007.png](https://qiita-image-store.s3.amazonaws.com/0/49240/fe98b649-9f8d-40c4-41e6-2e4e3b1a2275.png)

![soracom_msflow008.png](https://qiita-image-store.s3.amazonaws.com/0/49240/a6b907f7-34f8-3abd-9441-91a2dabdc16d.png)

コネクタとして［Twitter］を選択し、アクションから［Twitter - ツイートの投稿］を選択します。
![soracom_msflow009.png](https://qiita-image-store.s3.amazonaws.com/0/49240/e13d2038-86d7-bd07-88a0-2d926b8a58d8.png)

![soracom_msflow010.png](https://qiita-image-store.s3.amazonaws.com/0/49240/1def49fa-909a-1346-a3ff-30edb530ab9c.png)

コネクタサービスのサインインが未完了の場合は、ここでサインインをしておいてください。
![soracom_msflow011.png](https://qiita-image-store.s3.amazonaws.com/0/49240/4081aba1-f9bf-244c-e1f0-6a14730d78aa.png)

［ツイート テキスト］欄を選択すると、右側にポップアップで［動的なコンテンツ］［式］が表示されるので、そこに記載のある動的コンテンツ・式を利用して、ツイートするテキストを構築します。
![soracom_msflow012.png](https://qiita-image-store.s3.amazonaws.com/0/49240/854283ff-fa72-73dc-bd7f-7abfe096a858.png)

構築が完了したら、［保存］を選択します。
![soracom_msflow013.png](https://qiita-image-store.s3.amazonaws.com/0/49240/eba62828-67c3-b38a-c63e-3c8b1eee8f4d.png)

保存が完了すると、［HTTP POST の URL］が生成されるので、テキストエディタなどにコピーしておきます。
![soracom_msflow014.png](https://qiita-image-store.s3.amazonaws.com/0/49240/44dfb54c-343a-66d7-258f-c7a9534d5e67.png)

## 2. SORACOM Beam の設定

適宜 SIM グループを用意し、［SORACOM Beam 設定］で［HTTP エントリポイント］の追加を選択します。
![soracom_msflow015.png](https://qiita-image-store.s3.amazonaws.com/0/49240/981b6d30-d92e-1d99-b278-abd950a136da.png)

上記［HTTP POST の URL］の URL を元に、設定値を入力し、保存します。
![soracom_msflow016.png](https://qiita-image-store.s3.amazonaws.com/0/49240/24eb6dcf-6dd2-dd6c-1457-8348888a1d2e.png)

```text:urlSample
https://xxxxxxx.japaneast.logic.azure.com:443/workflows/xxxxxxxxxx/triggers/~以下略
```
※説明のため、 /workflows 以下はかなり省略しています。実際の生成URLはもっと長いです。

| 項目       | 設定値 |
|:------------|:-----------------------------|
| 設定名     |適宜入力（ここではMSFlow）|
| パス       |'/' を入力|
| ホスト名   |HTTP POST URL の 'xxxxxxx.japaneast.logic.azure.com' を入力|
| ポート番号 |HTTP POST URL の '443' を入力|
| パス       |HTTP POST URL の '/workflows/xxxxxxxxxx/triggers/~以下略' を入力|

設定後、対象の SIM の所属グループを、上記で設定した SIM グループへ変更しておきます。
![soracom_msflow017.png](https://qiita-image-store.s3.amazonaws.com/0/49240/51ab4a34-faa9-0ee4-cc4c-b4155d958e37.png)


## 3. 動作確認

Wio LTE より Beam 発射！
![soracom_msflow019.png](https://qiita-image-store.s3.amazonaws.com/0/49240/c68a4e54-b3eb-a4a6-fb3c-f51d7edbbc34.png)

その後、Flow の画面上に実行履歴が表示されます。
![soracom_msflow018.png](https://qiita-image-store.s3.amazonaws.com/0/49240/3e6dcec7-b49e-9b04-a757-103946b3e903.png)

無事にツイートもできています。
![soracom_msflow022.png](https://qiita-image-store.s3.amazonaws.com/0/49240/e7ed6967-8bdb-e121-6a16-b08fed550add.png)

Flow の in/out のデータは、履歴で確認することが可能です。
![soracom_msflow020.png](https://qiita-image-store.s3.amazonaws.com/0/49240/3aec34db-9801-f3bb-b678-284ecb367210.png)
![soracom_msflow021.png](https://qiita-image-store.s3.amazonaws.com/0/49240/cc0448f3-6a02-f3d6-e4e1-0dca8bfc2d11.png)

* 上記ツイート画像のツイートは、電話番号丸見えでしたのでツイート削除しました。
* かわりに電話番号項目を削除した版で、再度ツイートしています。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/hashtag/SORACOM?src=hash&amp;ref_src=twsrc%5Etfw">#SORACOM</a> Beam をトリガーにして Microsoft <a href="https://twitter.com/hashtag/Flow?src=hash&amp;ref_src=twsrc%5Etfw">#Flow</a> を実行してます。<br>Wio LTE の温度は 24.30 度、湿度は 62.78 %です。<br><br>※電話番号を曝していたので、かわりのメッセージを残しておきます</p>&mdash; こにゃ@6月病 (@kuroneko_ko2a) <a href="https://twitter.com/kuroneko_ko2a/status/1004778563843735553?ref_src=twsrc%5Etfw">2018年6月7日</a></blockquote>

# おわりに

実際触ってみた感想として、 IFTTT よりも凝ったことができそうだな？と思いました。
まだまだ国内向けサービスのコネクタが、IFTTT に比べて少ないような気もしますが・・・REST API や Webhook のアクションもありますので、ちょっといじくるだけで様々なものと連携できると思います。