MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Automate & Microsoft Lists で 時刻表LINE Botを作る (3) - LINE からのメッセージ受信と応答

第1回: Power Automate & Microsoft Lists で 時刻表LINE Botを作る (1) - データ準備 - MoreBeerMorePower

第2回: Power Automate & Microsoft Lists で 時刻表LINE Botを作る (2) - メインのロジック作成 - MoreBeerMorePower

3回シリーズの Power Automateと Microsoft Lists を使った時刻表Bot作成、今回は LINE との接点部分を紹介します。

前回も簡単に説明しましたが、最初に [ 作成 ] アクションで仮のメッセージを定義していたので、トリガー書き換えがすごくスムーズです。そのほかの時刻変換やアイテム取得は一切書き換える必要がありません。

f:id:mofumofu_dance:20210408224422p:plain
方針:トリガーの書き換えと最初の[作成]を書き換え。最後にHTTPで応答メッセージ

トリガー入れ替え

これまではフローのモバイルボタントリガーを使ってロジックを作ってきましたが、実際にLINEのメッセージ受信用トリガーに置き換えます。

HTTP要求の受信時のトリガーに置き換えたのち、リクエストボディのスキーマとして以下を設定します。

{
    "properties": {
        "events": {
            "items": {
                "message": {
                    "properties": {
                        "address": {
                            "type": "string"
                        },
                        "fileName": {
                            "type": "string"
                        },
                        "fileSize": {
                            "type": "number"
                        },
                        "id": {
                            "type": "string"
                        },
                        "latitude": {
                            "type": "number"
                        },
                        "longitude": {
                            "type": "number"
                        },
                        "packageId": {
                            "type": "string"
                        },
                        "stickerId": {
                            "type": "string"
                        },
                        "text": {
                            "type": "string"
                        },
                        "title": {
                            "type": "string"
                        },
                        "type": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "postback": {
                    "properties": {
                        "data": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                },
                "properties": {
                    "replyToken": {
                        "type": "string"
                    },
                    "source": {
                        "properties": {
                            "groupId": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    },
                    "timestamp": {
                        "type": "number"
                    },
                    "type": {
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "type": "array"
        }
    },
    "type": "object"
}

トリガーの直後にLINEのサーバーに応答を返します。(Botの応答メッセージとは別)

また、最初の [ 作成 ] アクションに以下の式を設定します。

first(triggerBody()?['events'])?['message']?['text']

f:id:mofumofu_dance:20210408225933p:plain
HTTP要求の受信トリガーに置き換え

これでほとんど完了です。

応答メッセージを返す

Bot からユーザーにメッセージを返します。これには HTTP アクションを利用します。

メソッドは POST、URLは応答メッセージ用のものをセットします。

https://api.line.me/v2/bot/message/reply

またボディには変換した時刻と、トリガーから得られるreplyTokenを使って以下のJSONを指定します。

{
  "replyToken": @{first(triggerBody()?['events'])?['replyToken']},
  "messages": [
    {
      "type": "text",
      "text": "@{body('Convert_time_zone_2')}発の電車があります。"
    }
  ]
}

最後にヘッダーですが、ここはLINE Developerポータルからチャンネルアクセストークンを取得してペーストしてください。

f:id:mofumofu_dance:20210408230852p:plain
ヘッダーにはBearerトークンをセットする。これはLINE Developerポータルから

これで仕組みの全体が完成です。

おわり

3回に分けて時刻表をかえすLINE Botの作り方を解説しました。

特にLINE Bot特有の部分はかなり説明を省略したので、詳しい解説は 松本典子さんの記事を参考にしてください。

ascii.jp

Power Automate を利用すると簡単なLINE Botをコーディングなしで作成することができます。

ぜひアイデアを即形にできるこの鉄板の組み合わせ、試してみてください。