6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINEから送信した内容の種類でトリガーを操作する(Power Automate / Azure Logic Apps)

Posted at

こんにちわ、 のりじ です。

LINE Messaging APIは、LINEアプリと外部システムを連携させるためのAPIです。
これを使うことで、LINEを通じて自動的にメッセージを送信したり、ユーザーからのメッセージを受信して処理したりできます。また、「テキスト」「スタンプ」「画像」などいろいろな形式を利用することができます。

LINE Messaging APIは、Power Automate / Azure Logic Appsを使うと、をノーコードで利用することが可能です。
Power Automate / Azure Logic Appsを利用する場合、「テキスト形式のときだけPower Automateで処理を行う」のように、送られてくるメッセージの種類によってトリガーの操作ってできるのか?と気になったので検証してみました。

結論から言うと できました!!
方法を記載しておきます。

今回はPower Automateを利用した説明ですが、Azure Logic Appsでも同様の設定ができます。

1. Power AutomateでLINE Messaging APIを使う

Power AutomateでLINE Messaging APIを使う場合、「HTTP 要求の受信時」トリガーを利用します。

20240901_1.jpg

「要求本文のJSONスキーマ」には、以下を利用します。

{
    "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"
                            }
                        }
                    },
                    "richMenuId": {
                        "type": "string"
                    }
                },
                "required": [
                    "type",
                    "replyToken",
                    "source",
                    "timestamp",
                    "mode",
                    "message",
                    "richMenuId"
                ]
            }
        },
        "destination": {
            "type": "string"
        }
    }
}

このJSONは、LINEプラットフォームから受信するイベントデータの形式を定義するスキーマです。
JSONスキーマ自体は受信するデータの形式を定義するものなので、Power Automateのトリガー制御には直接関与しません。
そこで、送られてくるメッセージの種類によってトリガーの操作をしたい場合は、Power Automate側でフィルタリングを行う必要があります。

2. LINE Messaging APIの結果

「HTTP 要求の受信時」トリガーの出力結果を見てみます。

20240901_3-1.jpg

上図の赤枠内の「Type」の部分が受信した内容によって「Type」の種類が変わりました。
テキスト、スタンプ、画像を送ったときのTypeの結果はこちら

  • テキスト:text
  • スタンプ:sticker
  • 画像:image

この結果を利用すると「テキスト形式のときだけPower Automateで処理を行う」が実現できそうです!

3. トリガーの条件

Power Automateのトリガーでは、「トリガーの条件」を設定できます。

この設定を利用します。

20240901_3.jpg

「HTTP要求の受信時」トリガーの「・・・」をクリックし「設定」をクリックします。

20240901_4.jpg

以下の内容をコピペします。

@equals(triggerBody()?['events'][0]?['message']?['type'], 'text')

このトリガー条件は「テキストが送信された場合にトリガーを実行する」という内容です。
スタンプや画像を判定したい場合は、「text」の部分を置き換えると対応できます。

4. さいごに

今回の方法は「フロー実行を削減したい」場合に活用できるかと思います。
また、LINE Messaging APIを「HTTP 要求の受信時」トリガーで受信した場合の結果に「送信内容のTypeが含まれている」ことを確認できたのがよかったです。
今回はトリガー条件に利用しましたが、フロー内の判定条件にも使えるので出来ることが増えそうです!

6
4
0

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
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?