こんにちわ、 のりじ です。
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 要求の受信時」トリガーを利用します。
「要求本文の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 要求の受信時」トリガーの出力結果を見てみます。
上図の赤枠内の「Type」の部分が受信した内容によって「Type」の種類が変わりました。
テキスト、スタンプ、画像を送ったときのTypeの結果はこちら
- テキスト:text
- スタンプ:sticker
- 画像:image
この結果を利用すると「テキスト形式のときだけPower Automateで処理を行う」が実現できそうです!
3. トリガーの条件
Power Automateのトリガーでは、「トリガーの条件」を設定できます。
この設定を利用します。
「HTTP要求の受信時」トリガーの「・・・」をクリックし「設定」をクリックします。
以下の内容をコピペします。
@equals(triggerBody()?['events'][0]?['message']?['type'], 'text')
このトリガー条件は「テキストが送信された場合にトリガーを実行する」という内容です。
スタンプや画像を判定したい場合は、「text」の部分を置き換えると対応できます。
4. さいごに
今回の方法は「フロー実行を削減したい」場合に活用できるかと思います。
また、LINE Messaging APIを「HTTP 要求の受信時」トリガーで受信した場合の結果に「送信内容のTypeが含まれている」ことを確認できたのがよかったです。
今回はトリガー条件に利用しましたが、フロー内の判定条件にも使えるので出来ることが増えそうです!