# メッセージを送信する

作成したボットは、大きく分けて2種類の送信方法(応答メッセージプッシュメッセージ)を利用して、さまざまなタイプのメッセージをユーザーに送信できます。

dummy dummy
送信方法
  • 応答メッセージ
  • プッシュメッセージ
    • プッシュメッセージ(1対1)
    • マルチキャストメッセージ(1対多:ユーザーID指定)
    • ナローキャストメッセージ(1対多:絞り込み配信)
    • ブロードキャストメッセージ(1対多:すべての友だち)
メッセージタイプ
  • テキストメッセージ
  • スタンプメッセージ
  • 画像メッセージ
  • 動画メッセージ
  • 音声メッセージ
  • 位置情報メッセージ
  • イメージマップメッセージ
  • テンプレートメッセージ
  • Flex Message
メッセージタイプについて詳しくは、「メッセージタイプ」を参照してください。

# メッセージの送信方法

Messaging APIでは、大きく分けて2種類の送信方法(応答メッセージプッシュメッセージ)を利用できます。

# 応答メッセージ

応答メッセージは、ユーザーがLINE公式アカウントを友だち追加したり、LINE公式アカウントにメッセージを送ったりなど、ユーザーのアクションに応答するためのメッセージです。

ボディには、Webhookイベントに含まれている応答トークンを指定します。1回のリクエストでメッセージオブジェクトを最大5つまで送信できます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/message/reply \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
    "messages":[
        {
            "type":"text",
            "text":"Hello, user"
        },
        {
            "type":"text",
            "text":"May I help you?"
        }
    ]
}'

詳しくは、『Messaging APIリファレンス』の「応答メッセージを送る」を参照してください。

# プッシュメッセージ

プッシュメッセージは、任意のタイミングでユーザーに送信できるメッセージです。以下のいずれかの方法で送信できます。

送信方法 説明
プッシュメッセージ ユーザー、グループ、トークルームを指定してメッセージを送信します。たとえば、ショッピングサイトで商品を購入したユーザーに対して、商品の発送を通知する場合に使用します。
マルチキャストメッセージ 複数のユーザーIDに対して、同じメッセージを効率よく送信します。たとえば、ショッピングサイトを利用したことがあるユーザーに対して、新機能を一斉に通知する場合に使用します。
ナローキャストメッセージ 複数のユーザーに対して、同じメッセージを送信します。送信対象は、属性情報(性別や年齢、OSの種類、地域など)やリターゲティング(オーディエンス)を利用して指定します。
ブロードキャストメッセージ LINE公式アカウントと友だちになっているすべてのユーザーに、同じメッセージを送信します。

応答メッセージとは異なり、プッシュメッセージには応答トークンは不要です。1回のリクエストでメッセージオブジェクトを最大5つまで送信できます。

メッセージ通数のカウント方法について

メッセージ通数は、メッセージの送信対象となった人数でカウントされます。たとえばメッセージオブジェクトを4件指定したプッシュメッセージを、5人いるトークルームに対して1回送った場合、カウントされるメッセージ通数は5通です。1回のリクエストで指定したメッセージオブジェクトの件数は、メッセージ通数には影響しません。

またLINE公式アカウントをブロックしているユーザーIDや、存在していないユーザーIDなど、メッセージが実際には届かないユーザーを宛先に指定してメッセージを送信した場合は、メッセージ通数にはカウントされません。

マルチキャストメッセージのリクエストの例

curl -v -X POST https://api.line.me/v2/bot/message/multicast \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{
    "to": ["U4af4980629...","U0c229f96c4..."],
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'
プッシュメッセージを送信できるユーザー

以下のいずれかの条件を満たすユーザーに対して、プッシュメッセージを送信できます。

  • LINE公式アカウントを友だち追加しているユーザー
  • LINE公式アカウントを友だち追加したことはないが、過去7日間以内にLINE公式アカウントにメッセージを送信したことがあるユーザー(LINE公式アカウントをブロックしているユーザーを除く)

# 属性情報やリターゲティングを利用して複数のユーザーに送信する(ナローキャストメッセージ)

複数のユーザーに、任意のタイミングでプッシュメッセージを送信します。送信対象は、属性情報(性別や年齢、OSの種類、地域など)やリターゲティング(オーディエンス)を利用して指定できます。グループまたはトークルームにメッセージを送ることはできません。

ナローキャストメッセージは、以下の流れで送信します。

  1. 送信対象を準備する
  2. ナローキャストメッセージの送信を開始する
  3. ナローキャストメッセージの進行状況を確認する
非同期に送信されます

ナローキャストメッセージは、バックグラウンドで非同期に送信されます。送信開始時は必ず成功しますが、送信開始後、失敗している可能性があります。送信が成功したかどうかは、進行状況を確認してください。

# 送信対象を準備する

送信対象によって、準備する情報が異なります。これらの送信対象は、演算子(AND、OR、NOT)を利用して合成できます。たとえば、「メッセージAを受信したユーザー」または(OR)「メッセージBのURLをクリックしたユーザー」を送信対象にできます。

送信対象 準備する情報
LINE公式アカウントを友だち追加したすべてのユーザー なし
ユーザーIDやIFA(Identifier For Advertisers)で特定できるユーザー
過去に配信したメッセージのURLをクリックしたユーザー クリックリターゲティング用のオーディエンスを作成する
過去に配信したメッセージを開封したユーザー インプレッションリターゲティング用のオーディエンスを作成する
過去に配信したメッセージを受信したユーザー 過去に配信したナローキャストメッセージのリクエストIDを、レシピエントオブジェクトの再配信オブジェクトで指定する
チャットに特定のタグが付いているユーザー LINE Official Account Manager (opens new window)でチャットタグオーディエンスを作成する
特定の経路でLINE公式アカウントを友だち追加したユーザー LINE Official Account Manager (opens new window)で追加経路オーディエンスを作成する
LINE Tagのトラッキング情報で絞り込んだユーザー LINE Official Account Manager (opens new window)LINE広告 (opens new window)でウェブトラフィックオーディエンスを作成する
以前に送信した動画を視聴したユーザー LINE広告 (opens new window)で動画視聴オーディエンスを作成する
アプリ内のイベントに参加したユーザー(アプリを開く、アプリ内で購入するなど) LINE広告 (opens new window)でアプリイベントオーディエンスを作成する
注意

チャットタグオーディエンス、追加経路オーディエンス、動画視聴オーディエンス、アプリイベントオーディエンスおよびウェブトラフィックオーディエンスは、Messaging APIでは作成できません。

# オーディエンスが配信に利用できることを確認する

オーディエンスの作成は、バックグラウンドで非同期に行われます。オーディエンスのステータスがREADY(配信に利用可能)になったことを確認してから、ナローキャストメッセージの送信を開始します。

オーディエンスのステータスは、以下のエンドポイントで確認できます。

curl -v -X GET https://api.line.me/v2/bot/audienceGroup/{audienceGroupId} \
-H 'Authorization: Bearer {channel access token}'

レスポンスのstatusプロパティが、READY(配信に利用可能)になっていれば、そのオーディエンスを送信対象に指定して、ナローキャストメッセージの送信を開始できます。

オーディエンスのステータスを確認する方法について詳しくは、『Messaging APIリファレンス』の「オーディエンスの情報を取得する」を参照してください。

# ナローキャストメッセージの送信を開始する

ナローキャストメッセージは、以下のオブジェクトを組み合わせることで、複雑な条件でメッセージの送信対象を指定することができます。

たとえば、2つのオーディエンスどちらにも含まれているユーザーで、15〜20歳以外の女性にのみメッセージを配信するといった複雑な条件も指定できます。

narrowcast message

なお配信可能な上限数を超えてメッセージを送ろうとすると、配信に失敗します。 limit.upToRemainingQuotaプロパティを指定することで、配信可能な上限数の範囲内でメッセージを送信できます。 メッセージを配信可能な上限数については、「Messaging APIの料金」を参照してください。

配信可能なメッセージの上限数について

ナローキャストメッセージを送信するときは、recipientプロパティおよびfilter.demographicプロパティの設定にかかわらず、一時的にすべての友だちにメッセージを配信する前提で、配信予定メッセージ数が計算されます。配信予定メッセージ数が、当月分の上限目安を超えた場合は、ナローキャストメッセージを送信できません。

ただし、limit.maxプロパティで設定した最大送信数が、当月分の上限目安を超えなければ、ナローキャストメッセージを送信できます。

またlimit.upToRemainingQuotaプロパティをtrueにしておくことで、配信予定メッセージ数が、配信可能なメッセージの上限数を超えていてもエラーにはならず、上限数の範囲内で配信されます。

当月分の上限目安は、「追加メッセージ数の上限目安を取得する」エンドポイントで確認できます。

上限目安を設定する方法については、「Messaging APIの料金」を参照してください。

# レシピエントオブジェクト

送信するメッセージ(messagesプロパティ)と、送信対象(レシピエントオブジェクト)を指定してナローキャストメッセージの送信を開始できます。recipientプロパティを省略すると、LINE公式アカウントを友だち追加したすべてのユーザーが送信対象になります。

レシピエントオブジェクトには、オーディエンスオブジェクトもしくは再配信オブジェクトを指定します。

# オーディエンスオブジェクト

audienceGroupIdプロパティにオーディエンスIDを設定して、送信対象を指定します。

オーディエンスを作成するには、「オーディエンス管理」のAPIを使用します。

オーディエンスを表すレシピエントオブジェクトの例

{
    "type": "audience",
    "audienceGroupId": 5614991017776
}
# 再配信オブジェクト

requestIdプロパティに、ナローキャスト配信時に取得したリクエストID(X-Line-Request-Id)を設定することで、そのナローキャストを受信したユーザーを送信対象に指定します。

指定できるリクエストIDにはいくつかの条件があります

以下の条件をすべて満たすリクエストIDを、requestIdプロパティで指定してください。

  • ナローキャストメッセージの配信によって発行されたリクエストIDであること
  • 過去7日間以内の配信であること
  • 送信処理が完了していること(「ナローキャストメッセージの進行状況を取得する」で、レスポンスのphaseプロパティの値がsucceededであること)
「送信対象が少なすぎる」というエラーについて

過去に送信したメッセージのリクエストIDを再配信オブジェクトで指定してメッセージを送ろうとしたが、「送信対象が少なすぎたためエラーになりました。」というerrorCodeが返ってきてしまった場合は、次のような原因が考えられます。

  • 前回のメッセージ送信後に、送信対象のユーザーのうち何人かがLINE公式アカウントをブロックしたため、送信対象の人数が減った
  • 演算子オブジェクトのANDやNOTで、他のオーディエンスオブジェクトやデモグラフィックフィルターオブジェクトと組み合わせて条件を絞り込んだ結果、送信対象の人数が減った

送信対象のユーザーの属性を推測できないようにするために、送信対象が一定数よりも少ない場合はナローキャストメッセージを送信できません。詳しくは「ナローキャストメッセージを送る」の「ナローキャストメッセージの使用制限について」を参照してください。

再配信オブジェクトを表すレシピエントオブジェクトの例

{
    "type": "redelivery",
    "requestId": "5b59509c-c57b-11e9-aa8c-2a2ae2dbcce4"
}

オーディエンスオブジェクトや再配信オブジェクトについて詳しくは、『Messaging APIリファレンス』の「レシピエントオブジェクト」を参照してください。

# デモグラフィックフィルターオブジェクト

デモグラフィックフィルターオブジェクト(filter.demographicプロパティ)を指定すると、友だちの属性情報(性別や年齢、OSの種類、地域など)を使用して、セグメント配信ができます。

属性情報の利用について
  • 属性情報は3日前の属性情報を元に絞込みます。
  • 属性を指定しない場合は、属性が「不明」になっているユーザーを含めた全員に配信されます。

性別を使用してフィルタリングするデモグラフィックフィルターオブジェクトの例

{
    "type": "gender",
    "oneOf": [
        "male",
        "female"
    ]
}

デモグラフィックフィルターオブジェクトについて詳しくは、『Messaging APIリファレンス』の「デモグラフィックフィルターオブジェクト」を参照してください。

# 演算子オブジェクト

演算子オブジェクトの積集合(AND)、和集合(OR)、差集合(NOT)を利用することで、レシピエントオブジェクトおよびデモグラフィックフィルターオブジェクトの複数の条件を組み合わせて送信対象を指定できます。

各演算子オブジェクト(AND、OR、NOT)を利用することで、複数の送信対象が以下のように組み合わされます。

operator object

演算子オブジェクトで条件を組み合わせたレシピエントオブジェクトの例

"recipient": {
    "type": "operator",
    "and": [
        {
            "type": "audience",
            "audienceGroupId": 5614991017776
        },
        {
            "type": "operator",
            "not": {
                "type": "redelivery",
                "requestId": "5b59509c-c57b-11e9-aa8c-2a2ae2dbcce4"
            }
        }
    ]
}

# ナローキャストメッセージのリクエストの例

以下の条件でナローキャストメッセージを送信する場合のリクエストの例です。

  • オーディエンス(オーディエンスID:5614991017776)のユーザー
  • 過去に配信したナローキャスト(リクエストID:5b59509c-c57b-11e9-aa8c-2a2ae2dbcce4)を受信したユーザーを除外
  • 年齢20〜25歳の男女
  • 秋田県か愛知県在住
  • 友達期間が7日〜30日
  • 年齢35〜40歳の女性(男性を除外)
curl -v -X POST https://api.line.me/v2/bot/message/narrowcast \
-H 'Authorization: Bearer {channel access token}' \
-H 'Content-Type: application/json' \
-d '{
    "messages": [
        {
            "type": "text",
            "text": "test message"
        }
    ],
    "recipient": {
        "type": "operator",
        "and": [
            {
                "type": "audience",
                "audienceGroupId": 5614991017776
            },
            {
                "type": "operator",
                "not": {
                    "type": "redelivery",
                    "requestId": "5b59509c-c57b-11e9-aa8c-2a2ae2dbcce4"
                }
            }
        ]
    },
    "filter": {
        "demographic": {
            "type": "operator",
            "or": [
                {
                    "type": "operator",
                    "and": [
                        {
                            "type": "gender",
                            "oneOf": [
                                "male",
                                "female"
                            ]
                        },
                        {
                            "type": "age",
                            "gte": "age_20",
                            "lt": "age_25"
                        },
                        {
                            "type": "appType",
                            "oneOf": [
                                "android",
                                "ios"
                            ]
                        },
                        {
                            "type": "area",
                            "oneOf": [
                                "jp_23",
                                "jp_05"
                            ]
                        },
                        {
                            "type": "subscriptionPeriod",
                            "gte": "day_7",
                            "lt": "day_30"
                        }
                    ]
                },
                {
                    "type": "operator",
                    "and": [
                        {
                            "type": "age",
                            "gte": "age_35",
                            "lt": "age_40"
                        },
                        {
                            "type": "operator",
                            "not": {
                                "type": "gender",
                                "oneOf": [
                                    "male"
                                ]
                            }
                        }
                    ]
                }
            ]
        }
    },
    "limit": {
        "max": 100,
        "upToRemainingQuota": true
    }
}'

ナローキャストメッセージを送る方法について詳しくは、『Messaging APIリファレンス』の「ナローキャストメッセージを送る」を参照してください。

# ナローキャストメッセージの進行状況を確認する

ナローキャストメッセージは、バックグラウンドで非同期に送信されます。そのため、ナローキャストメッセージが正しく送信できたかどうかを確認するためのエンドポイントがあります。

curl -v -X GET https://api.line.me/v2/bot/message/progress/narrowcast?requestId={request_id} \
-H 'Authorization: Bearer {channel access token}'

ナローキャストメッセージの進行状況を確認する方法について詳しくは、『Messaging APIリファレンス』の「ナローキャストメッセージの進行状況を取得する」を参照してください。

# ナローキャストメッセージの使用制限について

ナローキャストメッセージを使用するには、以下の点に注意してください。

  • 属性情報を利用するには、100人以上のターゲットリーチが必要です。
  • 送信対象が50人以上になるように、オーディエンスと属性情報を組み合わせてください。この基準が満たされない場合は、ナローキャストメッセージを送信できません。ただし、以下の場合は、送信対象が50人未満でも送信できます。
    • 属性情報を利用せずにユーザーIDアップロード用のオーディエンスを使った場合
    • チャットタグオーディエンスを使った場合
  • ナローキャストメッセージを送信するときは、recipientプロパティでオーディエンスオブジェクトと再配信オブジェクトを合計10件まで指定できます。演算子オブジェクトの数に上限はありません。