APIリファレンス

共通仕様

レート制限

APIごとに実行できるリクエスト回数およびMessaging APIによって送信されるメッセージの受信者数の制限は以下のとおりです。レート制限はご利用のプランによって異なります。

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

ステータスコード

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

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

レスポンスヘッダー

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

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

エラーのJSONレスポンスの例

{
  "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"}
  ]
}


{
  "message":"Invalid reply token"
}

エラーレスポンス

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

フィールド タイプ 説明
message String エラーの概要
details[].message String エラーの詳細
details[].property String エラーの発生箇所

または

フィールド タイプ 説明
message 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リクエストボディの例

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

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 =
  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": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
      "type": "message",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      },
      "message": {
        "id": "325708",
        "type": "text",
        "text": "Hello, world"
      }
    },
    {
      "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
      "type": "follow",
      "timestamp": 1462629479859,
      "source": {
        "type": "user",
        "userId": "U4af4980629..."
      }
    }
  ]
}

共通フィールド

以下のフィールドはすべてのwebhookイベントオブジェクトに含まれます。

フィールド タイプ 説明
type String イベントのタイプを表す識別子
timestamp Number イベントの発生時刻(ミリ秒)
source 送信元ユーザー
送信元グループ
送信元トークルーム
イベントの送信元を表すJSONオブジェクト

送信元ユーザーの例

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

送信元ユーザー

イベントの送信元ユーザーを表すJSONオブジェクトです。

フィールド タイプ 説明
type String user
userId String 送信元ユーザーのID

送信元グループの例

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

送信元グループ

イベントの送信元グループを表すJSONオブジェクトです。

フィールド タイプ 説明
type String group
groupId String 送信元グループのID
userId String 送信元ユーザーのID

注:グループの各メンバーのユーザーIDは、メッセージイベントにのみ含まれます。公式アカウントの利用条件に合意していないユーザーのIDは含まれません。

送信元トークルームの例

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

送信元トークルーム

イベントの送信元トークルームを表すJSONオブジェクトです。

フィールド タイプ 説明
type String room
roomId String 送信元トークルームのID
userId String 送信元ユーザーのID

注:グループの各メンバーのユーザーIDは、メッセージイベントにのみ含まれます。公式アカウントの利用条件に合意していないユーザーのIDは含まれません。

メッセージイベント

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

フィールド タイプ 説明
type String message
replyToken String このイベントへの応答に使用するトークン
message テキスト
画像
動画
音声
ファイル
位置情報
スタンプ
メッセージの内容

テキストメッセージの例

{
  "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

アカウントがトークルームを退出したときはイベントは生成されません。

グループから退出またはトークルームから退出するAPIを使って退出した場合は、退出イベントは生成されません。

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

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "postback",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "postback": {
    "data": "action=buyItem&itemId=123123&color=red"
  }
}

ポストバックイベント

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

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

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 String
beacon.hwid String 検出されたビーコンのハードウェアID
beacon.type String ビーコンイベントのタイプ
beacon.dm String 省略可。検出されたビーコンのデバイスメッセージ

デバイスメッセージは、ボットへの通知を目的としてビーコンにより生成されるデータです。 beacon.dmフィールドは、このフィールドをサポートするデバイスからのwebhookにのみ含まれます。 beacon.dmは、LINE Simple Beaconの仕様に準拠したデバイスで使用できます。 詳しくは、LINE Simple Beaconの仕様を参照してください。

イベントのタイプに応じて、beacon.typeフィールドには以下の文字列が含まれます。

beacon.type 説明
enter ユーザーがビーコンの受信圏内に入りました。
leave ユーザーがビーコンの受信圏外に出ました。
banner ユーザーがビーコンバナーをタップしました。

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={CLIENT_ID}' \
--data-urlencode 'client_secret={CLIENT_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={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 {ACCESS_TOKEN}' \
-d '{
    "replyToken":"nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
    "messages":[
        {
            "type":"text",
            "text":"Hello, user"
        },
        {
            "type":"text",
            "text":"May I help you?"
        }
    ]
}'
応答メッセージを送るリクエストの例
TextMessage textMessage = new TextMessage("hello");
ReplyMessage replyMessage = new ReplyMessage(
        "<replyToken>",
        textMessage
);
Response<BotApiResponse> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .replyMessage(replyMessage)
                .execute();
System.out.println(response.code() + " " + response.message());
応答メッセージを送るリクエストの例
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を使って通知されます。応答できるイベントにはreplyTokenが発行されます。

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

HTTPリクエスト

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

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/json
Authorization Bearer {Channel Access Token}

リクエストボディ

メッセージを表すメッセージオブジェクトの配列を含めます。

フィールド タイプ 必須 説明
replyToken String はい Webhookで受信するreplyToken
messages メッセージオブジェクトの配列 はい 送信するメッセージ
最大件数:5

JSONレスポンスの例

{}

レスポンス

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

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

curl -v -X POST https://api.line.me/v2/bot/message/push \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-d '{
    "to": "U4af4980629...",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'
プッシュメッセージを送るリクエストの例
TextMessage textMessage = new TextMessage("hello");
PushMessage pushMessage = new PushMessage(
        "<to>",
        textMessage
);

Response<BotApiResponse> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .pushMessage(pushMessage)
                .execute();
System.out.println(response.code() + " " + response.message());
プッシュメッセージを送るリクエストの例
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
  });

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

ユーザー、グループ、またはトークルームに、任意のタイミングでメッセージを送信する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

JSONレスポンスの例

{}

レスポンス

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

複数のユーザーにメッセージを送るリクエストの例

curl -v -X POST https://api.line.me/v2/bot/message/multicast \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {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

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

複数のユーザーに、任意のタイミングでプッシュメッセージを送信するAPIです。

HTTPリクエスト

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

リクエストヘッダー

リクエストヘッダー 説明
Content-Type application/json
Authorization Bearer {Channel Access Token}

リクエストボディ

送信するメッセージを表すメッセージオブジェクトの配列を含めます。

フィールド タイプ 必須 説明
to 文字列の配列 はい ユーザーIDの配列。Webhookイベントオブジェクトで返されるuserIdの値を使用します。
最大ユーザーID数:150
messages メッセージオブジェクトの配列 はい 送信するメッセージ
最大件数:5

JSONレスポンスの例

{}

レスポンス

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

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/message/{messageId}/content \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
リクエストの例
Response<ResponseBody> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .getMessageContent("<messageId>")
                .execute();
if (response.isSuccessful()) {
    ResponseBody content = response.body();
    Files.copy(content.byteStream(),
               Files.createTempFile("foo", "bar"));
} else {
    System.out.println(response.code() + " " + response.message());
}
リクエストの例
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>'
});

const stream = client.getMessageContent('<messageId>');
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}

URLパラメータ

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

レスポンス

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

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

プロフィール

プロフィールを取得するリクエストの例

curl -v -X GET https://api.line.me/v2/bot/profile/{userId} \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
プロフィールを取得するリクエストの例
Response<UserProfileResponse> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .getProfile("<userId>")
                .execute();
if (response.isSuccessful()) {
    UserProfileResponse profile = response.body();
    System.out.println(profile.getDisplayName());
    System.out.println(profile.getPictureUrl());
    System.out.println(profile.getStatusMessage());
} else {
    System.out.println(response.code() + " " + response.message());
}
プロフィールを取得するリクエストの例
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}

URLパラメータ

パラメータ 説明
userId ユーザー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 {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}

URLパラメータ

グループ
パラメータ 説明
groupId グループID
userId ユーザー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 {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を取得する

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

HTTPリクエスト

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

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {Channel Access Token}

URLパラメータ

グループ
パラメータ 必須 説明
groupId はい グループID
start いいえ continuationToken

レスポンスの例

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

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

レスポンス

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

プロパティ タイプ 必須 説明
memberIds 文字列の配列 はい グループメンバーのユーザーIDのリスト
最大ユーザー数:100
next String いいえ continuationToken
memberIdsに続きのユーザーIDがある場合にのみ返されます。

退出するリクエストの例

curl -v -X POST https://api.line.me/v2/bot/group/{groupId}/leave \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
退出するリクエストの例
Response<BotApiResponse> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .leaveGroup("<groupId>")
                .execute();
System.out.println(response.code() + " " + response.message());
退出するリクエストの例
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}

URLパラメータ

パラメータ 説明
groupId グループID

JSONレスポンスの例

{}

レスポンス

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

トークルーム

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

curl -v -X GET https://api.line.me/v2/bot/room/{roomId}/member/{userId} \
-H 'Authorization: Bearer {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}

URLパラメータ

トークルーム
パラメータ 説明
roomId トークルームID
userId ユーザー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 {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を取得する

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

HTTPリクエスト

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

リクエストヘッダー

リクエストヘッダー 説明
Authorization Bearer {Channel Access Token}

URLパラメータ

トークルーム
パラメータ 必須 説明
roomId はい トークルームID
start いいえ continuationToken

レスポンスの例

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

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

レスポンス

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

プロパティ タイプ 必須 説明
memberIds 文字列の配列 はい トークルームメンバーのユーザーIDのリスト
最大ユーザー数:100
next String いいえ continuationToken
memberIdsに続きのユーザーIDがある場合にのみ返されます。

退出するリクエストの例

curl -v -X POST https://api.line.me/v2/bot/room/{roomId}/leave \
-H 'Authorization: Bearer {ACCESS_TOKEN}'
退出するリクエストの例
Response<BotApiResponse> response =
        LineMessagingServiceBuilder
                .create("<channel access token>")
                .build()
                .leaveRoom("<roomId>")
                .execute();
System.out.println(response.code() + " " + response.message());
退出するリクエストの例
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}

URLパラメータ

パラメータ 説明
roomId トークルームID

JSONレスポンスの例

{}

レスポンス

ステータスコード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 {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}

URLパラメータ

パラメータ 必須 説明
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 {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つのボットに対して最大で10件のリッチメニューを作成できます。

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 {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}

URLパラメータ

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

JSONレスポンスの例

{}

レスポンス

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

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/user/{userId}/richmenu \
-H 'Authorization: Bearer {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}

URLパラメータ

パラメータ 必須 説明
userId はい ユーザーID

レスポンスの例

{
    "richMenuId": "{richMenuId}"
}

レスポンス

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

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/user/{userId}/richmenu/{richMenuId} \
-H "Authorization: Bearer {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}

URLパラメータ

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

JSONレスポンスの例

{}

レスポンス

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

リクエストの例

curl -v -X DELETE https://api.line.me/v2/bot/user/{userId}/richmenu \
-H 'Authorization: Bearer {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}

URLパラメータ

パラメータ 必須 説明
userId はい ユーザーID

JSONレスポンスの例

{}

レスポンス

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

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/richmenu/{richMenuId}/content \
-H 'Authorization: Bearer {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}

URLパラメータ

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

レスポンス

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

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/richmenu/{richMenuId}/content \
-H "Authorization: Bearer {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です。

注:

  • 画像の解像度は2500×1686または2500×843である必要があります。
  • リッチメニューに付加された画像を置き換えることはできません。リッチメニューの画像を更新するには、新しいリッチメニューオブジェクトを作成して、新しい画像をアップロードします。

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ビットバイト)での長さ。正の値である必要があります。

URLパラメータ

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

JSONレスポンスの例

{}

レスポンス

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

リクエストの例

curl -v -X GET https://api.line.me/v2/bot/richmenu/list \
-H 'Authorization: Bearer {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 リッチメニューレスポンスオブジェクトの配列

メッセージオブジェクト

送信するメッセージの内容を表す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"
}

スタンプ

Messaging APIで送ることのできるスタンプについては、スタンプリストを参照してください。

フィールド タイプ 必須 説明
type String はい sticker
packageId String はい パッケージID
stickerId String はい スタンプ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": 240000
}

音声

フィールド タイプ 必須 説明
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
          }
      }
  ]
}

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

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

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

ベースURL

イメージマップを使用するには、画像の幅(px)ベースURLの末尾に含めます。これにより、クライアントに望ましい解像度で画像がダウンロードされます。

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

https://example.com/images/cats

クライアントデバイスに幅が700pxの画像をダウンロードする場合のURLは以下になります。

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

クライアントデバイスから要求される画像解像度は以下のいずれかになります。

  • 幅:240px、300px、460px、700px、1040px

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

  • 画像フォーマット:JPEGまたはPNG
  • ファイルサイズ:最大1MB

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

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

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

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

{  
   "type":"uri",
   "linkUri":"https://example.com/",
   "area":{  
      "x":0,
      "y":0,
      "width":520,
      "height":1040
   }
}
イメージマップURIアクションオブジェクト
フィールド タイプ 必須 説明
type String はい uri
linkUri String はい ウェブページのURL
最大文字数:1000
area イメージマップ領域オブジェクト はい タップ領域の定義

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

{  
   "type":"message",
   "text":"hello",
   "area":{  
      "x":520,
      "y":0,
      "width":520,
      "height":1040
   }
}
イメージマップメッセージアクションオブジェクト
フィールド タイプ 必須 説明
type String はい message
text String はい 送信するメッセージ
最大文字数:400
area イメージマップ領域オブジェクト はい タップ領域の定義

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

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

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

タップ領域のサイズを表すオブジェクトです。画像の左上が座標の原点です。

フィールド タイプ 必須 説明
x Number はい 領域の左上角からの横方向の相対位置
y Number はい 領域の左上角からの縦方向の相対位置
width Number はい タップ領域の幅
height Number はい タップ領域の高さ

テンプレートメッセージ

テンプレートメッセージは、あらかじめレイアウトが定義されたテンプレートをカスタマイズして構築するメッセージです。ボットを介してユーザーとやりとりするための、4種類のテンプレートが用意されています。

フィールド タイプ 必須 説明
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",
      "title": "Menu",
      "text": "Please select",
      "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
縦横比:1:1.51
最大横幅サイズ:1024px
最大ファイルサイズ:1MB
title String いいえ タイトル
最大文字数:40
text String はい メッセージテキスト
画像もタイトルも指定しない場合の最大文字数:160
画像またはタイトルを指定する場合の最大文字数:60
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",
            "title": "this is menu",
            "text": "description",
            "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",
            "title": "this is menu",
            "text": "description",
            "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"
                }
            ]
          }
      ]
  }
}

カルーセル

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

フィールド タイプ 必須 説明
type String はい carousel
columns カラムオブジェクトの配列 はい 最大カラム数:10

カルーセルのカラムオブジェクト
フィールド タイプ 必須 説明
thumbnailImageUrl String いいえ 画像URL(最大文字数:1000)
HTTPS
JPEGまたはPNG
縦横比:1:1.51
最大横幅サイズ:1024px
最大ファイルサイズ:1MB
title String いいえ タイトル
最大文字数:40
text String はい メッセージテキスト
画像もタイトルも指定しない場合の最大文字数:120
画像またはタイトルを指定する場合の最大文字数:60
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 アクションオブジェクト はい 画像がタップされたときのアクション

アクションオブジェクト

ポストバックアクション

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

textフィールドを設定した場合は、textフィールドの文字列がユーザーからのメッセージとして送信されます。

フィールド タイプ 必須 説明
type String はい postback
label String 説明を参照 アクションのラベル
画像カルーセル以外のテンプレートには必須です。最大文字数:20
画像カルーセルテンプレートでは省略可能です。最大文字数:12
リッチメニューでは使用しません。
data String はい Webhookを介して、ポストバックイベントpostback.dataプロパティで返される文字列
最大文字数:300
text String いいえ アクションの実行時に送信されるテキスト
最大文字数:300

メッセージアクション

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

フィールド タイプ 必須 説明
type String はい message
label String 説明を参照 アクションのラベル
画像カルーセル以外のテンプレートには必須です。最大文字数:20
画像カルーセルテンプレートでは省略可能です。最大文字数:12
リッチメニューでは使用しません。
text String はい アクションの実行時に送信されるテキスト
最大文字数:300

URIアクション

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

フィールド タイプ 必須 説明
type String はい uri
label String 説明を参照 アクションのラベル
画像カルーセル以外のテンプレートには必須です。最大文字数:20
画像カルーセルテンプレートでは省略可能です。最大文字数:12
リッチメニューでは使用しません。
uri String はい アクションの実行時に開かれるURI(最大文字数:1000)
httphttps、またはtelで始める必要があります。

日時選択アクション

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

フィールド タイプ 必須 説明
type String はい datetimepicker
label String 説明を参照 アクションのラベル
画像カルーセル以外のテンプレートには必須です。最大文字数:20
画像カルーセルテンプレートでは省略可能です。最大文字数:12
リッチメニューでは使用しません。
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": "touch me",
  "areas": [
    {
      "bounds": {
        "x": 0,
        "y": 0,
        "width": 2500,
        "height": 1686
      },
      "action": {
        "type": "postback",
        "data": "action=buy&itemid=123"
      }
    }
  ]
}

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

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

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

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

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

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

sizeオブジェクトの例

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

sizeオブジェクト

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

領域オブジェクトの例

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

領域オブジェクト

フィールド タイプ 必須 説明
bounds Object はい 領域の境界をピクセルで表すオブジェクト。「boundsオブジェクト」を参照してください。
action Object はい 領域がタップされたときに実行されるアクション。「アクションオブジェクト」を参照してください。注:リッチメニューのアクションではlabelフィールドを使用しません。

boundsオブジェクトの例

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

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