Flex Messageを送信する

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

Flex Messageの構成要素は、コンテナ、ブロック、コンポーネントです。各Flex Messageは、メッセージバブルを含むコンテナという単一の最上位構造を持ちます。コンテナには複数のメッセージバブルを含めることができます。バブルはブロックで構成され、ブロックはコンポーネントで構成されています。

Flex Messageでは、テキストの書字方向を左から右(左横書き)、または右から左(右横書き)に指定できます。

Flex Messageの制限事項

受信端末の環境によって、同じFlex Messageでも描画結果が異なる可能性があります。描画に影響を与える要素には、OS、LINEのバージョン、端末の解像度、言語設定、フォントなどがあります。

Flex Messageのサンプル

他のメッセージタイプと同様に、Flex MessageはJSON形式で記述します。Flex Messageについて詳しくは、以下のページを参照してください。

動作環境

Flex Messageは、すべてのバージョンのLINEでサポートされます。なお、以下の機能は、LINEの特定のバージョンのみサポートしています。

機能iOS版LINE
Android版LINE
PC版LINE
(macOS版、Windows版)
11.22.0以上7.7.0以上
13.6.0以上7.17.0以上

※1 動画をサポートしていないLINEのバージョンにおいてもコンテンツを適切に表示するには、altContentプロパティを指定します。このプロパティで指定した画像が動画の代わりに表示されます。

※2 LINEのバージョンがdecahectoをサポートするバージョンに満たない場合、バブルのサイズはkiloとして表示されます。

Flex Message Simulator

Flex Message Simulatorを使うと、メッセージを実際に送信しなくても、描画された状態を確認できます。

Flex Message Simulator

Flex Message Simulatorについて詳しくは、チュートリアルを参照してください。

「Hello, World!」メッセージを送る

Flex Messageを始めるにあたり、「Hello, World!」をFlex Messageとして送信してみましょう。まず、Flex MessageをJSONで定義し、Messaging APIを呼び出してメッセージを送信します。

Hello, World!

JSONでFlex Messageを定義する

Messaging APIを呼び出してFlex Messageを送信する前に、Flex MessageをJSONで定義します。以下は、JSONでFlex Messageを定義する方法で、"Hello, World!"というメッセージを作ります。このFlex Messageにはメッセージバブルが1つあればよいので、バブルコンテナを使用します。

json
{
  "type": "bubble", // 1
  "body": {
    // 2
    "type": "box", // 3
    "layout": "horizontal", // 4
    "contents": [
      // 5
      {
        "type": "text", // 6
        "text": "Hello,"
      },
      {
        "type": "text", // 6
        "text": "World!"
      }
    ]
  }
}

1~6の説明は以下のとおりです。

dummydummy
1単体のメッセージバブルのコンテナを作成します。このように、コンテナの種類を"bubble"にします。
2バブルの内容を保持するバブルを指定します。メッセージの表示に必要なブロックは、ボディ1点です。
3ボディに、ボックスを設定します。
4ボディの方向を水平に設定します。ボックス内の子コンポーネントが水平に配置されます。
5ボックス内に配置するコンポーネントを指定します。
6「Hello,」と「World!」の2つのテキストを挿入します。

Messaging APIで送信する

Flex Messsageは、「メッセージを送信する」のいずれの方法でも送信できます。メッセージリクエストのリクエストボディで、message.contentsプロパティにFlex Messageオブジェクトの定義を設定します。

以下は、プッシュメッセージを送信するリクエストの例です。

sh
curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
  "to": "U4af4980629...",
  "messages": [
    {
      "type": "flex",
      "altText": "This is a Flex Message",
      "contents": {
        "type": "bubble",
        "body": {
          "type": "box",
          "layout": "horizontal",
          "contents": [
            {
              "type": "text",
              "text": "Hello,"
            },
            {
              "type": "text",
              "text": "World!"
            }
          ]
        }
      }
    }
  ]
}'

関連ページ