[Azure] Logic Appsを使ってみる(slack/chatter/yammerと連携)

# Logic Appsとは

Azure Logic Appsは、様々なサービスやデータを連係させるアプリケーションを簡単に作成可能なPaaSサービスです。
提供済みのコネクタを組み合わせて、GUIでワークフローを実装することができます。

最新のコネクタ一覧は [こちら](https://docs.microsoft.com/ja-jp/azure/connectors/apis-list) で確認できます。
https://docs.microsoft.com/ja-jp/azure/connectors/apis-list

今回は一例として、httpリクエストを受けて、メッセージをslack/chatter/yammerにPostするアプリを作成してみます。

分岐処理を試すため、ツール名を指定して投げ先を変えてみます。処理の流れを図にするとこんな感じです。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/4772fa1c-ec75-93d3-b3cf-e8a777747f33.png)

# Logic App作成

## Logic Appの新規作成

Azure Portalで、Logic Appを作成します。作成時に指定するのは名前とリソースグループ程度です。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/cb69252c-0fc9-5065-6b41-cfc37754e003.png)

作成されるとすぐにウィザードが起動します。テンプレートも色々用意されていますが、今回は「空のロジックアプリ」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/7d0a04e3-866c-1a18-c4ef-da60c6f5302f.png)

最初のステップとして、「要求と応答」を選択し、httpリクエスト(の受信)を設定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/9b6bee8a-e9fe-666e-6b1b-7ff13d48d0c5.png)

リクエストに、用意しておいたJSONスキーマを設定します。URLは保存後に発行されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/8da6ee25-a015-02b1-173b-36d60a8577ce.png)

## JSONパースを追加

以降の処理でリクエスト中の値を使用するため、JSONパースを追加します。「＋ステップの追加」で、「データ操作 - JSONの解析」を追加します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/3a7afbf9-8238-42c1-eb66-5d5ad8edb665.png)

追加されたダイアログで
- ステップ名を"JsonParse"に変更(<font color="Red">デフォルトは"JSONの解析"ですが、全角文字は保存時にエラーが出てしまう</font>ので半角文字に変更しておきます)
- コンテンツに「本文」を設定
- スキーマに、リクエストに設定したものと同じJSONスキーマ
を設定します
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/0f5d606a-33ee-cddd-4570-bf6d512cabee.png)

## 分岐と投稿処理を作成

"tool_name"によって、各ツールに投稿する処理を作成します。「＋ステップの追加」で、「Switch Caseの追加」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/413cab81-63b4-6145-bd67-b3d3335aa54c.png)

変数に <b>```@body('JsonParse')['tool_name']```</b> を入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/7140d1c5-1886-daf0-b62c-04c47a2c3ce0.png)

最初のケースで、メッセージの投稿先にSlackを設定します。アクションから「Slack - 投稿メッセージ」を選択し、
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/36b94533-9ca6-d8f4-d3e2-d6323d226e95.png)

Slackにログイン後、チャンネル名とメッセージ ( <b>```@body('JsonParse')['message']```</b> ) を入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/5daa75b6-f661-aad3-0c2b-d776a6e40862.png)

2つ目のケースで、メッセージの投稿先にChatterを設定します。同様にアクションから「Chatter - Post to a group」を選択し、メッセージに <b>```@body('JsonParse')['message']```</b> を入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/11b2fd70-7abc-2814-617a-3ed1f5aa0611.png)

最後に「その他」のケースでyammerを設定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/18869762-c468-0ee6-8e1d-9ef73a73e2b4.png)

以上でLogic Appが作成できました。

# 動作確認

保存後、最初の「要求」ステップを開くと投稿用のURLが発行されています。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/f9ce4813-3906-c240-91b6-446b0d4d80a9.png)

Slackに投稿してみます。

```sh
$ curl -H "Content-type: application/json" -X POST -d '{"tool_name":"slack","message":"logic app test to slack"}' '<ポータルで確認したURL>'
```

投稿されました。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/dd88c719-d6db-85fa-3b94-168050bed7a9.png)

Chatterに投稿してみます。

```sh
$ curl -H "Content-type: application/json" -X POST -d '{"tool_name":"chatter","message":"logic app test to chatter"}' '<ポータルで確認したURL>'
```

投稿されました。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/9982ec7c-42c7-55cb-7111-052824c54fc3.png)

それ以外でyammerに投稿できるか確認してみます。

```sh
$ curl -H "Content-type: application/json" -X POST -d '{"tool_name":"other","message":"logic app test to yammer"}' '<ポータルで確認したURL>'
```

投稿されました。
![image](https://qiita-image-store.s3.amazonaws.com/0/172826/fae5ecc9-0504-685c-d3b6-77e48269e852.png)

以上で設計通り動作することが確認できました。

このようにGUIだけで簡単にアプリケーションが作成できるので、コネクタが提供されているものはLogic Appsの利用をまず検討してみるとよいと思います。

# 参考資料

- [Logic App Service](https://azure.microsoft.com/ja-jp/services/logic-apps/)