APIリファレンス

共通仕様

レート制限

APIごとに実行できるリクエスト回数およびMessaging APIによって送信されるメッセージの受信者数の制限は以下のとおりです。レート制限はご利用のプランによって異なります。お住いの地域で利用できるLINE@プランについて詳しくは、LINE@ウェブサイトを参照してください。

プラン APIリクエスト回数の制限 メッセージ受信者数の制限
Developer Trial APIごとに1,000/分 ボットごとに20,000/分
その他のプラン APIごとに10,000/分 ボットごとに200,000/分

ステータスコード

Messaging APIからは以下のステータスコードが返されます。

ステータスコード 説明
200 OK リクエストが成功しました。
400 Bad Request リクエストに問題があります。
401 Unauthorized 有効なチャネルアクセストークンが指定されていません。
403 Forbidden リソースにアクセスする権限がありません。ご契約中のプランやアカウントに付与されている権限を確認してください。
429 Too Many Requests APIコールのレート制限を超過しました。
500 Internal Server Error 内部サーバーのエラーです。

レスポンスヘッダー

Messaging APIのレスポンスには以下のHTTPヘッダーが含まれます。

レスポンスヘッダー 説明
X-Line-Request-Id 各リクエストに発行されるID

エラーレスポンスの例

{  
   "message":"The request body has 2 error(s)",
   "details":[  
      {  
         "message":"May not be empty",
         "property":"messages[0].text"
      },
      {  
         "message":"Must be one of the following values: [text, image, video, audio, location, sticker, template, imagemap]",
         "property":"messages[1].type"
      }
   ]
}

エラーレスポンス

エラー発生時は、以下のJSONデータを含むレスポンスボディが返されます。

プロパティ タイプ 説明
message String エラー情報を含むメッセージ。詳しくは、「エラーメッセージ」を参照してください。
details[].message String エラーの詳細。特定の状況では返されません。
details[].property String エラーの発生箇所。特定の状況では返されません。

エラーメッセージ

エラーのJSONレスポンスのmessageプロパティに含まれる、主なエラーメッセージは以下のとおりです。

メッセージ 説明
The request body has X error(s) リクエストボディのJSONデータにエラーがありました。Xの部分にエラーの数が表示されます。詳細はdetails[].messageおよびdetails[].propertyプロパティに含まれます。
Invalid reply token 応答メッセージで使用された応答トークンが無効です。
The property, XXX, in the request body is invalid (line: XXX, column: XXX) リクエストボディに無効なプロパティが指定されていました。XXXの部分に具体的な行と列が表示されます。
The request body could not be parsed as JSON (line: XXX, column: XXX) リクエストボディのJSONデータを解析できませんでした。XXXの部分に具体的な行と列が表示されます。
The content type, XXX, is not supported APIでサポートされていないコンテンツタイプがリクエストされました。
Authentication failed due to the following reason: XXX APIが呼び出されたときに認証に失敗しました。XXXの部分に理由が表示されます。
Access to this API is not available for your account 実行権限がないAPIを呼び出しました。
Failed to send messages メッセージの送信に失敗しました。指定したユーザーIDが存在しない場合などにこのエラーが発生します。

Webhook

友だち追加やメッセージの送信のようなイベントがトリガーされると、webhook URLにHTTPS POSTリクエストが送信されます。Webhook URLはチャネルに対してコンソールで設定します。

リクエストはボットアプリのサーバーで受信および処理されます。

リクエストヘッダー

リクエストヘッダー 説明
X-Line-Signature 署名の検証に使う署名

リクエストボディ

リクエストボディは、webhookイベントオブジェクトの配列を含むJSONオブジェクトです。

プロパティ タイプ 説明
events webhookイベントオブジェクトの配列 イベントの情報

レスポンス

ボットアプリのサーバーにwebhookから送信されるHTTP POSTリクエストには、ステータスコード200を返す必要があります。

署名検証の例

# Click on the language tabs for examples of signature validation
署名検証の例
String channelSecret = ...; // Channel secret string
String httpRequestBody = ...; // Request body string
SecretKeySpec key = new SecretKeySpec(channelSecret.getBytes(), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(key);
byte[] source = httpRequestBody.getBytes("UTF-8");
String signature = Base64.encodeBase64String(mac.doFinal(source));
// Compare X-Line-Signature request header string and the signature
署名検証の例
CHANNEL_SECRET = ... # Channel secret string
http_request_body = request.raw_post # Request body string
hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, CHANNEL_SECRET, http_request_body)
signature = Base64.strict_encode64(hash)
# Compare X-Line-Signature request header string and the signature
署名検証の例
defer req.Body.Close()
body, err := ioutil.ReadAll(req.Body)
if err != nil {
    // ...
}
decoded, err := base64.StdEncoding.DecodeString(req.Header.Get("X-Line-Signature"))
if err != nil {
    // ...
}
hash := hmac.New(sha256.New, []byte("<channel secret>"))
hash.Write(body)
// Compare decoded signature and `hash.Sum(nil)` by using `hmac.Equal`
署名検証の例
$channelSecret = ...; // Channel secret string
$httpRequestBody = ...; // Request body string
$hash = hash_hmac('sha256', $httpRequestBody, $channelSecret, true);
$signature = base64_encode($hash);
// Compare X-Line-Signature request header string and the signature
署名検証の例
use Digest::SHA 'hmac_sha256';
use MIME::Base64 'decode_base64';

my $channel_secret= ... # Channel secret string
my $http_body = ... # Request body string
my $signature = decode_base64(hmac_sha256($http_body, $channel_secret));
# Compare X-Line-Signature request header string and the signature
署名検証の例
import base64
import hashlib
import hmac

channel_secret = ... # Channel secret string
body = ... # Request body string
hash = hmac.new(channel_secret.encode('utf-8'),
    body.encode('utf-8'), hashlib.sha256).digest()
signature = base64.b64encode(hash)
# Compare X-Line-Signature request header and the signature
署名検証の例
const crypto = require('crypto');

const channelSecret = ...; // Channel secret string
const body = ...; // Request body string
const signature = crypto
  .createHmac('SHA256', channelSecret)
  .update(body).digest('base64');
// Compare X-Line-Signature request header and the signature

署名を検証する

X-Line-Signatureリクエストヘッダーに含まれる署名を検証して、リクエストがLINEプラットフォームから送信されたことを確認する必要があります。

検証の手順は以下のとおりです。

  1. チャネルシークレットを秘密鍵として、HMAC-SHA256アルゴリズムを使用してリクエストボディのダイジェスト値を取得します。
  2. ダイジェスト値をBase64エンコードした値とリクエストヘッダーにある署名が一致することを確認します。

Webhookイベントオブジェクトの例

{
  "events": [
    {
      "replyToken": "0f3779fba3b349968c5d07db31eab56f",
      "type": "message",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      },
      "message": {
        "id": "325708",
        "type": "text",
        "text": "Hello, world"
      }
    },
    {
      "replyToken": "8cf9239d56244f4197887e939187e19e",
      "type": "follow",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      }
    }
  ]
}

共通プロパティ

以下のプロパティはすべてのwebhookイベントオブジェクトに含まれます。

プロパティ タイプ 説明
type String イベントのタイプを表す識別子
timestamp Number イベントの発生時刻(ミリ秒)
source Object イベントの送信元情報を含むユーザーグループ、またはトークルームオブジェクト

送信元ユーザーの例

  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  }

送信元ユーザー

プロパティ タイプ 説明
type String user
userId String 送信元ユーザーのID

送信元グループの例

  "source": {
    "type": "group",
    "groupId": "Ca56f94637c...",
    "userId": "U4af4980629..."
  }

送信元グループ

プロパティ タイプ 説明
type String group
groupId String 送信元グループのID
userId String 送信元ユーザーのID。メッセージイベントにのみ含まれます。ユーザーが公式アカウントの利用条件に同意していない場合は含まれません。

送信元トークルームの例

  "source": {
    "type": "room",
    "roomId": "Ra8dbf4673c...",
    "userId": "U4af4980629..."
  }

送信元トークルーム

プロパティ タイプ 説明
type String room
roomId String 送信元トークルームのID
userId String 送信元ユーザーのID。メッセージイベントにのみ含まれます。ユーザーが公式アカウントの利用条件に同意していない場合は含まれません。

メッセージイベント

送信されたメッセージを含むwebhookイベントオブジェクトです。 メッセージのタイプに対応するメッセージオブジェクトが、messageプロパティに含まれます。メッセージイベントには応答できます。

プロパティ タイプ 説明
type String message
replyToken String イベントへの応答に使用するトークン
message Object メッセージの内容を含むオブジェクト。メッセージには以下のタイプがあります。

テキストメッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "text",
    "text": "Hello, world!"
  }
}

テキスト

送信元から送られたテキストを含むメッセージオブジェクトです。

プロパティ タイプ 説明
id String メッセージID
type String text
text String メッセージのテキスト

画像メッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "image"
  }
}

画像

送信元から送られた画像を含むメッセージオブジェクトです。バイナリの画像データはcontentエンドポイントから取得できます。

プロパティ タイプ 説明
id String メッセージID
type String image

動画メッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "video"
  }
}

動画

送信元から送られた動画を含むメッセージオブジェクトです。バイナリの動画データはcontentエンドポイントから取得できます。

プロパティ タイプ 説明
id String メッセージID
type String video

音声メッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "audio"
  }
}

音声

送信元から送られた音声を含むメッセージオブジェクトです。バイナリの音声データはcontentエンドポイントから取得できます。

プロパティ タイプ 説明
id String メッセージID
type String audio

ファイルメッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "file",
    "fileName": "file.txt",
    "fileSize": 2138
  }
}

ファイル

送信元から送られたファイルを含むメッセージオブジェクトです。バイナリデータはcontentエンドポイントから取得できます。

プロパティ タイプ 説明
id String メッセージID
type String file
fileName String ファイル名
fileSize String ファイルサイズ(バイト)

位置情報メッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "location",
    "title": "my location",
    "address": "〒150-0002 東京都渋谷区渋谷2丁目21−1",
    "latitude": 35.65910807942215,
    "longitude": 139.70372892916203
  }
}

位置情報

送信元から送られた位置情報データを含むメッセージオブジェクトです。

プロパティ タイプ 説明
id String メッセージID
type String location
title String タイトル
address String 住所
latitude Decimal 緯度
longitude Decimal 経度

スタンプメッセージの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "sticker",
    "packageId": "1",
    "stickerId": "1"
  }
}

スタンプ

送信元から送られたスタンプデータを含むメッセージオブジェクトです。 LINEの基本的なスタンプとスタンプIDについては、スタンプリストを参照してください。

プロパティ タイプ 説明
id String メッセージID
type String sticker
packageId String パッケージID
stickerId String スタンプID

フォローイベントの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "follow",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  }
}

フォローイベント

アカウントが友だち追加またはブロック解除されたことを示すイベントです。フォローイベントには応答できます。

プロパティ タイプ 説明
type String follow
replyToken String このイベントへの応答に使用するトークン

フォロー解除イベントの例

{
  "type": "unfollow",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  }
}

フォロー解除イベント

アカウントがブロックされたことを示すイベントです。

プロパティ タイプ 説明
type String unfollow

参加イベントの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "join",
  "timestamp": 1462629479859,
  "source": {
    "type": "group",
    "groupId": "C4af4980629..."
  }
}

参加イベント

アカウントがグループまたはトークルームに参加したことを示すイベントです。参加イベントには応答できます。

プロパティ タイプ 説明
type String join
replyToken String このイベントへの応答に使用するトークン

退出イベントの例

{
  "type": "leave",
  "timestamp": 1462629479859,
  "source": {
    "type": "group",
    "groupId": "C4af4980629..."
  }
}

退出イベント

ユーザーがグループからボットを削除したことを示すイベントです。

退出イベントは以下の状況では生成されません。

プロパティ タイプ 説明
type String leave

ポストバックイベントの例

{  
   "type":"postback",
   "replyToken":"b60d432864f44d079f6d8efe86cf404b",
   "source":{  
      "userId":"U91eeaf62d...",
      "type":"user"
   },
   "timestamp":1513669370317,
   "postback":{  
      "data":"storeId=12345",
      "params":{  
         "datetime":"2017-12-25T01:00"
      }
   }
}

ポストバックイベント

ユーザーが、テンプレートメッセージに関連づけられた、ポストバックを開始するアクションを実行したことを示すイベントオブジェクトです。ポストバックイベントには応答できます。

プロパティ タイプ 説明
type String postback
replyToken String このイベントへの応答に使用するトークン
postback.data String ポストバックデータ
postback.params Object 日時選択アクションを介してユーザーが選択した日時を含むJSONオブジェクト。
日時選択アクションによるポストバックアクションの場合にのみ返されます。

postback.paramsオブジェクトの例

{  
   "datetime":"2017-12-25T01:00"
}

postback.paramsオブジェクト

日時選択アクションを介してユーザーが選択した日時を含むオブジェクトです。full-datetime-hour、およびtime-minuteの形式は、RFC3339プロトコルで定義されています。

プロパティ 形式 説明
date full-date ユーザーが選択した日付。dateモードの場合にのみ含まれます。
time time-hour ":" time-minute ユーザーが選択した時刻。timeモードの場合にのみ含まれます。
datetime full-date "T" time-hour ":" time-minute ユーザーが選択した日付および時刻。datetimeモードの場合にのみ含まれます。

ビーコンイベントの例

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "beacon",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "beacon": {
    "hwid": "d41d8cd98f",
    "type": "enter"
  }
}

ビーコンイベント

LINE Beaconデバイスの受信圏をユーザーが出入りしたことを示すイベントオブジェクトです。ビーコンイベントには応答できます。

プロパティ タイプ 説明
type String beacon
replyToken String このイベントへの応答に使用するトークン
beacon.hwid String 検出されたビーコンのハードウェアID
beacon.type String ビーコンイベントのタイプ。「ビーコンイベントのタイプ」を参照してください。
beacon.dm String 検出されたビーコンのデバイスメッセージ。このメッセージは、ボットへの通知を目的としてビーコンにより生成されるデータです。Device messageプロパティをサポートするデバイスからのwebhookにのみ含まれます。
詳しくは、LINE Simple Beaconの仕様を参照してください。

ビーコンイベントのタイプ

beacon.type 説明
enter ユーザーがビーコンの受信圏内に入りました。
leave 【このleaveイベントの利用は非推奨です。】ユーザーがビーコンの受信圏外に出ました。
注:leaveイベントは企業ユーザー様にはご利用いただけません。この機能のご利用をご希望の企業ユーザー様は、LINEの貴社担当者までお問い合わせください。
banner ユーザーがビーコンバナーをタップしました。

アカウント連携イベントの例

{
  "type": "accountLink",
  "replyToken": "b60d432864f44d079f6d8efe86cf404b",
  "source": {
    "userId": "U91eeaf62d...",
    "type": "user"
  },
  "timestamp": 1513669370317,
  "link": {
    "result": "ok",
    "nonce": "xxxxxxxxxxxxxxx"
  }
}

アカウント連携イベント

ユーザーがLINEアカウントとプロバイダーが提供するサービスのアカウントを連携したことを示すイベントオブジェクトです。アカウント連携イベントには応答できます。

連携トークンの期限が切れている、または使用済みの場合は、Webhookイベント自体が送信されず、ユーザーにエラーが表示されます。

プロパティ タイプ 説明
type String accountLink
replyToken String このイベントへの応答に使用するトークン。連携に失敗した場合はこの値は含まれません。
link Object linkオブジェクト。アカウント連携が成功したかどうかと、プロバイダーのサービスのユーザーIDから生成したノンスが含まれます。

linkオブジェクトの例

"link": {
  "result": "ok",
  "nonce": "xxxxxxxxxxxxxxx"
}

linkオブジェクト

プロパティ タイプ 説明
result String 連携が成功したかどうかを示す値。以下のどちらかになります。
  • ok:連携が成功したことを示します。
  • failed:ユーザーのすり替えなどが原因で、連携が失敗したことを示します。
nonce String ユーザーIDの検証時に指定したノンス

OAuth

リクエストの例

curl -v -X POST https://api.line.me/v2/oauth/accessToken \
-H "Content-Type:application/x-www-form-urlencoded" \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id={channel ID}' \
--data-urlencode 'client_secret={channel secret}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

チャネルアクセストークンを発行する

注:この方法では、30日間有効な短期のチャネルアクセストークンが発行されます。長期のチャネルアクセストークンを発行するには、コンソールにある[再発行]ボタンを使います(長期のアクセストークンは、公式アカウントまたは特定のLINE@プランをご利用の場合はご利用いただけません)。

短期のチャネルアクセストークンを発行するAPIです。

最大で30件のトークンを発行できます。上限を超過した場合は、発行順に既存のチャネルアクセストークンが取り消されます。

HTTPリクエスト

POST https://api.line.me/v2/oauth/accessToken

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/x-www-form-urlencoded

リクエストボディ

フィールド タイプ 説明
grant_type String client_credentials
client_id String チャネルID。コンソールで確認できます。
client_secret String チャネルシークレット。コンソールで確認できます。

レスポンスの例

{
"access_token":"W1TeHCgfH2Liwa.....",
"expires_in":2592000,
"token_type":"Bearer"
}

レスポンス

HTTPステータスコード200および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
access_token String 短期のチャネルアクセストークン。有効期間は30日です。
注:チャネルアクセストークンは更新できません。
expires_in Number チャネルアクセストークンが発行されてから有効期限が切れるまでの秒数
token_type String Bearer

エラーレスポンスの例

{
"error":"invalid_request",
"error_description":"some parameters missed or invalid"
}

エラーレスポンス

HTTPステータスコード400および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
error String エラーの概要
error_description String エラーの内容。特定の状況では返されません。

リクエストの例

curl -v -X POST https://api.line.me/v2/oauth/revoke \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode 'access_token={channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

チャネルアクセストークンを取り消す

チャネルアクセストークンを取り消すAPIです。

HTTPリクエスト

POST https://api.line.me/v2/oauth/revoke

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/x-www-form-urlencoded

リクエストボディ

フィールド タイプ 説明
access_token String チャネルアクセストークン

レスポンス

ステータスコード200および空のレスポンスボディを返します。無効なチャネルアクセストークンを指定した場合はエラーが返りません。

エラーレスポンスの例

{
"error":"invalid_request",
"error_description":"some parameters missed or invalid"
}

エラーレスポンス

HTTPステータスコード400および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
error String エラーの概要
error_description String エラーの内容。特定の状況では返されません。

メッセージ

リクエストの例

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?"
        }
    ]
}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final TextMessage textMessage = new TextMessage("hello");
final ReplyMessage replyMessage = new ReplyMessage(
        "<replyToken>",
        textMessage);

final BotApiResponse botApiResponse;
try {
    botApiResponse = client.replyMessage(replyMessage).get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

System.out.println(botApiResponse);
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
if _, err := bot.ReplyMessage(<replyToken>, linebot.NewTextMessage("hello")).Do(); err != nil {
    ...
}
リクエストの例
message = {
  type: 'text',
  text: 'hello'
}
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.reply_message("<replyToken>", message)
p response
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);

$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('hello');
$response = $bot->replyMessage('<replyToken>', $textMessageBuilder);

echo $response->getHTTPStatus() . ' ' . $response->getRawBody();
リクエストの例
use LINE::Bot::API;
use LINE::Bot::API::Builder::SendMessage;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $messages = LINE::Bot::API::Builder::SendMessage->new(
)->add_text(
    text => 'hello',
);
my $res = $bot->reply_message("<replyToken>", $messages->build);
unless ($res->is_success) {
    # error handling
    ....
}
リクエストの例
from linebot import LineBotApi
from linebot.models import TextSendMessage
from linebot.exceptions import LineBotApiError

line_bot_api = LineBotApi('<channel access token>')

try:
    line_bot_api.reply_message('<reply_token>', TextSendMessage(text='Hello World!'))
except LineBotApiError as e:
    # error handle
    ...
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

const message = {
  type: 'text',
  text: 'Hello World!'
};

client.replyMessage('<replyToken>', message)
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

応答メッセージを送る

ユーザー、グループ、またはトークルームからのイベントに対して応答メッセージを送信するAPIです。

イベントが発生するとwebhookを使って通知されます。応答できるイベントには応答トークンが発行されます。

応答トークンは一定の期間が経過すると無効になるため、メッセージを受信したらすぐに応答を返す必要があります。応答トークンは1回のみ使用できます。

HTTPリクエスト

POST https://api.line.me/v2/bot/message/reply

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/json
Authorization Bearer {channel access token}

リクエストボディ

プロパティ タイプ 必須 説明
replyToken String 必須 Webhookで受信する応答トークン
messages メッセージオブジェクトの配列 必須 送信するメッセージ
最大件数:5

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

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"
        }
    ]
}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final TextMessage textMessage = new TextMessage("hello");
final PushMessage pushMessage = new PushMessage(
        "<to>",
        textMessage);

final BotApiResponse botApiResponse;
try {
    botApiResponse = client.pushMessage(pushMessage).get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

System.out.println(botApiResponse);
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
if _, err := bot.PushMessage(<to>, linebot.NewTextMessage("hello")).Do(); err != nil {
    ...
}
リクエストの例
message = {
  type: 'text',
  text: 'hello'
}
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.push_message("<to>", message)
p response
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);

$textMessageBuilder = new \LINE\LINEBot\MessageBuilder\TextMessageBuilder('hello');
$response = $bot->pushMessage('<to>', $textMessageBuilder);

echo $response->getHTTPStatus() . ' ' . $response->getRawBody();
リクエストの例
use LINE::Bot::API;
use LINE::Bot::API::Builder::SendMessage;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $messages = LINE::Bot::API::Builder::SendMessage->new(
)->add_text(
    text => 'hello',
);
my $res = $bot->push_message("<to>", $messages->build);
unless ($res->is_success) {
    # error handling
    ....
}
リクエストの例
from linebot import LineBotApi
from linebot.models import TextSendMessage
from linebot.exceptions import LineBotApiError

line_bot_api = LineBotApi('<channel access token>')

try:
    line_bot_api.push_message('<to>', TextSendMessage(text='Hello World!'))
except LineBotApiError as e:
    # error handle
    ...
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

const message = {
  type: 'text',
  text: 'Hello World!'
};

client.pushMessage('<to>', message)
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

プッシュメッセージを送る

注:プッシュメッセージは一部のプランでのみご利用いただけます。詳しくは、LINE@サイトを参照してください。

ユーザー、グループ、またはトークルームに、任意のタイミングでプッシュメッセージを送信するAPIです。

HTTPリクエスト

POST https://api.line.me/v2/bot/message/push

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/json
Authorization Bearer {channel access token}

リクエストボディ

プロパティ タイプ 必須 説明
to String 必須 送信先のID。Webhookイベントオブジェクトで返される、userIdgroupId、またはroomIdの値を使用します。LINEアプリに表示されるLINE IDは使用しないでください。
messages メッセージオブジェクトの配列 必須 送信するメッセージ
最大件数:5

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

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"
        }
    ]
}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

複数のユーザーにメッセージを送る

注:プッシュメッセージに対応するプランでのみご利用いただけます。詳しくは、LINE@サイトを参照してください。

複数のユーザーに、任意のタイミングでプッシュメッセージを送信するAPIです。グループまたはトークルームにメッセージを送ることはできません。

HTTPリクエスト

POST https://api.line.me/v2/bot/message/multicast

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/json
Authorization Bearer {channel access token}

リクエストボディ

プロパティ タイプ 必須 説明
to 文字列の配列 必須 ユーザーIDの配列。Webhookイベントオブジェクトで返されるuserIdの値を使用します。LINEアプリに表示されるLINE IDは使用しないでください。
最大ユーザーID数:150
messages メッセージオブジェクトの配列 必須 送信するメッセージ
最大件数:5

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/message/{messageId}/content \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final MessageContentResponse messageContentResponse;
try {
    messageContentResponse = client.getMessageContent("<messageId>").get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

Files.copy(messageContentResponse.getStream(),
           Files.createTempFile("foo", "bar"));
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
content, err := bot.GetMessageContent(<messageID>).Do()
if err != nil {
    ...
}
defer content.Content.Close()

...
リクエストの例
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.get_message_content("<messageId>")
case response
when Net::HTTPSuccess then
  tf = Tempfile.open("content")
  tf.write(response.body)
else
  p "#{response.code} #{response.body}"
end
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);
$response = $bot->getMessageContent('<messageId>');
if ($response->isSucceeded()) {
    $tempfile = tmpfile();
    fwrite($tempfile, $response->getRawBody());
} else {
    error_log($response->getHTTPStatus() . ' ' . $response->getRawBody());
}
リクエストの例
use LINE::Bot::API;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $res = $bot->get_message_content("<messageId>");
unless ($res->is_success) {
    # error handling
    ....
}
my $filename = $ret->fh->filename;
open my $fh, '<', $file or die "$!: $file";
リクエストの例
from linebot import LineBotApi

line_bot_api = LineBotApi('<channel access token>')

message_content = line_bot_api.get_message_content('<message_id>')
with open(file_path, 'wb') as fd:
    for chunk in message_content.iter_content():
        fd.write(chunk)
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getMessageContent('<messageId>')
  .then((stream) => {
    stream.on('data', (chunk) => {
      ...
    });
    stream.on('error', (err) => {
      // error handling
    });
  });

コンテンツを取得する

ユーザーが送信した画像、動画、および音声のデータを取得するAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/message/{messageId}/content

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
messageId メッセージID

レスポンス

ステータスコード200およびコンテンツのバイナリデータを返します。

メッセージが送信されてから一定期間後に、コンテンツは自動的に削除されます。コンテンツの保存期間は保証されません。

プロフィール

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/profile/{userId} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final UserProfileResponse userProfileResponse;
try {
    userProfileResponse = client.getProfile("<userId>").get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

System.out.println(userProfileResponse.getUserId());
System.out.println(userProfileResponse.getDisplayName());
System.out.println(userProfileResponse.getPictureUrl());
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
res, err := bot.GetUserProfile(<userId>).Do();
if err != nil {
    ...
}
println(res.Displayname)
println(res.PicutureURL)
println(res.StatusMessage)
リクエストの例
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.get_profile("<userId>")
case response
when Net::HTTPSuccess then
  contact = JSON.parse(response.body)
  p contact['displayName']
  p contact['pictureUrl']
  p contact['statusMessage']
else
  p "#{response.code} #{response.body}"
end
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);
$response = $bot->getProfile('<userId>');
if ($response->isSucceeded()) {
    $profile = $response->getJSONDecodedBody();
    echo $profile['displayName'];
    echo $profile['pictureUrl'];
    echo $profile['statusMessage'];
}
リクエストの例
use LINE::Bot::API;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $res = $bot->get_profile("<userId>");
unless ($res->is_success) {
    # error handling
    ....
}

say $ret->display_name;
say $ret->user_id;
say $ret->picture_url;
say $ret->status_message;
リクエストの例
from linebot import LineBotApi
from linebot.exceptions import LineBotApiError

line_bot_api = LineBotApi('<channel access token>')

try:
    profile = line_bot_api.get_profile('<user_id>')
    print(profile.display_name)
    print(profile.user_id)
    print(profile.picture_url)
    print(profile.status_message)
except LineBotApiError as e:
    # error handle
    ...
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getProfile('<userId>')
  .then((profile) => {
    console.log(profile.displayName);
    console.log(profile.userId);
    console.log(profile.pictureUrl);
    console.log(profile.statusMessage);
  })
  .catch((err) => {
    // error handling
  });

プロフィールを取得する

ユーザープロフィール情報を取得するAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/profile/{userId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
userId webhookイベントオブジェクトで返されるユーザーID。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{
    "displayName":"LINE taro",
    "userId":"U4af4980629...",
    "pictureUrl":"http://obs.line-apps.com/...",
    "statusMessage":"Hello, LINE!"
}

レスポンス

ステータスコード200および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
displayName String 表示名
userId String ユーザーID
pictureUrl String 画像のURL
statusMessage String ステータスメッセージ

グループ

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/group/{groupId}/member/{userId} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getGroupMemberProfile('<groupId>', '<userId>')
  .then((profile) => {
    console.log(profile.displayName);
    console.log(profile.userId);
    console.log(profile.pictureUrl);
    console.log(profile.statusMessage);
  })
  .catch((err) => {
    // error handling
  });

グループメンバーのプロフィールを取得する

ボットが参加しているグループのメンバーの、ユーザープロフィールを取得するAPIです。ボットを友だちとして追加していないユーザーや、ボットをブロックしているユーザーのプロフィールも取得します。

HTTPリクエスト

GET https://api.line.me/v2/bot/group/{groupId}/member/{userId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
groupId グループID。Webhookイベントオブジェクトsourceオブジェクトで返されます。
userId ユーザーID。Webhookイベントオブジェクトsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{
    "displayName":"LINE taro",
    "userId":"U4af4980629...",
    "pictureUrl":"http://obs.line-apps.com/..."
}

レスポンス

ステータスコード200および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
displayName String 表示名
userId String ユーザーID
pictureUrl String プロフィール画像のURL

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/group/{groupId}/members/ids?start={continuationToken} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getGroupMemberIds('<groupId>')
  .then((ids) => {
    ids.forEach((id) => console.log(id));
  })
  .catch((err) => {
    // error handling
  });

グループメンバーのユーザーIDを取得する

注:この機能は認証済みLINE@アカウントまたは公式アカウントのみでご利用いただけます。詳しくは、LINE@サイトの「LINE@アカウントを作成しましょう」ページまたはLINE Partnerサイトを参照してください。

ボットが参加しているグループのメンバーの、ユーザーIDを取得するAPIです。ボットを友だちとして追加していないユーザーや、ボットをブロックしているユーザーのユーザーIDも取得します。

HTTPリクエスト

GET https://api.line.me/v2/bot/group/{groupId}/members/ids

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
groupId 必須 グループID。Webhookイベントオブジェクトsourceオブジェクトで返されます。

クエリパラメータ

パラメータ 必須 説明
start 任意 継続トークンの値。レスポンスで返されるJSONオブジェクトのnextプロパティに含まれます。1回のリクエストでユーザーIDをすべて取得できない場合は、このパラメータを指定して残りの配列を取得します。

レスポンスの例

{  
   "memberIds":[  
      "U4af4980629...",
      "U0c229f96c4...",
      "U95afb1d4df..."
   ],
   "next":"jxEWCEEP..."
}

レスポンス

ステータスコード200および以下のプロパティを含むJSONオブジェクトを返します。

プロパティ タイプ 説明
memberIds 文字列の配列 グループメンバーのユーザーIDのリスト。memberIdsで返されるユーザーIDの数は可変です。公式アカウントの利用条件に同意していないユーザーは、memberIdsに含まれません。
最大ユーザー数:100
next String 継続トークン。グループメンバーのユーザーIDの、次の配列を取得するために使用します。このプロパティは、前回までのレスポンスのmemberIdsで取得しきれなかったユーザーIDがある場合にのみ返されます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/group/{groupId}/leave \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final BotApiResponse botApiResponse;
try {
    botApiResponse = client.leaveGroup("<roomId>").get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

System.out.println(botApiResponse);
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
if _, err := bot.LeaveGroup(<groupId>).Do(); err != nil {
    ...
}
リクエストの例
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.leave_group("<groupId>")
p response.body
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);
$response = $bot->leaveGroup('<groupId>');
echo $response->getHTTPStatus() . ' ' . $response->getRawBody();
リクエストの例
use LINE::Bot::API;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $res = $bot->leave_group("<groupId>");
unless ($res->is_success) {
    # error handling
    ....
}
リクエストの例
from linebot import LineBotApi
from linebot.exceptions import LineBotApiError

line_bot_api = LineBotApi('<channel access token>')

try:
    line_bot_api.leave_group('<group_id>')
except LineBotApiError as e:
    # error handle
    ...
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.leaveGroup('<groupId>')
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

グループから退出する

グループから退出するAPIです。

HTTPリクエスト

POST https://api.line.me/v2/bot/group/{groupId}/leave

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
groupId グループID。Webhookイベントオブジェクトsourceオブジェクトで返されます。

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

トークルーム

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/room/{roomId}/member/{userId} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getRoomMemberProfile('<roomId>', '<userId>')
  .then((profile) => {
    console.log(profile.displayName);
    console.log(profile.userId);
    console.log(profile.pictureUrl);
    console.log(profile.statusMessage);
  })
  .catch((err) => {
    // error handling
  });

トークルームメンバーのプロフィールを取得する

ボットが参加しているトークルームのメンバーの、ユーザープロフィールを取得するAPIです。ボットを友だちとして追加していないユーザーや、ボットをブロックしているユーザーのプロフィールも取得します。

HTTPリクエスト

GET https://api.line.me/v2/bot/room/{roomId}/member/{userId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
roomId トークルームID。Webhookイベントオブジェクトsourceオブジェクトで返されます。
userId ユーザーID。Webhookイベントオブジェクトsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{
    "displayName":"LINE taro",
    "userId":"U4af4980629...",
    "pictureUrl":"http://obs.line-apps.com/..."
}

レスポンス

ステータスコード200および以下の情報を含むJSONオブジェクトを返します。

プロパティ タイプ 説明
displayName String 表示名
userId String ユーザーID
pictureUrl String プロフィール画像のURL

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/room/{roomId}/members/ids?start={continuationToken} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.getRoomMemberIds('<roomId>')
  .then((ids) => {
    ids.forEach((id) => console.log(id));
  })
  .catch((err) => {
    // error handling
  });

トークルームメンバーのユーザーIDを取得する

注:この機能は認証済みLINE@アカウントまたは公式アカウントのみでご利用いただけます。詳しくは、LINE@サイトの「LINE@アカウントを作成しましょう」ページまたはLINE Partnerサイトを参照してください。

ボットが参加しているトークルームのメンバーの、ユーザーIDを取得するAPIです。ボットを友だちとして追加していないユーザーや、ボットをブロックしているユーザーのユーザーIDも取得します。

HTTPリクエスト

GET https://api.line.me/v2/bot/room/{roomId}/members/ids

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
roomId 必須 トークルームID。Webhookイベントオブジェクトsourceオブジェクトで返されます。

クエリパラメータ

パラメータ 必須 説明
start 任意 継続トークンの値。レスポンスで返されるJSONオブジェクトのnextプロパティに含まれます。1回のリクエストでユーザーIDをすべて取得できない場合は、このパラメータを指定して残りの配列を取得します。

レスポンスの例

{  
   "memberIds":[  
      "U4af4980629...",
      "U0c229f96c4...",
      "U95afb1d4df..."
   ],
   "next":"jxEWCEEP..."
}

レスポンス

ステータスコード200および以下のプロパティを含むJSONオブジェクトを返します。

プロパティ タイプ 説明
memberIds 文字列の配列 トークルームメンバーのユーザーIDのリスト。memberIdsで返されるユーザーIDの数は可変です。公式アカウントの利用条件に同意していないユーザーは、memberIdsに含まれません。
最大ユーザー数:100
next String 継続トークン。トークルームメンバーのユーザーIDの、次の配列を取得するために使用します。このプロパティは、前回までのレスポンスのmemberIdsで取得しきれなかったユーザーIDがある場合にのみ返されます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/room/{roomId}/leave \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
final LineMessagingClient client = LineMessagingClient
        .builder("<channel access token>")
        .build();

final BotApiResponse botApiResponse;
try {
    botApiResponse = client.leaveRoom("<roomId>").get();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
    return;
}

System.out.println(botApiResponse);
リクエストの例
bot, err := linebot.New(<channel secret>, <channel token>)
if err != nil {
    ...
}
if _, err := bot.LeaveRoom(<roomId>).Do(); err != nil {
    ...
}
リクエストの例
client = Line::Bot::Client.new { |config|
    config.channel_secret = "<channel secret>"
    config.channel_token = "<channel access token>"
}
response = client.leave_room("<roomId>")
p response.body
リクエストの例
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient('<channel access token>');
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => '<channel secret>']);
$response = $bot->leaveRoom('<roomId>');
echo $response->getHTTPStatus() . ' ' . $response->getRawBody();
リクエストの例
use LINE::Bot::API;

my $bot = LINE::Bot::API->new(
    channel_secret       => "<channel secret>",
    channel_access_token => "<channel access token>",
);

my $res = $bot->leave_room("<roomId>");
unless ($res->is_success) {
    # error handling
    ....
}
リクエストの例
from linebot import LineBotApi
from linebot.exceptions import LineBotApiError

line_bot_api = LineBotApi('<channel access token>')

try:
    line_bot_api.leave_room('<room_id>')
except LineBotApiError as e:
    # error handle
    ...
リクエストの例
const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

client.leaveRoom('<roomId>')
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

トークルームから退出する

トークルームから退出するAPIです。

HTTPリクエスト

POST https://api.line.me/v2/bot/room/{roomId}/leave

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 説明
roomId トークルームID。Webhookイベントオブジェクトsourceオブジェクトで返されます。

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リッチメニュー

注:Messaging APIで作成したリッチメニューは、LINE AndroidおよびLINE iOSのバージョン7.14.0以降でサポートされます。

ボットのトーク画面に表示される、カスタマイズ可能なメニューです。詳しくは、「リッチメニューを使う」を参照してください。

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/richmenu/{richMenuId} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューを取得する

IDを指定してリッチメニューを取得するAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/richmenu/{richMenuId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
richMenuId 必須 アップロードされたリッチメニューのID

レスポンスの例

{
  "richMenuId": "{richMenuId}",
  "size": {
     "width": 2500,
     "height": 1686
   },
   "selected": false,
   "areas": [
     {
       "bounds": {
         "x": 0,
         "y": 0,
         "width": 2500,
         "height": 1686
       },
       "action": {
         "type": "postback"
         "data": "action=buy&itemid=123"
       }
     }
   ]
}

レスポンス

ステータスコード200と、リッチメニューレスポンスオブジェクトを含むJSONレスポンスが返されます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/richmenu \
-H 'Authorization: Bearer {channel access token}' \
-H 'Content-Type: application/json' \
-d \
'{
    "size": {
      "width": 2500,
      "height": 1686
    },
    "selected": false,
    "name": "Nice richmenu",
    "chatBarText": "Tap here",
    "areas": [
      {
        "bounds": {
          "x": 0,
          "y": 0,
          "width": 2500,
          "height": 1686
        },
        "action": {
          "type": "postback",
          "data": "action=buy&itemid=123"
        }
      }
   ]
}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューを作成する

リッチメニューを作成するAPIです。

リッチメニューを表示するには、リッチメニューの画像をアップロードし、さらにリッチメニューをユーザーとリンクする必要があります。1つのボットに対して最大で1000件のリッチメニューを作成できます。

HTTPリクエスト

POST https://api.line.me/v2/bot/richmenu

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}
Content-Type application/json

リクエストボディ

リッチメニューオブジェクトとして表されるリッチメニューを指定します。

レスポンスの例

{
  "richMenuId": "{richMenuId}"
}

レスポンス

ステータスコード200およびリッチメニューIDを返します。

リクエストの例

curl -v -X DELETE https://api.line.me/v2/bot/richmenu/{richMenuId} \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューを削除する

リッチメニューを削除するAPIです。

HTTPリクエスト

DELETE https://api.line.me/v2/bot/richmenu/{richMenuId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
richMenuId 必須 アップロードされたリッチメニューのID

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/user/{userId}/richmenu \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

ユーザーのリッチメニューのIDを取得する

ユーザーにリンクされたリッチメニューのIDを取得するAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/user/{userId}/richmenu

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
userId 必須 ユーザーID。Webhookイベントオブジェクトsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{
    "richMenuId": "{richMenuId}"
}

レスポンス

ステータスコード200およびリッチメニューIDを表すJSONオブジェクトを返します。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/user/{userId}/richmenu/{richMenuId} \
-H "Authorization: Bearer {channel access token}"
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューとユーザーをリンクする

リッチメニューとユーザーをリンクするAPIです。複数のリッチメニューを1人のユーザーに同時にリンクすることはできません。

HTTPリクエスト

POST https://api.line.me/v2/bot/user/{userId}/richmenu/{richMenuId}

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
richMenuId 必須 アップロードされたリッチメニューのID
userId 必須 ユーザーID。Webhookイベントオブジェクトsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

curl -v -X DELETE https://api.line.me/v2/bot/user/{userId}/richmenu \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューとユーザーのリンクを解除する

リッチメニューとユーザーのリンクを解除するAPIです。

HTTPリクエスト

DELETE https://api.line.me/v2/bot/user/{userId}/richmenu

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
userId 必須 ユーザーID。Webhookイベントオブジェクトsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/richmenu/{richMenuId}/content \
-H 'Authorization: Bearer {channel access token}' \
-o picture.jpg
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューの画像をダウンロードする

リッチメニューの画像をダウンロードするAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/richmenu/{richMenuId}/content

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
richMenuId 必須 画像をダウンロードするリッチメニューのID

レスポンス

ステータスコード200およびリッチメニュー画像のバイナリデータを返します。リクエストの例に示すように、画像をダウンロードできます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/richmenu/{richMenuId}/content \
-H "Authorization: Bearer {channel access token}" \
-H "Content-Type: image/jpeg" \
-T image.jpg
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューの画像をアップロードする

画像をアップロードしてリッチメニューに付加するAPIです。

リッチメニューの画像は以下の要件を満たす必要があります。

  • 画像フォーマット:JPEGまたはPNG
  • 画像サイズ:2500×1686または2500×843ピクセル
  • 最大ファイルサイズ:1MB

注:リッチメニューに付加された画像を置き換えることはできません。リッチメニューの画像を更新するには、新しいリッチメニューオブジェクトを作成して、新しい画像をアップロードします。

HTTPリクエスト

POST https://api.line.me/v2/bot/richmenu/{richMenuId}/content

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}
Content-Type image/jpegまたはimage/png
Content-Length リクエストボディのオクテット(8ビットバイト)での長さ。正の値である必要があります。

パスパラメータ

パラメータ 必須 説明
richMenuId 必須 画像を付加するリッチメニューのID

レスポンスの例

{}

レスポンス

ステータスコード200および空のJSONオブジェクトを返します。

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/richmenu/list \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

リッチメニューのリストを取得する

アップロードされたすべてのリッチメニューを取得するAPIです。

HTTPリクエスト

GET https://api.line.me/v2/bot/richmenu/list

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

レスポンスの例

{
  "richmenus": [
    {
      "richMenuId": "{richMenuId}",
      "size": {
        "width": 2500,
        "height": 1686
      },
      "selected": false,
      "areas": [
        {
          "bounds": {
            "x": 0,
            "y": 0,
            "width": 2500,
            "height": 1686
          },
          "action": {
            "type": "postback"
            "data": "action=buy&itemid=123"
          }
        }
      ]
    }
  ]
}

レスポンス

ステータスコード200およびリッチメニューレスポンスオブジェクトのリストを返します。

プロパティ タイプ 説明
richmenus Array リッチメニューレスポンスオブジェクトの配列

アカウント連携

リクエストの例

curl -X POST https://api.line.me/v2/bot/user/{userId}/linkToken \
-H 'Authorization: Bearer {channel access token}'
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available
リクエストの例
// No sample code available
リクエストの例
# No sample code available
リクエストの例
# No sample code available
リクエストの例
// No sample code available

連携トークンを発行する

アカウント連携で使用する連携トークンを発行するAPIです。

HTTPリクエスト

POST https://api.line.me/v2/bot/user/{userId}/linkToken

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {channel access token}

パスパラメータ

パラメータ 必須 説明
userId 必須 連携対象のLINEアカウントのユーザーID。アカウント連携イベントオブジェクトのsourceオブジェクトで返されます。LINEアプリに表示されるLINE IDは使用しないでください。

レスポンスの例

{
  "linkToken": "NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY"
}

レスポンス

ステータスコード200および連携トークンを返します。連携トークンの有効期間は10分で、1回のみ使用できます。

注:有効期間は予告なく変わる可能性があります。

メッセージオブジェクト

送信するメッセージの内容を表すJSONオブジェクトです。

テキストの例

{
    "type": "text",
    "text": "Hello, world"
}

テキストメッセージ

プロパティ タイプ 必須 説明
type String 必須 text
text String 必須 メッセージのテキスト。以下の絵文字を含めることができます。 最大文字数:2000

絵文字を含むテキストの例


{
    "type": "text",
    "text": "\uDBC0\uDC84 LINE emoji"
}

スタンプの例

{
  "type": "sticker",
  "packageId": "1",
  "stickerId": "1"
}

スタンプメッセージ

プロパティ タイプ 必須 説明
type String 必須 sticker
packageId String 必須 スタンプセットのパッケージID。パッケージIDについては、スタンプリストを参照してください。
stickerId String 必須 スタンプID。Messaging APIで送信できるスタンプのスタンプIDについては、スタンプリストを参照してください。

画像の例

{
    "type": "image",
    "originalContentUrl": "https://example.com/original.jpg",
    "previewImageUrl": "https://example.com/preview.jpg"
}

画像メッセージ

プロパティ タイプ 必須 説明
type String 必須 image
originalContentUrl String 必須 画像のURL(最大文字数:1000)
HTTPS
JPEG
最大画像サイズ:1024×1024
最大ファイルサイズ:1MB
previewImageUrl String 必須 プレビュー画像のURL(最大文字数:1000)
HTTPS
JPEG
最大画像サイズ:240×240
最大ファイルサイズ:1MB

動画の例

{
    "type": "video",
    "originalContentUrl": "https://example.com/original.mp4",
    "previewImageUrl": "https://example.com/preview.jpg"
}

動画メッセージ

プロパティ タイプ 必須 説明
type String 必須 video
originalContentUrl String 必須 動画ファイルのURL(最大文字数:1000)
HTTPS
mp4
最大長:1分
最大ファイルサイズ:10MB

一定以上に縦長・横長の動画を送信した場合、一部の環境では動画の一部が欠けて表示される場合があります。
previewImageUrl String 必須 プレビュー画像のURL(最大文字数:1000)
HTTPS
JPEG
最大画像サイズ:240×240
最大ファイルサイズ:1MB

音声の例

{
    "type": "audio",
    "originalContentUrl": "https://example.com/original.m4a",
    "duration": 60000
}

音声メッセージ

プロパティ タイプ 必須 説明
type String 必須 audio
originalContentUrl String 必須 音声ファイルのURL(最大文字数:1000)
HTTPS
m4a
最大長:1分
最大ファイルサイズ:10MB
duration Number 必須 音声ファイルの長さ(ミリ秒)

位置情報の例

{
    "type": "location",
    "title": "my location",
    "address": "〒150-0002 東京都渋谷区渋谷2丁目21−1",
    "latitude": 35.65910807942215,
    "longitude": 139.70372892916203
}

位置情報メッセージ

プロパティ タイプ 必須 説明
type String 必須 location
title String 必須 タイトル
最大文字数:100
address String 必須 住所
最大文字数:100
latitude Decimal 必須 緯度
longitude Decimal 必須 経度

2つのタップ領域を持つイメージマップの例

{
  "type": "imagemap",
  "baseUrl": "https://example.com/bot/images/rm001",
  "altText": "This is an imagemap",
  "baseSize": {
      "height": 1040,
      "width": 1040
  },
  "actions": [
      {
          "type": "uri",
          "linkUri": "https://example.com/",
          "area": {
              "x": 0,
              "y": 0,
              "width": 520,
              "height": 1040
          }
      },
      {
          "type": "message",
          "text": "Hello",
          "area": {
              "x": 520,
              "y": 0,
              "width": 520,
              "height": 1040
          }
      }
  ]
}

イメージマップメッセージ

注:イメージマップメッセージは、以下のバージョンのLINEアプリで対応しています。

iOS版3.9.1以降、Android版3.9.2以降、Windows Phone版3.6.0以降、WindowsおよびMac OS版4.4.1以降

イメージマップは、1つ以上のリンクが設定された画像です。画像全体に1つのリンクを割り当てることも、画像を区切って複数のリンクを割り当てることもできます。

プロパティ タイプ 必須 説明
type String 必須 imagemap
baseUrl String 必須 画像のベースURL(最大文字数:1000)
HTTPS
altText String 必須 代替テキスト
最大文字数:400
baseSize.width Number 必須 基本画像の幅(px単位)。1040を指定します。
baseSize.height Number 必須 基本画像の幅を1040pxとした場合の高さ
actions イメージマップアクションオブジェクトの配列 必須 画像がタップされたときのアクション
最大件数:50

画像の設定方法

イメージマップに使える画像の仕様は以下のとおりです。

  • 画像フォーマット:JPEGまたはPNG
  • 画像の幅:240px、300px、460px、700px、および1040px
  • データサイズ:最大1MB

5つの異なるサイズの画像を「baseUrl/{画像の幅サイズ}」の形式でアクセスできるようにします。これにより、デバイスに応じて望ましい解像度でLINEアプリに画像がダウンロードされます。

たとえば、ベースURLが以下の場合を考えます。

https://example.com/images/cats

幅が700pxの画像のURLは以下になります。

https://example.com/images/cats/700

イメージマップアクションオブジェクト

イメージマップに設定するアクションとタップ領域を表すオブジェクトです。

領域がタップされると、uriの場合は指定するURIにユーザーがリダイレクトされ、messageの場合は指定するメッセージが送信されます。

イメージマップURIアクションオブジェクトの例

{  
   "type":"uri",
   "label":"https://example.com/",
   "linkUri":"https://example.com/",
   "area":{  
      "x":0,
      "y":0,
      "width":520,
      "height":1040
   }
}
イメージマップURIアクションオブジェクト
プロパティ タイプ 必須 説明
type String 必須 uri
label String 任意 アクションのラベル。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。
最大文字数:50
LINE iOSのバージョン8.2.0以降でサポートされます。
linkUri String 必須 ウェブページのURL
最大文字数:1000
area イメージマップ領域オブジェクト 必須 タップ領域の定義

イメージマップメッセージアクションオブジェクトの例

{  
   "type":"message",
   "label":"hello",
   "text":"hello",
   "area":{  
      "x":520,
      "y":0,
      "width":520,
      "height":1040
   }
}
イメージマップメッセージアクションオブジェクト
プロパティ タイプ 必須 説明
type String 必須 message
label String 任意 アクションのラベル。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。
最大文字数:50
LINE iOSのバージョン8.2.0以降でサポートされます。
text String 必須 送信するメッセージ
最大文字数:400
iOSおよびAndroid版のLINEアプリでのみサポートされます。
area イメージマップ領域オブジェクト 必須 タップ領域の定義

イメージマップ領域オブジェクトの例

{
   "x":520,
   "y":0,
   "width":520,
   "height":1040
}

イメージマップ領域オブジェクト

タップ領域のサイズを表すオブジェクトです。画像の左上が座標の原点です。baseSize.widthプロパティとbaseSize.heightプロパティに基づいて指定します。

プロパティ タイプ 必須 説明
x Number 必須 領域の左上角からの横方向の相対位置
y Number 必須 領域の左上角からの縦方向の相対位置
width Number 必須 タップ領域の幅
height Number 必須 タップ領域の高さ

テンプレートメッセージ

注:テンプレートメッセージはiOS版およびAndroid版のLINE 6.7.0以降で対応しています。

テンプレートメッセージは、あらかじめレイアウトが定義されたテンプレートをカスタマイズして構築するメッセージです。詳しくは、「テンプレートメッセージ」を参照してください。

以下のタイプのテンプレートを利用できます。

テンプレートメッセージオブジェクトの共通プロパティ

以下のプロパティは、すべてのテンプレートメッセージオブジェクトで共通です。

プロパティ タイプ 必須 説明
type String 必須 template
altText String 必須 代替テキスト
最大文字数:400
template Object 必須 ボタン確認カルーセル、または画像カルーセルオブジェクト

ボタンテンプレートメッセージの例

{
  "type": "template",
  "altText": "This is a buttons template",
  "template": {
      "type": "buttons",
      "thumbnailImageUrl": "https://example.com/bot/images/image.jpg",
      "imageAspectRatio": "rectangle",
      "imageSize": "cover",
      "imageBackgroundColor": "#FFFFFF",
      "title": "Menu",
      "text": "Please select",
      "defaultAction": {
          "type": "uri",
          "label": "View detail",
          "uri": "http://example.com/page/123"
      },
      "actions": [
          {
            "type": "postback",
            "label": "Buy",
            "data": "action=buy&itemid=123"
          },
          {
            "type": "postback",
            "label": "Add to cart",
            "data": "action=add&itemid=123"
          },
          {
            "type": "uri",
            "label": "View detail",
            "uri": "http://example.com/page/123"
          }
      ]
  }
}

ボタンテンプレート

画像、タイトル、テキストに加えて、複数のアクションボタンが含まれたテンプレートです。

プロパティ タイプ 必須 説明
type String 必須 buttons
thumbnailImageUrl String 任意 画像URL(最大文字数:1000)
HTTPS
JPEGまたはPNG
最大横幅サイズ:1024px
最大ファイルサイズ:1MB
imageAspectRatio String 任意 画像のアスペクト比。以下のいずれかの値を指定します。
  • rectangle: 1.51:1
  • square: 1:1
デフォルト値はrectangleです。
imageSize String 任意 画像の表示形式。以下のいずれかの値を指定します。
  • cover:画像領域全体に画像を表示します。画像領域に収まらない部分は切り詰められます。
  • contain:画像領域に画像全体を表示します。縦長の画像では左右に、横長の画像では上下に余白が表示されます。
デフォルト値はcoverです。
imageBackgroundColor String 任意 画像の背景色。RGB値で設定します。デフォルト値は#FFFFFF(白)です。
title String 任意 タイトル
最大文字数:40
text String 必須 メッセージテキスト
画像もタイトルも指定しない場合の最大文字数:160
画像またはタイトルを指定する場合の最大文字数:60
defaultAction アクションオブジェクト 任意 画像、タイトル、テキストの領域全体に対して設定できる、タップされたときのアクション
actions アクションオブジェクトの配列 必須 タップされたときのアクション
最大件数:4

確認テンプレートメッセージの例

{
  "type": "template",
  "altText": "this is a confirm template",
  "template": {
      "type": "confirm",
      "text": "Are you sure?",
      "actions": [
          {
            "type": "message",
            "label": "Yes",
            "text": "yes"
          },
          {
            "type": "message",
            "label": "No",
            "text": "no"
          }
      ]
  }
}

確認テンプレート

2つのアクションボタンを表示するテンプレートです。

プロパティ タイプ 必須 説明
type String 必須 confirm
text String 必須 メッセージのテキスト
最大文字数:240
actions アクションオブジェクトの配列 必須 タップされたときのアクション
2つのボタンに1つずつアクションを設定します。

カルーセルテンプレートメッセージの例

{
  "type": "template",
  "altText": "this is a carousel template",
  "template": {
      "type": "carousel",
      "columns": [
          {
            "thumbnailImageUrl": "https://example.com/bot/images/item1.jpg",
            "imageBackgroundColor": "#FFFFFF",
            "title": "this is menu",
            "text": "description",
            "defaultAction": {
                "type": "uri",
                "label": "View detail",
                "uri": "http://example.com/page/123"
            },
            "actions": [
                {
                    "type": "postback",
                    "label": "Buy",
                    "data": "action=buy&itemid=111"
                },
                {
                    "type": "postback",
                    "label": "Add to cart",
                    "data": "action=add&itemid=111"
                },
                {
                    "type": "uri",
                    "label": "View detail",
                    "uri": "http://example.com/page/111"
                }
            ]
          },
          {
            "thumbnailImageUrl": "https://example.com/bot/images/item2.jpg",
            "imageBackgroundColor": "#000000",
            "title": "this is menu",
            "text": "description",
            "defaultAction": {
                "type": "uri",
                "label": "View detail",
                "uri": "http://example.com/page/222"
            },
            "actions": [
                {
                    "type": "postback",
                    "label": "Buy",
                    "data": "action=buy&itemid=222"
                },
                {
                    "type": "postback",
                    "label": "Add to cart",
                    "data": "action=add&itemid=222"
                },
                {
                    "type": "uri",
                    "label": "View detail",
                    "uri": "http://example.com/page/222"
                }
            ]
          }
      ],
      "imageAspectRatio": "rectangle",
      "imageSize": "cover"
  }
}

カルーセルテンプレート

複数のカラムを表示するテンプレートです。カラムは横にスクロールして順番に表示できます。

プロパティ タイプ 必須 説明
type String 必須 carousel
columns カラムオブジェクトの配列 必須 カラムの配列
最大カラム数:10
imageAspectRatio String 任意 画像のアスペクト比。以下のいずれかの値を指定します。
  • rectangle: 1.51:1
  • square: 1:1
すべてのカラムに適用されます。デフォルト値はrectangleです。
imageSize String 任意 画像の表示形式。以下のいずれかの値を指定します。
  • cover:画像領域全体に画像を表示します。画像領域に収まらない部分は切り詰められます。
  • contain:画像領域に画像全体を表示します。縦長の画像では左右に、横長の画像では上下に余白が表示されます。
すべてのカラムに適用されます。デフォルト値はcoverです。

カルーセルのカラムオブジェクト
プロパティ タイプ 必須 説明
thumbnailImageUrl String 任意 画像URL(最大文字数:1000)
HTTPS
JPEGまたはPNG
縦横比:1:1.51
最大横幅サイズ:1024px
最大ファイルサイズ:1MB
imageBackgroundColor String 任意 画像の背景色。RGB値で設定します。デフォルト値は#FFFFFF(白)です。
title String 任意 タイトル
最大文字数:40
text String 必須 メッセージテキスト
画像もタイトルも指定しない場合の最大文字数:120
画像またはタイトルを指定する場合の最大文字数:60
defaultAction アクションオブジェクト 任意 画像、タイトル、テキストの領域全体に対して設定できる、タップされたときのアクション
actions アクションオブジェクトの配列 必須 タップされたときのアクション
最大件数:3

画像カルーセルテンプレートメッセージの例

{
  "type": "template",
  "altText": "this is a image carousel template",
  "template": {
      "type": "image_carousel",
      "columns": [
          {
            "imageUrl": "https://example.com/bot/images/item1.jpg",
            "action": {
              "type": "postback",
              "label": "Buy",
              "data": "action=buy&itemid=111"
            }
          },
          {
            "imageUrl": "https://example.com/bot/images/item2.jpg",
            "action": {
              "type": "message",
              "label": "Yes",
              "text": "yes"
            }
          },
          {
            "imageUrl": "https://example.com/bot/images/item3.jpg",
            "action": {
              "type": "uri",
              "label": "View detail",
              "uri": "http://example.com/page/222"
            }
          }
      ]
  }
}

画像カルーセルテンプレート

複数の画像を表示するテンプレートです。画像は横にスクロールして順番に表示できます。

プロパティ タイプ 必須 説明
type String 必須 image_carousel
columns カラムオブジェクトの配列 必須 カラムの配列
最大カラム数:10

画像カルーセルのカラムオブジェクト
プロパティ タイプ 必須 説明
imageUrl String 必須 画像URL(最大文字数:1000)
HTTPS
JPEGまたはPNG
縦横比:1:1
最大横幅サイズ:1024px
最大ファイルサイズ:1MB
action アクションオブジェクト 必須 画像がタップされたときのアクション

アクションオブジェクト

ポストバックアクションオブジェクトの例

{  
   "type":"postback",
   "label":"Buy",
   "data":"action=buy&itemid=111",
   "text":"Buy"
}

ポストバックアクション

このアクションが関連づけられたコントロールがタップされると、dataプロパティに指定された文字列を含むポストバックイベントが、webhookを介して返されます。

プロパティ タイプ 必須 説明
type String 必須 postback
label String 説明を参照 アクションのラベル
  • 画像カルーセル以外のテンプレートメッセージには必須です。最大文字数:20
  • 画像カルーセルテンプレートメッセージでは省略可能です。最大文字数:12
  • リッチメニューでは省略可能です。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。最大文字数:20。LINE iOSのバージョン8.2.0以降でサポートされます。
data String 必須 Webhookを介して、ポストバックイベントpostback.dataプロパティで返される文字列
最大文字数:300
displayText String 任意 アクションの実行時に、ユーザーのメッセージとしてLINEアプリのトーク画面に表示されるテキスト
最大文字数:300
displayTextフィールドとtextフィールドは、同時に設定できません。
text String 任意 非推奨。アクションの実行時に、ユーザーのメッセージとしてLINEアプリのトーク画面に表示されるテキスト。Webhookを介してサーバーに返されます。
最大文字数:300
displayTextフィールドとtextフィールドは、同時に設定できません。

メッセージアクションオブジェクトの例

{  
   "type":"message",
   "label":"Yes",
   "text":"Yes"
}

メッセージアクション

このアクションが関連づけられたコントロールがタップされると、textプロパティの文字列がユーザーからのメッセージとして送信されます。

プロパティ タイプ 必須 説明
type String 必須 message
label String 説明を参照 アクションのラベル
  • 画像カルーセル以外のテンプレートメッセージには必須です。最大文字数:20
  • 画像カルーセルテンプレートメッセージでは省略可能です。最大文字数:12
  • リッチメニューでは省略可能です。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。最大文字数:20。LINE iOSのバージョン8.2.0以降でサポートされます。
text String 必須 アクションの実行時に送信されるテキスト
最大文字数:300

URIアクションオブジェクトの例

{  
   "type":"uri",
   "label":"View details",
   "uri":"http://example.com/page/222"
}

URIアクション

このアクションが関連づけられたコントロールがタップされると、uriプロパティのURIが開きます。

プロパティ タイプ 必須 説明
type String 必須 uri
label String 説明を参照 アクションのラベル
  • 画像カルーセル以外のテンプレートメッセージには必須です。最大文字数:20
  • 画像カルーセルテンプレートメッセージでは省略可能です。最大文字数:12
  • リッチメニューでは省略可能です。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。最大文字数:20。LINE iOSのバージョン8.2.0以降でサポートされます。
uri String 必須 アクションの実行時に開かれるURI(最大文字数:1000)
httphttps、またはtelで始める必要があります。

日時選択アクションオブジェクトの例

{  
   "type":"datetimepicker",
   "label":"Select date",
   "data":"storeId=12345",
   "mode":"datetime",
   "initial":"2017-12-25t00:00",
   "max":"2018-01-24t23:59",
   "min":"2017-12-25t00:00"
}

日時選択アクション

注:日時選択アクションは、iOS版LINE 7.9.0およびAndroid版LINE 7.12.0以降で利用できます。

このアクションが関連づけられたコントロールがタップされると、日時選択ダイアログでユーザーが選択した日時を含むポストバックイベントが、webhookを介して返されます。日時選択アクションはタイムゾーンの違いに対応していません。

プロパティ タイプ 必須 説明
type String 必須 datetimepicker
label String 説明を参照 アクションのラベル
  • 画像カルーセル以外のテンプレートメッセージには必須です。最大文字数:20
  • 画像カルーセルテンプレートメッセージでは省略可能です。最大文字数:12
  • リッチメニューでは省略可能です。ユーザーデバイスのアクセシビリティ機能が有効な場合に読み上げられます。最大文字数:20。LINE iOSのバージョン8.2.0以降でサポートされます。
data String 必須 Webhookを介して、ポストバックイベントpostback.dataプロパティで返される文字列
最大文字数:300
mode String 必須 アクションモード
date:日付を選択します。
time:時刻を選択します。
datetime:日付と日時を選択します。
initial String 任意 日付または時刻の初期値
max String 任意 選択可能な日付または時刻の最大値。minの値より大きい必要があります。
min String 任意 選択可能な日付または時刻の最小値。maxの値より小さい必要があります。

日付と日時の形式

initialmax、およびminの値の日付と日時の形式は以下のとおりです。full-datetime-hour、およびtime-minuteの形式は、RFC3339プロトコルで定義されています。

モード 形式
date full-date
最大値:2100-12-31
最小値:1900-01-01
2017-06-18
time time-hour:time-minute
最大値:23:59
最小値:00:00
00:00
06:15
23:59
datetime full-dateTtime-hour:time-minuteまたはfull-datettime-hour:time-minute
最大値:2100-12-31T23:59
最小値:1900-01-01T00:00
2017-06-18T06:15
2017-06-18t06:15

リッチメニューの構造

リッチメニューは以下のどちらかのオブジェクトで表されます。

これらのオブジェクトは領域オブジェクトアクションオブジェクトから構成されます。

リッチメニューオブジェクトの例

{
  "size": {
    "width": 2500,
    "height": 1686
  },
  "selected": false,
  "name": "Nice richmenu",
  "chatBarText": "Tap to open",
  "areas": [
    {
      "bounds": {
        "x": 0,
        "y": 0,
        "width": 2500,
        "height": 1686
      },
      "action": {
        "type": "postback",
        "data": "action=buy&itemid=123"
      }
    }
  ]
}

リッチメニューオブジェクト

プロパティ タイプ 必須 説明
size Object 必須 sizeオブジェクト。トークルームに表示されるリッチメニューの幅と高さを表します。使用できるリッチメニューの画像サイズは2500×1686pxまたは2500×843pxです。
selected Boolean 必須 デフォルトでリッチメニューを表示する場合はtrueです。そうでなければfalseです。
name String 必須 リッチメニューの名前。リッチメニューの管理に役立ちます。ユーザーには表示されません。
最大文字数:300
chatBarText String 必須 トークルームメニューに表示されるテキストです。
最大文字数:14
areas Array 必須 タップ領域の座標とサイズを定義する、領域オブジェクトの配列。
最大領域オブジェクト数:20

リッチメニューレスポンスオブジェクトの例

{
  "richMenuId": "{richMenuId}",
  "size": {
    "width": 2500,
    "height": 1686
  },
  "selected": false,
  "name": "Nice richmenu",
  "chatBarText": "Tap to open",
  "areas": [
    {
      "bounds": {
        "x": 0,
        "y": 0,
        "width": 2500,
        "height": 1686
      },
      "action": {
        "type": "postback",
        "label":"Buy",
        "data": "action=buy&itemid=123"
      }
    }
  ]
}

リッチメニューレスポンスオブジェクト

プロパティ タイプ 説明
richMenuId  String リッチメニューID
size Object sizeオブジェクト。トークルームに表示されるリッチメニューの幅と高さを表します。使用できるリッチメニューの画像サイズは2500×1686pxまたは2500×843pxです。
selected Boolean デフォルトでリッチメニューを表示する場合はtrueです。そうでなければfalseです。
name String リッチメニューの名前。リッチメニューの管理に役立ちます。ユーザーには表示されません。
最大文字数:300
chatBarText String トークルームメニューに表示されるテキストです。
最大文字数:14
areas Array タップ領域の座標とサイズを定義する、領域オブジェクトの配列。
最大領域オブジェクト数:20

sizeオブジェクトの例

{
   "width":520,
   "height":1040
}

sizeオブジェクト

プロパティ タイプ 必須 説明
width Number 必須 リッチメニューの幅。2500である必要があります。
height Number 必須 リッチメニューの高さ。1686または843である必要があります。

領域オブジェクトの例

{
  "bounds": {
    "x": 0,
    "y": 0,
    "width": 2500,
    "height": 1686
  },
  "action": {
    "type": "postback",
    "label":"Buy",
    "data": "action=buy&itemid=123"
  }
}

領域オブジェクト

プロパティ タイプ 必須 説明
bounds Object 必須 領域の境界をピクセルで表すオブジェクト。「boundsオブジェクト」を参照してください。
action Object 必須 領域がタップされたときに実行されるアクション。「アクションオブジェクト」を参照してください。

boundsオブジェクトの例

{
   "x":0,
   "y":0,
   "width":2500,
   "height":1686
}

boundsオブジェクト
プロパティ タイプ 必須 説明
x Number 必須 領域の左上角からの横方向の相対位置
y Number 必須 領域の左上角からの縦方向の相対位置
width Number 必須 領域の幅
height Number 必須 領域の高さ