【LINE API】LINE botは味濃いめであとはFlex Messageで

## はじめに

この記事では味のないLINE botをリッチにして味濃いめにするための方法が書かれています。なお、今回は具体的な作り方については解説しません。

## この記事で伝えたいこと(Point)

- LINE Botでメッセージを見たいときもっとリッチに送信できるよ
- リッチに送信したいときはFlex Messageが使えるよ
- Flex Messageはツールを使うと簡単に作成できるよ
- 他にもいろんな表現方法があるよ

## LINE Botを作るのは良いのだけど

多くの人がテキストベースでLINE Botを開発している頃だと思います。
実際にGoogleで検索するとさまざまなLINE Botの事例が見つかりますが、その多くはテキストベースであるように見えます。

ですが、実際のところはもうちょっと変化のある応答が欲しいなと思う時もあります。

たとえば

- 動画はリンクではなくプレビューとして見せて、ユーザにはプレビューをクリックしてもらう
- 複数のリンクがあるときは箇条書きではなく、ユーザが操作できるようにしておく
- 次に何をしたら良いかぱっと見で判断できるようにしたい

などです。そこでそんな時に使えるのが、Flex Messageです。

## Flex Messageとは

簡単に説明するとLINEから送られてくるメッセージを加工してキレイに見せる仕組みです。
公式ドキュメントでは以下のような記載があります。

> Flex Messageは、通常のLINEメッセージに比べ、より豊かでインタラクティブなレイアウトが可能なメッセージです。通常のLINEメッセージでは、テキスト、画像、動画など1種類のソースしか配信されません。しかし、Flex Messageでは、CSS Flexible Box（CSS Flexbox） (opens new window)の仕様に基づいて、レイアウトを自由にカスタマイズできます。

[参考 - Flex Messageを送信する](https://developers.line.biz/ja/docs/messaging-api/using-flex-messages/)

キレイに見せる用途もありますが、ユーザに次のアクションを促す仕組みでもあります。
どんな機能があるのか細かく見ていきましょう。

## Flex Messageの概要

Flex Messageというのはコンテナ、ブロック、コンポーネントという3つの要素で構成されます。
そして、見せ方としてはバブルとカルーセルというものがあります。

バブルは単一のFlex Messageでカルーセルは横並びのFlex Messageです。
なんだか難しく感じるかもしれません。実際のところ、Flex MessageはJSONで表現されます。

「え、じゃあ、JSONが書けないとFlex Messageは使えないってこと？！」と思ったかもしれませんが、そんなことはありません。Flex MessageはFlex Message Simulatorで簡単に作成できます。

## Flex Message Simulatorを使おう

実際に利用するためにはLINEのアカウントが必要です。
なお、Flex Message Simulatorの使い方を覚えたい場合は公式チュートリアルがありますので興味のある人は覗いてみると良いでしょう。

[チュートリアル - Flex Message Simulatorでデジタル名刺を作成する](https://developers.line.biz/ja/docs/messaging-api/using-flex-message-simulator/)

余談：以前はインストールしないと利用できないFlex Message Simulatorでしたが、現在はWebベースで利用できます。

### 実際に開いてみる

実際に開いてみるとこんな感じで画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/9929c43b-9287-2cb0-3f11-938edde72ba8.png)

いくつか作ってみましょう。

## Flex Message Simulatorを実際に操作する

画面左側が実際に送信された時の画面、ツリー状に表示されている画面が裏側の構成になります。
裏側の構成がJSON形式で送信されるようなイメージです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/2b5e7411-70a5-44f7-6c2d-8a33532450d9.png)

headerがまだないので追加してみましょう。

### headerにboxを追加してみる

headerをクリックすると`box`という文字が表示されますのでクリックします。

![Screenshot 2024-11-03 at 8.35.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/b55b8cec-7875-b69c-cfb6-487eae55a471.png)

細かくてわからないかもしれませんが、左のプレビューを見ると画像の上に余白が作成されたと思います。

![Screenshot 2024-11-03 at 8.38.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/e732677e-b118-ef04-fd79-8c767e0af4a6.png)

### テキストを追加する

次に先ほど同じ+ボタンをクリックして`text`を選択します。

![Screenshot 2024-11-03 at 8.42.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/f63ded4a-bda8-3577-9de0-2f73b384a650.png)

追加すると以下のように`hello,world`のテキストが表示されます。

![Screenshot 2024-11-03 at 8.44.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/023ff0ca-d5be-5688-7204-e780bb410677.png)

## 作成したFlex Messageを送信する

プレビュー画面で表示できるとはいえ、実際に送信して見え方を確認したいことがあると思います。
Flex Message SimulatorではSendすることでLINEのメッセージを送信できます。

実際にやってみましょう。画面右側の`Send...`をクリックします。

![Screenshot 2024-11-03 at 8.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/91cbfdf4-adf8-e72c-e417-14fc4fe654c7.png)

送信先を指定するための画面が表示されるため、送信先アカウントを選択して`Send`をクリックします。

![Screenshot 2024-11-03 at 8.50.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/345c9fb4-5675-ee89-e88e-9e618ac33872.png)

LINEアプリにログインして送信されたメッセージを確認します。

##実行結果

![Screenshot_20241103-085343.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/f9a0c189-4bc3-bb54-4ec0-8cebf4e18ef9.png)

## で、実際のところどんな時に使えばいい

なんとなくで操作方法を見ていきましたが、では実際にはどう扱っていけば良いのでしょうか。昨今ではAIを使ったLINE Botが人気です。

AIとおしゃべりする際にテキストを入力してお話をすると思いますが、ワンタップで会話できたのであればUXとしてはとても良いです。入力する際にデータの入力を制限する、入力の余地をなくすといっても良いでしょう。

たとえば

- 日付入力ではdatepickerを表示する
- URLはリンクではなく、ボタンで表示する
- 複数の選択肢を表示するときは、複数のバブル（カルーセル）で表示する

などです。
必要に応じてアクションを使っても良いでしょう。

[アクション](https://developers.line.biz/ja/docs/messaging-api/actions/)

AIと噛み合わせたいときについてはFunction Callingとの相性が良いため、特定の問い合わせが来たら専用のFlex Messageを飛ばすということも可能です。

## まとめ

今回はFlex Messageの概要とFlex Messageの使い方について見ていきました。
テキストをやりとりしても良いですが、可能であればもっとリッチにやりとりできたらインパクトがあると思います。

リッチというとリッチメニューという機能がLINEのプラットフォームにはあります。これもFlex Message同様にユーザに対してアクションを促せるとても重要な機能ですが、Flex Messageとは若干ニュアンスの違うものになります。別の機会に見ていきたいと思います。