Logic App × LINE Messaging API で買い時の株アラートをラインに送付する！

新型コロナウイルスの影響で日本の株式がガクッと下がっています。こんな時こそワクチン開発や検査機器開発の会社へ投資して社会貢献したいところです。(そんなこと思うのは私だけでしょうか、、？笑) 今回は目をつけている株価が特定の価格になった際に、そのアラートをラインで受け取るシステムを実装してみようかと思います。

今回の実装時間はまったく何もない状態から実装すると30分~1時間、手順は以下の通りです。

* Yahoo!ファイナンス / Outlook Online で株アラートを受け取る設定をする
* LINE Message API を設定する
* Logic App で Logic を作成する

では早速やってみましょう！！

#Yahoo!ファイナンス / Outlook Online で株アラートを受け取る設定をする
##Yahoo!ファイナンスのアラート設定
まずは Yahoo!ファイナンスでメールアラートの設定をしましょう。Yahoo! アカウント(無料)さえあれば作成することが可能です。以下のページから気になる銘柄を検索します。
参考情報 : [Yahoo!ファイナンス](https://finance.yahoo.co.jp/)
Yahoo!ファイナンスで気になる銘柄を見つけたら、「アラート設定」を行います。今回は例として、`富士フィルムホールディングス(株)` のアラートを設定します。例として、指値(高値)「5600円」、指値(安値)「5500円」を設定します。また、今回はLINE Message API を使用しますので、メール形式を `テキスト` に設定します。メールアドレスは今回使用するものを設定しましょう。(Yahoo!アカウント以外も設定可能です)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/7d00762c-0db7-fd61-8f3a-8592e0181714.png)
設定が完了すると、指定した株価になったときに指定したアドレスにメールアラートが飛ぶようになります。

##Outlook 側の設定
次にメールを受け取る Outlook の設定をします。
参考情報 : [Outlook](https://outlook.live.com/owa/)
Logic App では特定のメールフォルダを監視するロジックを作成するので、ここでは Outlook で新しいフォルダを作成し、新しいルールを設定します。今回は新しく「株アラート」というメールフォルダを作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/741b1758-e345-2fb4-73d9-db5b067eeefe.png)
Outlook Online の設定から、「新しいルール」を設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/ef0d46a0-3032-5602-2832-f23f8cb07b41.png)
Yahoo!ファイナンスのアラートのアドレスを、新しいルールの差出人に設定し、「株アラート」のフォルダにメールが仕分けられるようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/7998f108-18c2-a563-4e0d-4542d5c32b6d.png)
これで Outlook 側の設定は完了です。先ほど設定した株アラートが Yahoo!ファイナンスから送られる際に、「株アラート」というフォルダにメールが仕分けられるようになりました。

#LINE Message API を設定する
LINE Message API を使用するためには、LINE アカウントで LINE Developers にログインします。
参考情報 : [LINE Developers](https://developers.line.biz/ja/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/dccbbc49-2434-0f98-270c-4c50f0f7e29f.png)
ログインできたら、Messaging API にアクセスします。以下 URL から直接アクセスすることもできます。アクセスしたら「いますぐはじめよう」をクリックします。
参考情報 : [LINE Messaging API](https://developers.line.biz/ja/services/messaging-api/)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/ba71269e-b1e1-3614-b6d1-fe458defd6da.png)

LINE Developers で LINE Messaging API を取得するには、① Provider の作成、② チャネルの設定、③ Access Token の取得の 3 STEP を行います。
##Provider の作成
Provider を作成します。今回は `Kabu` という Provider を作成しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/6ead4306-44f2-81a1-aaa5-9b9bca49151a.png)
Provider を作成したら、新しいチャネルを作成します。必要事項等を色々入力して(iconなど)作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/2f9b969c-5c14-d611-a59e-00f2ecbc9ace.png)
今回はこんなチャンネルを作成しました。Icon 等はあとからでも変更できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/14e4f43c-7218-823b-2110-34c742a5a0b7.png)
作成できたら、Logic App に必要な情報をコピーします。今回必要な情報は、① Your user ID と ② Chennel access token です。チャネル設定画面の、Basic Setting と Messaging API から情報を取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/194238c4-70af-647b-ebdf-16fdac780786.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/80b0a831-42b2-e850-9001-5c21cb9cddec.png)
メモ帳などにコピーしておきましょう。

#Logic App でロジックを作成する
次にアラートを LINE に飛ばすための Logic を作成します。Azure Portal から Logic App リソースを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/89282a35-30be-08e2-4e42-b8e7469c27d3.png)
まずトリガーとして、メールを受信したときを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/91fef31f-0bc7-c222-7c7c-88c315c2530b.png)
一番最初に設定した Outlook でログインすると、Folder で「株アラート」を選べます。その他のパラメータはデフォルトのままでOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/0fd932a1-5de5-e05c-1854-60d8933b19a2.png)
次にアクションを追加で、HTTP を作成します。HTTP には以下の様に設定します。URI は LINE に PUSH API を投げるエンドポイント `https://api.line.me/v2/bot/message/push`、ヘッダーに、シークレットトークンとContent Type を入力します。メッセージの中は JSON で `Messages` と `to` の情報を記載します。LINE API のドキュメントに従って以下の様な形で書きます。

```json
{
  "messages": [
    {
      "text": @{triggerBody()?['Body']},
      "type": "text"
    }
  ],
  "to": "コピーした UserID"
}
``` 
全体的にはこのような形になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/6737926a-7997-b93f-c075-2e79303b4a21.png)

ここまで設定できれば完了です。Logic App を起動させると、新しいメールがフォルダに受信した際に、以下のようなメッセージが LINE で届きました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/149921/6fb95304-197e-7d00-c1d2-7a4538bf4f5a.png)
アプリ等だと見逃してしまう可能性がありますが、LINEでメッセージを受け取ることで、目を付けている銘柄の情報を見逃すことなく取得することができるのではないでしょうか。Logic App でちょっと JSON を書く部分以外はノンコーディングでできるので、投資家の方々にも試しに使っていただきたいです(笑)

#(捕捉)LINE Messaging API
Logic App にデフォルトで LINE Massaging API との連携するコネクタは含まれてないですが、HTTP コネクタを使用することで非常に簡単につなぐことが出来ます。今回は `Text` を扱いましたが、写真や動画、カード等が扱えます。どれも JSON 形式でメッセージを PUSH することができるので是非試してみて下さい！

参考情報 : [プッシュメッセージを送る](https://developers.line.biz/ja/reference/messaging-api/#send-push-message)

>ユーザー、グループ、またはトークルームに、任意のタイミングでプッシュメッセージを送信するAPIです。(注)フリープランまたはベーシックプランのLINE＠アカウントでは使用できません。

```js
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "to": "U4af4980629...",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'
```

その他 LINE Massaging API で送れるコンテンツタイプについては、以下の Qiita Blog がよく纏まっていました。
[LINE Messaging API でできることまとめ【送信編】](https://qiita.com/kakakaori830/items/52e52d969800de61ce28)