Power AutomateでLINE Botのオウム返しをしてみる #linedc


ノーコード（iPaaS）で無料でLINE Botを作る場合は[Make](https://make.com/)で作る記事が多い印象です。

プレミアコネクタが必要ですが、Power Automate（クラウドフロー）でもLINE Botを作れたので紹介します。

Power AutomateだとLINE Notifyで通知するだけの記事はちょくちょくみましたがリプライメッセージに対応したLINE Botを作る記事は他で見かけなかったので誰かの参考になれば幸いです。

## 作るもの オウム返しBot

よくあるオウム返しBOTを作ります。

> <img src="https://i.gyazo.com/c4e6cc602c69fe25f6b49bd9bdc79505.png" width="450px" />

完成系フローはこんな感じ。

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/43462457-7e5c-98ae-9046-59200ce6f31e.png" width="450px" />

## 作り方

まずはLINE公式アカウント（LINE Botのアカウント）を作っておきましょう。

https://zenn.dev/protoout/articles/16-line-bot-setup

**自動化したクラウドフロー**でスタートしましょう。

### 1. トリガー: HTTP受信モジュール(プレミア)

この辺のHTTP関連がプレミア機能なので無償版だと厳しいです。

まずはLINE Botから情報を受け取るためのサーバーを作成する設定です。

`HTTP要求の受信時`を選びます。

> ![スクリーンショット 2024-06-03 11.10.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/0245195e-1a22-ca69-9d2f-615813326458.png "スクリーンショット 2024-06-03 11.10.32.png")

- フローをトリガーできるユーザー: 誰でも
- 要求本文の JSON スキーマ: [こちら](https://zenn.dev/link/comments/9e1b8d864b5997)を指定
- 詳細パラメーター -> メソッド: POST

> ![スクリーンショット 2024-06-03 11.09.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/f287b053-0636-f108-a088-a37df6e6963b.png "スクリーンショット 2024-06-03 11.09.51.png")

### 2. アクション: 変数を初期化

LINE Botに返信をするために利用する`リプライトークン`を格納するための変数（入れ物的な）を用意します。

- name: `replyToken`
- Type: `String`
- Value: （空のままでOK）

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/8ddca0fc-2df8-6503-42da-1c5a49eb2da7.png" width="450px" />

### 3. アクション: （JSONの）作成

次にリプライメッセージを送る際の[メッセージオブジェクト](https://developers.line.biz/ja/docs/messaging-api/message-types/)を作ります。

JSONで検索して`作成`モジュールを選択します。

> ![スクリーンショット 2024-06-03 11.20.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/244ca2b6-8e92-7bae-86d3-5ad2f7c32de7.png "スクリーンショット 2024-06-03 11.20.42.png")

ここでは簡単なテキストメッセージを返信するメッセージオブジェクトを作ります。

```json
[
  {
    "type": "text",
    "text": @{item()?['message']?['text']}
  }
]
```

ちなみに試してないですが、画像も一緒に送りたい場合は以下のようにするとオウム返し+画像送信ができます。（たぶん大丈夫）

```json
[
  {
    "type": "text",
    "text": @{item()?['message']?['text']}
  },
  {
    "type": "image",
    "originalContentUrl": "https://i.gyazo.com/a84c585225af440bd0d5fff881152792.png",
    "previewImageUrl": "https://i.gyazo.com/a84c585225af440bd0d5fff881152792.png"
  }
]
```

### 4. アクション: 文字列変数に追加

- Name: `replyToken` 2の手順で設定した値が選択できます。
- Value: 動的コンテンツから`replyToken`を選択

> ![スクリーンショット 2024-06-03 11.26.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/3f729741-ffc9-d1bf-4053-32bee2311e4f.png "スクリーンショット 2024-06-03 11.26.46.png")

### 5. アクション: HTTP

最後にリプライメッセージを送る処理です。

- URI: `https://api.line.me/v2/bot/message/reply`
- Method: POST
- Headers:
	- `Content-Type`:`application/json; charset=UTF-8`
	- `x-line-signature`: (ここは本当は必要なんだけど暗号化処理が一手間かかるかもだったので一旦空で...)
	- `Authorization`: `Bearer <LINE Botのチャンネルアクセストークン>` （`<`や`>`は含めません)
	> LINE Developersの管理画面より
	> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/aeda3a95-a669-59ae-c874-f4e6aa06c730.png" width="300px" />


> ![スクリーンショット 2024-06-03 11.29.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/69ddbe77-afd4-2c21-65c7-71655b916c75.png "スクリーンショット 2024-06-03 11.29.24.png")

- Body: 以下のように設定します。
	```
	{
  		"replyToken": @{variables('replyToken')},
  		"messages": @{outputs('作成')}
	}
	```

> ![スクリーンショット 2024-06-03 11.37.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/f019c896-819f-a578-27a7-1664c9075e41.png "スクリーンショット 2024-06-03 11.37.26.png")

`replyToken`の値には`変数`の動的コンテンツから`replyToken`を選択、`messages`の値には`(JSONの)作成`の動的コンテンツから`出力`を選択します。

これで設定完了です。

保存しましょう。

### 7. LINE Developers: WebhookURLの設定

Power Automate側の設定はこれで終わりですが、最後にLINE Developers側にURLを設定します。

一度保存すると、`HTTP要求の受信時`のトリガー（manualって名前に何故か変わっている）の中の`HTTP URL`という項目にURLが発行されます。

> <img src="https://i.gyazo.com/c600090646a4417c9ffd11697b122fba.png" width="450px" />


このURLを **LINE DevelopersのWebhook URLに設定**しましょう。

> <img src="https://i.gyazo.com/e84cbf5f9e27457a739dda88de5d3830.png" width="450px" />

`Webhookの利用`のチェックもONにします。

### 8. 完成

これで完成です。再掲ですが、全体はこんな感じのフローになります。

> `作成-MessageObject`などに名前が変わっていますが、わかりやすいように名前を設定することができます。
> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/43462457-7e5c-98ae-9046-59200ce6f31e.png" width="450px" />

保存して、LINEにメッセージを送るとオウム返しをしてくれます。

> <img src="https://i.gyazo.com/c4e6cc602c69fe25f6b49bd9bdc79505.png" width="450px" />

## まとめ

Power AutomateでのLINE Bot設定結構簡単にいきました。

プレミアコネクタなので有料版にはなりますが、有料のものが使える環境にある人は試してみてはいかがでしょう。

Power Automateの公式でLINEのコネクタがあればいいんですけど、Microsoft製品を業務で使ってる環境でLINE Bot作りたいニーズは少なそうなので期待しないほうが良さそうですね苦笑


SDKなどを使わずに実装したときのナレッジが役立ったので記録に残しておくは大事なと改めて実感。

参考: 

https://qiita.com/n0bisuke/items/0ab7b3b38557384370ed
https://qiita.com/n0bisuke/items/56d7ace2193fbc106639