# メッセージを送信する

作成したボットは、任意のタイミングでユーザーにメッセージを送信したり、ユーザーからのメッセージに対して、応答メッセージで返信したりできます。また、さまざまなタイプのメッセージを利用できます。

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

# メッセージの送信方法

Messaging APIでは、大きく分けて2種類の送信方法を利用できます。

# ユーザーからのメッセージやアクションに応答する(応答メッセージ)

応答メッセージは、ユーザーがLINE公式アカウントを友だち追加したり、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リファレンス』の「応答メッセージを送る」を参照してください。

# 任意のタイミングでメッセージを送信する

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

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

1回のリクエストでメッセージオブジェクトを最大5つまで送信できます。

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

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

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

プッシュメッセージのリクエストの例

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":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

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

複数のユーザーに、任意のタイミングでメッセージを送信します。送信対象は、属性情報(性別や年齢、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 Official Account Manager (opens new window)で予約オーディエンスを作成する
リッチメニューを表示したユーザー LINE Official Account Manager (opens new window)でリッチメニューインプレッションオーディエンスを作成する
リッチメニューをクリックしたユーザー 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)でアプリイベントオーディエンスを作成する
以前に送信した画像をクリックしたユーザー 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の料金」を参照してください。

ナローキャストメッセージの配信が完了するまでは他のメッセージの送信に失敗する場合があります

ナローキャストメッセージの配信時には、実際に配信されるメッセージ通数にかかわらず当月分の上限目安をすべて予約することがあります。上限目安がすべて予約されると、ナローキャストメッセージの配信が完了するまでは一時的に上限目安を超過した状態になります。その状態で他のメッセージを送信すると、You have reached your monthly limit.が返されてメッセージの送信に失敗します。

詳しくは、『Messaging APIリファレンス』の「当月に配信できるメッセージの残数に関する注意事項」を参照してください。

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

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

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

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

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

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

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

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

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

「送信対象が少なすぎる」というエラーについて

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

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

送信対象のユーザーの属性を推測できないようにするために、送信対象が一定数よりも少ない場合はナローキャストメッセージを送信できません。詳しくは、『Messaging APIリファレンス』の「属性情報やオーディエンスを利用したメッセージ送信の制限事項」を参照してください。

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

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

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

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

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

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

{
  "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"
            }
        }
    ]
}
演算子オブジェクトは入れ子(ネスト)構造で送信対象を指定できます

レシピエントオブジェクトおよびデモグラフィックフィルターオブジェクトは、演算子オブジェクトを利用して入れ子(ネスト)構造で送信対象を指定できます。演算子オブジェクトは、ネストの深い階層から優先して適用されます。

以下の例では、送信対象は「AかつBかつEに当てはまるユーザーのうち、CかつDであるユーザーを除くAudienceA AND AudienceB AND NOT (AudienceC AND AudienceD) AND AudienceE)」として解釈されます。

operator object nest sample

{
    "type": "operator",
    "and": [
        {
            "type": "audience",
            "audienceGroupId": AudienceA
        },
        {
            "type": "audience",
            "audienceGroupId": AudienceB
        },
        {
            "type": "operator",
            "not": {
                "type": "operator",
                "and": [
                    {
                       "type": "audience",
                       "audienceGroupId": AudienceC
                    },
                    {
                       "type": "audience",
                       "audienceGroupId": AudienceD
                    },
                 ]
            }
        },
        {
            "type": "audience",
            "audienceGroupId": AudienceE
        },
    ]
}

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

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

  • オーディエンス(オーディエンス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リファレンス』の「ナローキャストメッセージの進行状況を取得する」を参照してください。

# 引用メッセージを送信する

Messaging APIを使って、過去のメッセージを引用したメッセージを送信できます。

過去のメッセージを引用したメッセージを送るには、引用対象となるメッセージの引用トークン(quoteToken)を指定します。引用トークンの取得方法について詳しくは、「引用トークンを取得する」を参照してください。

過去のメッセージを引用したプッシュメッセージのリクエストの例

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": "text",
      "text": "Yes, you can.",
      "quoteToken": "yHAz4Ua2wx7..." // 引用対象となるメッセージの引用トークンを指定する
    }
  ]
}'

なお引用対象となるメッセージの送信が取り消されていた場合や、過去のトーク履歴が端末から削除されていた場合、引用されたメッセージは表示されません。

存在しないメッセージが引用対象だった場合は「このメッセージはありません。」と表示される

引用トークンを使ってメッセージを送信できるのは、次のエンドポイントのみです。

また引用トークンを使ってメッセージを送信するとき、使用できるのは以下のメッセージオブジェクトのみです。