Power Automate と LINE で通信する方法

#はじめに

表題の通り、Power Automate と LINE で通信する為の接続方法および送受信方法を記載します。

#LINE の設定

##LINE Developersにログイン
「[LINE Developers](https://developers.line.biz/ja/)」から、ログインします。
お使いのLINE ID でログインしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/2e3d87dc-434b-8082-21cf-bfd39d93bc17.png)

「[LINE Developers コンソール](https://developers.line.biz/console/)」を開きます。

##プロバイダーの作成
「新規プロバイダー作成」を選択します。名前は任意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/bf805c7b-a725-177d-5dad-8a75cf3f5a94.png)

##チャンネルの作成
「Messaging API」を選択します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/8cb3476f-a2ce-56e7-6a63-c32111feb6a3.png)

「チャンネルアイコン」、「チャンネル名」、「チャンネル説明」、「大業種」、「小業種」に任意の値を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/d2b9bd33-ad85-dc4b-e602-9176751c6faf.png)

同意項目にチェックし「作成」クリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/ee637a42-d322-9a6c-b75f-41fd11a4d7a4.png)

##チャンネルの設定
「Messaging API設定」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/ebbd1216-fca5-88ff-06a0-a56fece99a83.png)

前もって、QRコードをご利用のLINEアカウントで読み込む等し、チャンネル登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/2a90d0dd-3e38-bbaf-8aca-7f0233268bd2.png)

「応答メッセージ」の「編集」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/0cf4b4f9-f907-c329-867c-18923c46f925.png)

「応答メッセージ」をオフにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/d9e3ba1b-f593-4879-6d73-3411eff7ebcd.png)

元の画面に戻り、「チャンネルアクセストークン」で「発行」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/ca469bea-74e3-bd4b-2b06-9e92245c0b92.png)

アクセストークンをコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/aaa38cc2-892b-3636-d2cf-842205657de3.png)


#Power Automate の設定

「インスタント クラウド フロー」を選択し
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/7122339e-ddc6-3fa8-cea5-dfa6abb7c1dd.png)

##LINEからの受信を設定
フロー名に任意の値を設定し、「HTTP 要求の受信時」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/01aa188c-a9e6-face-086e-3596d4a484f6.png)

フローエディタが開いたら、「HTTP 要求の受信時」を開き、「サンプルペイロードを使用してスキーマを生成する」をクリックし、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/1677888e-fb4b-10f5-f60f-ff6c4b0cb6c1.png)

下記の値を入力し、「完了」します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/602b1c91-3be4-402a-aadb-49cbbef6270e.png)

```
{
    "type": "object",
    "properties": {
        "events": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "type": {
                        "type": "string"
                    },
                    "replyToken": {
                        "type": "string"
                    },
                    "source": {
                        "type": "object",
                        "properties": {
                            "userId": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "timestamp": {
                        "type": "integer"
                    },
                    "mode": {
                        "type": "string"
                    },
                    "message": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            },
                            "id": {
                                "type": "string"
                            },
                            "text": {
                                "type": "string"
                            }
                        }
                    }
                },
                "required": [
                    "type",
                    "replyToken",
                    "source",
                    "timestamp",
                    "mode",
                    "message"
                ]
            }
        },
        "destination": {
            "type": "string"
        }
    }
}
```
ここで、一旦、フローの保存を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/fc56a30d-022d-2410-355d-bcc5d924e57b.png)

保存すると、「HTTP 要求の受信時」にPOST用のURLが生成されますので、値をコピーし、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/6d652754-a25e-ec6a-9e88-4b78b0e42261.png)

LINE Developers にて作成したチャンネルの、「Messaging API」にて、「Webhook設定」で「編集」を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/1d89dc40-1f92-1202-129d-5e7e796110ae.png)

Power Automate で生成されたPOST用URLを選択し、更新します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/6e826528-abb7-8e0d-b5dc-01f6512550c8.png)

さらに、「Webhookの利用」をONにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/7b9a05b5-87ab-2a27-c39d-7ef98395eb39.png)

ここで、チャンネル登録したLINEアカウントからメッセージを送付すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/171d7049-7631-361d-8d20-23ada8ed8bd0.png)

Power Automate で受信できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/a969cd46-33e3-40c8-7ddb-cfc190dea4f7.png)


##LINEからのメッセージの取得
LINEで入力したメッセージは以下の内容で取得が可能です。

```
triggerBody()?['events']?[0]?['message']?['text']
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/96e9f0f1-43fe-17f4-a1b7-e36d1b9109f3.png)

取得できました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/7379ed94-5990-95ff-7a0a-e7b8deef5b5e.png)

##メッセージ送信ユーザーのIDを取得
LINEからメッセージを送信したユーザーのIDは以下の内容で取得が可能です。
このユーザーIDを返信時に指定することで、メッセージを送信した人に返すという仕組みが成り立ちます。

```
triggerBody()?['events']?[0]?['source']?['userId']
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/11bb876a-fa3b-093b-c1f9-48ce856f3389.png)


##LINEへの送信を設定

「HTTP」アクションを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/9ae432d5-0034-ff55-afb5-48dec903004e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/cb8df25a-e463-c9d9-6ce6-57704a91854b.png)
各項目に以下の値を設定してください。

| 項目|キー|値|
|:-----------|:------------|:------------|
| 方法|-|POST|
| URI|-|https://api.line.me/v2/bot/message/push|
| ヘッダ１|Content-Type|application/json|
| ヘッダ２|Authorization|'Bearer ' と [LINE Developersでコピーしたチャネルアクセストークン]|
| 本文|-|[下記]|

本文には以下を設定します。
messages部分にFlex Messageの要素を設定することで、文字色やサイズを変えたり、画像を表示するといったリッチなメッセージの表示が可能です。
詳細は[Flex Messageを送信する](https://developers.line.biz/ja/docs/messaging-api/using-flex-messages/)を参照ください。

```
{
  "to": "[上記で取得したメッセージ送信ユーザーのID]",
  "messages": [
    {
      "text": "[LINEに送るメッセージ]",
      "type": "text"
    }
  ]
}
```


今回のような「LINEから応答⇒返信」の場合には、LINEに返信する際に指定するユーザーIDは決まっていますが、
他のトリガー等で起動したフローからLINEにメッセージ送信する場合には、送信先ユーザーIDの指定が必要です。
チャネル設定画面の「チャネル基本設定」下部にある「あなたのユーザーID」になります。
送信先ユーザーIDはLINE側のプロバイダーごとに一意です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/f9f63dcb-eaad-9dbb-d8ed-c4efbeb2b61f.png)



##動作確認

LINEからメッセージを送信すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480768/2544343c-387a-d86e-ec6c-cff4421e597c.png)

海の怪物クラーケンが冷静に返信してくれました。

#まとめ

LINE と Power Automate の組み合わせはとても強力です。
この記事が便利で素敵なアプリを作る手助けになれば幸いです。