# 法人ユーザー向けオプションAPIリファレンス

オプション機能を利用するには手続きが必要です

本ドキュメントに記載の機能は、所定の申請等を行った法人ユーザーのみがご利用いただけます。自社のLINE公式アカウントでご利用になりたいお客様は、担当営業までご連絡いただくか、弊社パートナー (opens new window)にお問い合わせください。

# 共通仕様

# ステータスコード

『Messaging APIリファレンス』の「ステータスコード」を参照してください。

# レスポンスヘッダー

法人ユーザー向けオプションAPIのレスポンスには、以下のHTTPヘッダーが含まれます。

レスポンスヘッダー 説明
x-line-request-id リクエストID。各リクエストごとに発行されるIDです。

# ミッションスタンプAPI

ミッションスタンプは、ミッションの達成を条件としてユーザーに提供するスタンプです。スタンプをインセンティブに、ユーザーに「ID情報の連携」や「会員登録」、「アンケート回答」などを促すことができます。

# ミッションスタンプを送る(v3)

ユーザーに、任意のタイミングでミッションスタンプを送信します。

リクエストの例

curl -X POST https://api.line.me/shop/v3/mission \
-H "Content-Type: application/json" \
-H "Authorization: Bearer {channel access token}" \
-d '{
    "to": "U4af4980629...",
    "productType": "STICKER",
    "productId": "0000",
    "sendPresentMessage": false
}'

# HTTPリクエスト

POST https://api.line.me/shop/v3/mission

# リクエストヘッダー

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

# リクエストボディ

to

String

必須

送信先のユーザーID

productType

String

必須

STICKER

productId

String

必須

スタンプセットのパッケージID

sendPresentMessage

Boolean

必須

false

# レスポンス

ステータスコード200と空のレスポンスボディを返します。

# エラーレスポンス

エラー発生時は、エラーに応じたHTTPステータスコードと、以下のJSONデータを含むレスポンスボディが返されます。

message

String

エラー情報を含むメッセージ。詳しくは、以下の「エラーメッセージ」を参照してください。

# エラーメッセージ

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

コード メッセージ 説明
400 invalid request toに指定した送信先のユーザーIDが無効です。
400 illegal argument productIdに指定したスタンプセットがミッションスタンプとして設定されていません。
400 not_sales_period productIdに指定したスタンプセットが有効期間外です。
400 not sale for country toに指定した送信先のユーザーの国では、productIdに指定したスタンプセットが利用できません。
400 not sale for device toに指定した送信先のユーザーが利用している端末は、productIdに指定したスタンプセットに対応していません。
400 not sale for version toに指定した送信先のユーザーが利用しているLINEアプリのバージョンは、productIdに指定したスタンプセットに対応していません。
403 not allowed to use the API チャネルに、ミッションスタンプAPIの利用権限が付与されていません。
404 not found productIdに指定したスタンプセットが存在しません。

# 既読API

# ユーザーからのメッセージに既読を付ける

特定のユーザーから送信されたすべてのメッセージに「既読」を表示できます。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/message/markAsRead \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {channel_access_token}' \
-d '{
    "chat": {
        "userId": "Uxxxxxxxxxxxxxxxxxx"
    }
}'

# HTTPリクエスト

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

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

# リクエストボディ

chat.userId

String

必須

対象のユーザーID。

# レスポンス

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

レスポンスの例

{}

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 無効なユーザーIDが指定されています。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// 無効なユーザーIDを指定した場合(400 Bad Request)
{
  "message": "The property, 'chat.chatId', in the request body is invalid (line: -, column: -)"
}

# LINE通知メッセージAPI

# LINE通知メッセージが送信される条件

以下の条件をすべて満たす場合に、ユーザーに対してメッセージが送信されます。

LINEアプリでのLINE通知メッセージの設定について詳しくは、『LINEみんなの使い方ガイド』の「LINE通知メッセージを受信する方法 (opens new window)」を参照してください。

# LINE通知メッセージを送る

ユーザーの電話番号を指定してLINE通知メッセージを送るAPIです。

リクエスト元IPアドレスの制限について

LINE通知メッセージを送る場合、Messaging APIチャネルの[セキュリティ設定]タブで、LINEプラットフォームのAPIを呼び出せるサーバーのIPアドレスを登録しないでください。リクエスト元のIPアドレスを制限した状態でLINE通知メッセージを送ると、送信に失敗することがあります。設定方法について詳しくは、「長期のチャネルアクセストークン利用時にAPIの呼び出し元を制限する(任意)」を参照してください。

リクエストの例

curl -v -X POST https://api.line.me/bot/pnp/push \
-H 'Authorization: Bearer {channel_access_token}' \
-H 'Content-Type:application/json' \
-d '{
    "to": "{hashed_phone_number}",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

#リクエストの例(X-Line-Delivery-Tagあり)
curl -v -X POST https://api.line.me/bot/pnp/push \
-H 'Authorization: Bearer {channel_access_token}' \
-H 'Content-Type:application/json' \
-H 'X-Line-Delivery-Tag:{delivery_tag}' \
-d '{
    "to": "{hashed_phone_number}",
    "messages":[
        {
            "type":"text",
            "text":"Hello, world1"
        },
        {
            "type":"text",
            "text":"Hello, world2"
        }
    ]
}'

# HTTPリクエスト

POST https://api.line.me/bot/pnp/push

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

サポートしていない機能

LINE通知メッセージAPIでは、リトライキーX-Line-Retry-Key)を使ったAPIリクエストの再試行はできません。

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

X-Line-Delivery-Tag

任意

Webhookを介して、配信完了イベントdelivery.dataプロパティで返される文字列。詳しくは、「メッセージの送信通知を受信する」を参照してください。
最小文字数:16
最大文字数:100

X-Line-Delivery-Tagの例

15034552939884E28681A7D668CEA94C147C716C0EC9DFE8B80B44EF3B57F6BD0602366BC3menu01

# リクエストボディ

to

必須

メッセージの送信先。E.164形式に正規化しSHA256でハッシュ化した電話番号を指定してください。

メッセージの送信条件について詳しくは、「LINE通知メッセージが送信される条件」を参照してください。

注意

messages

送信するメッセージ。最大件数:5

詳しくは、「LINE通知メッセージAPIで送信可能なメッセージ」を参照してください。

# レスポンス

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

レスポンスの例

{}

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 リクエストに問題があります。次のような理由が考えられます。
  • メッセージの送信先が無効です。
  • 無効なメッセージオブジェクトが指定されています。
422 LINE通知メッセージの送信に失敗しました。以下のような理由が考えられます。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// メッセージの送信先が無効な場合(400 Bad Request)
{
  "message": "The request body has 1 error(s)",
  "details": [
    {
      "message": "The value must be a valid SHA-256 digest.",
      "property": "to"
    }
  ]
}

// LINE通知メッセージの送信に失敗した場合(422 Unprocessable Entity)
{
  "message": "Failed to send messages"
}

# 送信済みのLINE通知メッセージの数を取得する

/bot/pnp/pushエンドポイントを使って送信された、LINE通知メッセージの数を取得します。

詳しくは、LINE通知メッセージドキュメントの「送信済みLINE通知メッセージの数を取得する」を参照してください。

リクエストの例

curl -v -X GET 'https://api.line.me/v2/bot/message/delivery/pnp?date=20211231' \
-H 'Authorization: Bearer {channel_access_token}'

# HTTPリクエスト

GET https://api.line.me/v2/bot/message/delivery/pnp

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

Authorization

必須

Bearer {channel access token}

# クエリパラメータ

date

必須

メッセージが送信された日付

  • フォーマット:yyyyMMdd(例:20211231
  • タイムゾーン:UTC+9

# レスポンス

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

status

String

集計処理の状態。以下のいずれかの値です。

  • ready:メッセージ数を取得できます。
  • unreadydateに指定した日付のメッセージ数の集計がまだ完了していません。しばらくしてからリクエストを再実行してください。通常、集計処理は翌日中に完了します。
  • out_of_servicedateに指定した日付が、集計システムの稼働開始日(2018年3月31日)より前です。

success

Number

含まれないことがあります

dateに指定した日付に、LINE通知メッセージAPIを使って送信されたメッセージの数。statusの値がreadyの場合にのみ、レスポンスに含まれます。

レスポンスの例

{
  "status": "ready",
  "success": 3
}

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 リクエストに問題があります。次のような理由が考えられます。
  • 無効な日付が指定されています。
  • 日付が指定されていません。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// 無効な日付を指定した場合(400 Bad Request)
{
  "message": "The value for the 'date' parameter is invalid"
}

# モジュール

モジュールチャネルをLINE公式アカウントにアタッチします。アタッチするためには、LINE公式アカウントの管理者に認可を要求し、認可コードを取得する必要があります。モジュールの認可フローについて詳しくは、『モジュールドキュメント』の「モジュールチャネルを連携(アタッチ)する」を参照してください。

このAPIを利用する際には、Authorizationヘッダーもしくはリクエストボディのどちらかを使って、モジュールチャネルのチャネルIDとチャネルシークレットを指定する必要があります。

リクエストの例

curl -v -X POST https://manager.line.biz/module/auth/v1/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=authorization_code' \
-d 'code=1234567890abcde' \
--data-urlencode 'redirect_uri=https://example.com/auth?key=value' \
-d 'code_verifier=ayjtZgTunh96nHCvgLEiXzqVQOOC0SwMRs39bh1l5dx' \
-d 'client_id=1234567890' \
-d 'client_secret=1234567890abcdefghij1234567890ab' \
-d 'region=JP' \
-d 'basic_search_id=@linedevelopers' \
-d 'scope=message%3Asend%20message%3Areceive' \
-d 'brand_type=premium'

POST https://manager.line.biz/module/auth/v1/token

Content-Type

必須

application/x-www-form-urlencoded

Authorization

任意

Basic {base64({Channel ID}:{Channel Secret})}

{base64({Channel ID}:{Channel Secret})}には、「モジュールチャネルのチャネルID」と「モジュールチャネルのチャネルシークレット」を:で連結し、Base64でエンコードした文字列を指定してください。モジュールチャネルのチャネルIDとチャネルシークレットは、LINE Developersコンソールで確認できます。

リクエストボディ内でclient_idおよびclient_secretを指定する代わりに、このヘッダを使ってモジュールチャネルのチャネルIDとチャネルシークレットを指定できます。

grant_type

String

必須

authorization_code

code

String

必須

LINEプラットフォームから渡された認可コードを指定します。

redirect_uri

String

必須

認証と認可のためのURLで指定したredirect_uriを指定します。

code_verifier

String

任意

認可コード横取り攻撃への対策としてOAuth 2.0の拡張仕様で定義されるPKCE(Proof Key for Code Exchange)を利用した場合に指定します。

RFC 7636 (opens new window)に準拠しています。

client_id

String

任意

Authorizationヘッダーを使用する代わりに、このパラメータを使ってモジュールチャネルのチャネルIDを指定できます。 モジュールチャネルのチャネルIDは、LINE Developersコンソールで確認できます。

client_secret

String

任意

Authorizationヘッダーを使用する代わりに、このパラメータを使ってモジュールチャネルのチャネルシークレットを指定できます。モジュールチャネルのチャネルシークレットは、LINE Developersコンソールで確認できます。

region

String

任意

認証と認可のためのURLregionに値を指定した場合、同じ値を指定してください。

basic_search_id

String

任意

認証と認可のためのURLでbasic_search_idに値を指定した場合、同じ値を指定してください。

scope

String

任意

認証と認可のためのURLでscopeに値を指定した場合、同じ値を指定してください。

brand_type

String

任意

認証と認可のためのURLでbrand_typeに値を指定した場合、同じ値を指定してください。

成功時は、ステータスコード200と以下の情報を含むJSONオブジェクトを返します。

bot_id

String

LINE公式アカウントのボットのユーザーID。

ボットのユーザーIDは、Messaging APIAcquire Control APIを呼び出す際に利用します。

注意

ボットのユーザーIDは、LINE Developersコンソールで、Messaging APIチャネルの[チャネル基本設定]タブに表示される[あなたのユーザーID]ではありません。

scope

String

LINE公式アカウントの管理者によって許可された権限(スコープ)。

レスポンスの例

{
	"bot_id": "U45c5c51f0050ef0f0ee7261d57fd3c56",
	"scopes": [
		"message:send",
		"message:receive"
	]
}

以下のHTTPステータスコードを返します。

  • 400 Bad Request
  • 403 Forbidden

LINE公式アカウントからモジュールチャネルをデタッチします。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/channel/detach \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {channel access token}' \
-d '{"botId":"U45c5c51f0050ef0f0ee7261d57fd3c56"}'

POST https://api.line.me/v2/bot/channel/detach

2,000リクエスト/秒

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

{channel access token}には、モジュールチャネルのチャネルアクセストークンを指定してください。

botId

String

必須

モジュールチャネルにアタッチされたLINE公式アカウントのボットのユーザーID。

ボットのユーザーIDは、「モジュールチャネルの提供者の操作で連携(アタッチ)する」のレスポンスやAttachedイベントで取得できます。

成功時は、ステータスコード200を返します。

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 モジュールチャネルを連携解除(デタッチ)できませんでした。次のような理由が考えられます。
  • 無効なボットのユーザーIDが指定されている。
  • 存在しないボットが指定されている。
  • モジュールチャネルが連携(アタッチ)されていない。
  • モジュールチャネルではないチャネルのチャネルアクセストークンが指定されている。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// 無効なボットのユーザーIDを指定した場合(400 Bad Request)
{
  "message": "user/group/room Id is not available."
}

// モジュールチャネルが連携(アタッチ)されていない場合(400 Bad Request)
{
  "message": "Specified channel is not detachable"
}

# Acquire Control API

Standby Channelが主導権(Chat Control)を取得する場合は、Acquire Control APIを呼び出します。

それまでActive Channelだったチャネルは、自動的にStandby Channelに切り替わります。

警告

現在提供しているモジュールの仕組みにおいては、本APIを呼び出す必要はありません。そのため本APIの実装は任意となります。

本APIは現状、想定外の問題等によりチャットの主導権が切り替わった際にのみ利用します。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/chat/{chatId}/control/acquire \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {channel access token}' \
-H 'ボットのユーザーIDを指定するヘッダー:xxxxxx' \
-d '{"expired":true,"ttl":3600}'

# HTTPリクエスト

POST https://api.line.me/v2/bot/chat/{chatId}/control/acquire

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

{channel access token}には、モジュールチャネルのチャネルアクセストークンを指定してください。

ボットのユーザーIDを指定するヘッダー

必須

モジュールチャネルにアタッチされたLINE公式アカウントのボットのユーザーID。

ボットのユーザーIDは、「モジュールチャネルの提供者の操作で連携(アタッチ)する」のレスポンスやAttachedイベントで取得できます。

ヘッダーの詳細については参画される際に別途提供いたします

本ヘッダーの名前(パラメーター名)は、実際にLINEマーケットプレイス (opens new window)に参画するお客様に限定して公開しています。

# パスパラメータ

chatId

必須

userIdroomId、またはgroupId

# リクエストボディ

expired

Boolean

任意
  • True:制限時間(ttl)を経過すると、主導権(Chat Control)がPrimary Channelに戻ります。(デフォルト)
  • False:制限時間がなく、主導権(Chat Control)は時間経過では変わりません。

ttl

Number

任意

主導権(Chat Control)がPrimary Channelに戻るまでの時間(モジュールチャネルがActive Channelでいられる時間)。秒で指定します。最大値は1年間(3600 * 24 * 365)。デフォルト値は3600(1時間)です。

expiredの値がfalseの場合は、無視されます。

# レスポンス

成功時は、ステータスコード200を返します。

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 chatIdパラメータに、不正なIDが指定されています。
404 主導権(Chat Control)を取得できませんでした。次のような理由が考えられます。
  • モジュールと連携しているLINE公式アカウントを友だち追加していないユーザーが指定されている。
  • モジュールと連携しているLINE公式アカウントが参加していないグループが指定されている。
  • モジュールと連携しているLINE公式アカウントが参加していない複数人トークが指定されている。
423 別のチャネルが、一定期間内(数秒程度)に主導権(Chat Control)を取得していた場合。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// chatIdパラメータに不正なIDを指定した場合(400 Bad Request)
{
  "message": "The value for the 'chatId' parameter is invalid"
}

# Release Control API

Active Channelが持っている主導権(Chat Control)を、Primary Channelに返却する場合は、Release Control APIを呼び出します。

警告

現在提供しているモジュールの仕組みにおいては、本APIを呼び出す必要はありません。そのため本APIの実装は任意となります。

本APIは現状、想定外の問題等によりチャットの主導権が切り替わった際にのみ利用します。

リクエストの例

curl -v -X POST https://api.line.me/v2/bot/chat/{chatId}/control/release \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer {channel access token}' \
-H 'ボットのユーザーIDを指定するヘッダー:xxxxxx'

# HTTPリクエスト

POST https://api.line.me/v2/bot/chat/{chatId}/control/release

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

Content-Type

必須

application/json

Authorization

必須

Bearer {channel access token}

{channel access token}には、モジュールチャネルのチャネルアクセストークンを指定してください。

ボットのユーザーIDを指定するヘッダー

必須

モジュールチャネルにアタッチされたLINE公式アカウントのボットのユーザーID。

ボットのユーザーIDは、「モジュールチャネルの提供者の操作で連携(アタッチ)する」のレスポンスやAttachedイベントで取得できます。

ヘッダーの詳細については参画される際に別途提供いたします

本ヘッダーの名前(パラメーター名)は、実際にLINEマーケットプレイス (opens new window)に参画するお客様に限定して公開しています。

# パスパラメータ

chatId

必須

userIdroomId、またはgroupId

# レスポンス

成功時は、ステータスコード200を返します。

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 chatIdパラメータに、不正なIDが指定されています。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// chatIdパラメータに不正なIDを指定した場合(400 Bad Request)
{
  "message": "The value for the 'chatId' parameter is invalid"
}

# モジュールチャネル専用のWebhookイベントオブジェクト

# Attachedイベント

モジュールチャネルが、LINE公式アカウントにアタッチされたことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

timestampなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

module

module.type

String

attached

module.botId

String

アタッチされたLINE公式アカウントのボットのユーザーID

module.scopes

Array of strings

LINE公式アカウントの管理者によって許可されたスコープを示す文字列の配列です。

Attachedイベントの例

{
  "destination": "U53387d54817...",
  "events": [
    {
      "type": "module",
      "module": {
        "type": "attached",
        "botId": "U53387d54817...",
        "scopes": [
          "message:send",
          "message:receive"
        ]
      },
      "webhookEventId": "01G3GCEEXNWREGSSFVTPYH8465",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1653038594997,
      "mode": "active"
    }
  ]
}

# Detachedイベント

モジュールチャネルが、LINE公式アカウントからデタッチされたことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

LINE公式アカウントを削除する操作をしたときにはDetachされません

LINE Official Account ManagerでLINE公式アカウントを削除する操作をしたときは、モジュールチャネルはデタッチされません。

削除する操作をしてから3か月が経過し、LINE公式アカウントの分析データを含むすべての情報が完全に削除されると、自動的にデタッチされます。

timestampなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

module

module.type

String

detached

module.botId

String

連携解除されたLINE公式アカウントのボットのユーザーID

module.reason

String

連携解除された理由

bot_deleted:LINE公式アカウントの分析データを含むすべての情報が完全に削除されました。

Detachedイベントの例

{
  "destination": "U5fac33f633e72c192759f09afc41fa28",
  "events": [
    {
      "type": "module",
      "module": {
        "type": "detached",
        "botId": "U5fac33f633e72c192759f09afc41fa28"
      },
      "webhookEventId": "01G4CPSV08QGNT1DWFC4DSWDNP",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1653988977672,
      "mode": "active"
    }
  ]
}

# Activatedイベント

Acquire Control APIを呼び出して、モジュールチャネルがActive Channelに切り替わったことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

注意

Acquire Control APIで指定した有効期間が過ぎて、主導権(Chat Control)が切り替わった場合は、Activatedイベントは送信されません。

timestamp、sourceなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

activated

chatControl.expireAt

Number

“active”が維持される期限。

Activatedイベントの例

	{
  "destination": "U5fac33f633e72c192759f09afc41fa28",
  "events": [
    {
      "type": "activated",
      "chatControl": {
        "expireAt": 1653994422933
      },
      "webhookEventId": "01G4CRJ54J7TT4WN190KKHBXXT",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1653990823058,
      "source": {
        "type": "user",
        "userId": "LUb577ef3cbe..."
      },
      "mode": "active"
    }
  ]
}

# Deactivatedイベント

Acquire Control APIまたはRelease Control APIを呼び出して、モジュールチャネルがStandby Channelに切り替わったことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

注意

Acquire Control APIで指定した有効期間が過ぎて、主導権(Chat Control)が切り替わった場合は、Deactivatedイベントは送信されません。

timestamp、sourceなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

deactivated

Deactivatedイベントの例

{
  "destination": "U5fac33f633e72c192759f09afc41fa28",
  "events": [
    {
      "type": "deactivated",
      "webhookEventId": "01G4CRJ51100K1D1791KC9J4G4",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1653990822945,
      "source": {
        "type": "user",
        "userId": "LUb577ef3cbe..."
      },
      "mode": "active"
    }
  ]
}

# botSuspendイベント

LINE公式アカウントが一時停止状態(Suspend)になったことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

このイベントを受信したときは、以下のような処理を行うことを推奨します。

  • モジュールチャネルの管理画面に「LINE公式アカウントが利用できない状態になっているため、この管理画面は利用できません」といったメッセージを表示し、管理画面の利用を停止する。
  • いったん一時停止状態になっても、一時停止状態から復帰する可能性(botResumeイベントを受信する可能性)があります。すべての情報を保持しておくことを推奨します。
注意

Primary ChannelにはbotSuspendイベントは送信されません。

botSuspendイベントを受信したあとでDetachedイベントを受信した場合は、LINE公式アカウントがモジュールチャネルの利用を停止し、契約を解除したことを示します。

timestampなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

botSuspended

botSuspendイベントの例

{
  "destination": "U53387d548170020e6cedef5f41d1e01d",
  "events": [
    {
      "type": "botSuspended",
      "webhookEventId": "01G4CRJ54J7TT4WN190KKHBXXT",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1616390574119,
      "mode": "active"
    }
  ]
}

# botResumedイベント

LINE公式アカウントが一時停止状態から復帰したことを示すイベントです。モジュールチャネルのWebhook URLサーバーに送信されます。

このイベントを受信したときは、モジュールチャネルの管理画面で「LINE公式アカウントが利用できない状態になっているため、この管理画面は利用できません」といったメッセージを非表示にし、管理画面の利用を再開することを推奨します。

注意

Primary ChannelにはbotResumedイベントは送信されません。

timestampなど

共通プロパティ」を参照してください。

ただし、modeactive固定です。

type

String

botResumed

botResumedイベントの例

{
  "destination": "U5fac33f633e72c192759f09afc41fa28",
  "events": [
    {
      "type": "botResumed",
      "webhookEventId": "01G4CS8T91R1V1JCE0G43DQND8",
      "deliveryContext": {
        "isRedelivery": false
      },
      "timestamp": 1653991565601,
      "mode": "active"
    }
  ]
}

# モジュールをアタッチしたボットのリストを取得する

モジュールチャネルをアタッチした、複数のLINE公式アカウントのボットの基本情報をリストで取得します。

リクエストの例

curl -v -X GET "https://api.line.me/v2/bot/list?limit={limit}&start={continuationToken}" \
-H 'Authorization: Bearer {channel access token}'

# HTTPリクエスト

GET https://api.line.me/v2/bot/list?limit={limit}&start={continuationToken}

# レート制限

2,000リクエスト/秒

# リクエストヘッダー

Authorization

必須

Bearer {channel access token}

{channel access token}には、モジュールチャネルのチャネルアクセストークンを指定してください。

# クエリパラメータ

limit

任意

基本情報を取得するボットの最大個数を指定します。デフォルト値は100です。
最大値:100

start

任意

継続トークンの値。レスポンスで返されるJSONオブジェクトのnextプロパティに含まれます。1回のリクエストでボットの基本情報をすべて取得できない場合は、このパラメータを指定して残りの配列を取得します。

# レスポンス

成功時は、ステータスコード200と以下の情報を含むJSONオブジェクトを返します。

bots

Array

ボットの基本情報を表すBot list Item objectの配列。

bots[].userId

String

ボットのユーザーID

bots[].basicId

String

ボットのベーシックID

bots[].premiumId

String

含まれないことがあります

ボットのプレミアムID。プレミアムIDが未設定の場合、この値は含まれません。

bots[].displayName

String

ボットの表示名

bots[].pictureUrl

String

含まれないことがあります

プロフィール画像のURL。「https://」から始まる画像URLです。ボットにプロフィール画像を設定していない場合は、レスポンスに含まれません。

next

String

含まれないことがあります

継続トークン。ボットの基本情報の、次の配列を取得するために使用します。このプロパティは、取得しきれなかったボットの基本情報が存在する場合にのみ返されます。

継続トークンの有効期間は24時間(86,400秒間)です。

レスポンスの例

{
  "bots": [
    {
      "userId": "Uf2dd6e8b081d2ff9c05c98a8a8b269c9",
      "basicId": "@628...",
      "displayName": "Test01",
      "pictureUrl": "https://profile.line-scdn.net/0hyxytJNAlJldEDQzlatVZAHhIKDoz..."
    },
    {
      "userId": "Ua831d37bfe8232808202b85127663f70",
      "basicId": "@076lu...",
      "displayName": "Test02",
      "pictureUrl": "https://profile.line-scdn.net/0hohnizdyzMEdTECbnVo9PEG9VPiok..."
    },
    {
      "userId": "Ub77ea431fba86f7c159a0c0f5be43d9f",
      "basicId": "@290n...",
      "displayName": "Test03"
    },
    {
      "userId": "Ub8ec80a14e879e9c6833fb4cee0e632b",
      "basicId": "@793j...",
      "displayName": "Test04"
    }
  ]
}

# エラーレスポンス

以下のHTTPステータスコードと、エラーレスポンスを返します。

コード 説明
400 無効な継続トークンが指定されています。

詳しくは、『Messaging APIリファレンス』の「ステータスコード」および「エラーレスポンス」を参照してください。

エラーレスポンスの例

// 有効期限切れなどの無効な継続トークンを指定した場合(400 Bad Request)
{
  "message": "Invalid start param"
}

# クイック入力

クイック入力とは、LINEミニアプリ上で[自動入力]をタップすることで、必要なプロフィール情報が自動で入力される機能です。ユーザーがアカウントセンターで設定した共通プロフィールの情報が、LINEミニアプリで簡単に利用できます。詳しくは、「クイック入力の概要」を参照してください。

# liff.$commonProfile.get()

ユーザーがアカウントセンターで設定している共通プロフィールの情報を取得します。

liff.$commonProfile.get()メソッドを実行すると、ユーザーがプロフィールの情報を確認するためのモーダルが表示されます。表示されたモーダルでプロフィールを確認後、ユーザーが[自動で入力する]をタップすると、共通プロフィールの情報を取得できます。

モーダルの表示例:

const profile = await liff.$commonProfile.get([
  "family-name",
  "given-name",
  "email",
  "tel",
]);
console.log(profile);

# 構文

liff.$commonProfile.get(scopes);

# 引数

scopes

Array of strings

必須

取得したい共通プロフィールのスコープを指定します。

scopesに指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。

# 戻り値

Partial<CommonProfile>型のPromiseオブジェクトが返されます。

Promiseがresolveされると、ユーザーの共通プロフィール情報を含むPartial<CommonProfile>型のオブジェクトが渡されます。

次のような場合、プロパティはundefinedもしくはnullになります。

  • undefinedになるケース
    • 引数のscopesで対象の項目を指定していない場合
    • 引数のscopesで対象の項目を指定したが、ユーザーがその項目の権限を許可していない場合
  • nullになるケース
    • ユーザーが共通プロフィールで対象の項目に値を設定していない場合
    • 共通プロフィールで対象の項目を取得する時にエラーが発生した場合

指定したスコープに応じて取得できるプロパティの値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。

{
  "family-name": "山田",
  "given-name": "太郎",
  "email": "sample@example.com",
  "tel": "09001234567"
}

# エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

プラグインを正しくインストールせずにAPIを呼んだ場合の例

new Error(
  "LiffCommonProfilePlugin isn't installed properly. Did you call liff.use(new LiffCommonProfilePlugin()) before using it?"
);

LIFFブラウザ以外でAPIが呼ばれた場合の例

new Error("liff.$commonProfile API is available only in LIFF browser.");

# liff.$commonProfile.getDummy()

共通プロフィールのダミーデータを取得します。10種類のダミーデータが用意されており、caseIdによって取得するダミーデータを指定できます。

liff.$commonProfile.getDummy()メソッドを実行すると、プロフィールの情報を確認するためのモーダルが表示されます。[自動で入力する]をタップすると、共通プロフィールのダミーデータを取得できます。

モーダルの表示例:

const profile = await liff.$commonProfile.getDummy(
  ["family-name", "given-name", "email", "tel"],
  1
);
console.log(profile);

# 構文

liff.$commonProfile.getDummy(scopes, caseId);

# 引数

scopes

Array of strings

必須

取得したい共通プロフィールのスコープを指定します。

scopesに指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。

caseId

number

必須

取得したいダミーデータのIDを指定します。IDが1から10までのダミーデータが用意されています。

caseIdごとのダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。

# 戻り値

Partial<CommonProfile>型のPromiseオブジェクトが返されます。

Promiseがresolveされると、共通プロフィールのダミーデータを含むPartial<CommonProfile>型のオブジェクトが渡されます。

次のような場合、プロパティはundefinedもしくはnullになります。

  • undefinedになるケース
    • 引数のscopesで対象の項目を指定していない場合
  • nullになるケース
    • ダミーデータで対象の項目に値が設定されていない場合

指定したIDに応じて取得できるダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。

{
  "family-name": "見本田",
  "given-name": "見本夫",
  "family-name-kana": "ダミータ",
  "given-name-kana": "ダミーオ",
  "sex-enum": 0,
  "bday-day": 12,
  "bday-month": 3,
  "bday-year": 1998,
  "tel": "09001234567",
  "email": "dummy_39@yahoo.co.jp",
  "postal-code": "1020094",
  "address-level1": "東京都",
  "address-level2": "千代田区",
  "address-level3": "紀尾井町1-2",
  "address-level4": "東京ガーデンテラス紀尾井町"
}
# エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

プラグインを正しくインストールせずにAPIを呼んだ場合の例

new Error(
  "LiffCommonProfilePlugin isn't installed properly. Did you call liff.use(new LiffCommonProfilePlugin()) before using it?"
);

LIFFブラウザ以外でAPIが呼ばれた場合の例

new Error("liff.$commonProfile API is available only in LIFF browser.");

# liff.$commonProfile.fill()

取得した共通プロフィールの情報をフォームに自動入力します。それぞれのプロフィール情報とフォームの紐づけには、data-liff-autocomplete属性を用います。

スコープと一致しないフォームへの自動入力

liff.$commonProfile.fill()による自動入力は、フォームのdata-liff-autocomplete属性を用いて行います。このとき、フォームのdata-liff-autocomplete属性に指定する値は、取得したプロフィール情報のスコープ(family-nametelbday-yearなど)と一致している必要があります。

たとえば、誕生年(bday-year)、誕生月(bday-month)、誕生日(bday-day)の情報をそれぞれ取得した後、20110623のような形式に加工した上でフォームに自動入力させたい場合は、liff.$commonProfile.fill()の代わりに、document.getElementById().valuedocument.querySelector().valueを用いることができます。

取得した姓、電話番号、性別をそのまま自動入力する例

// HTML
<input type="text" data-liff-autocomplete="family-name" />
<input type="tel" data-liff-autocomplete="tel" />
<select data-liff-autocomplete="sex-enum">
  <option value="0">男性</option>
  <option value="1">女性</option>
  <option value="2">その他</option>
  <option value="3">無回答</option>
</select>

// JavaScript
const profile = await liff.$commonProfile.get([
  "family-name",
  "tel",
  "sex-enum",
]);

liff.$commonProfile.fill(profile);

取得した共通プロフィール情報の形式を一部変更して自動入力する場合

// HTML
<input type="text" data-liff-autocomplete="bday-year" />
<input type="text" data-liff-autocomplete="bday-month" />
<input type="text" data-liff-autocomplete="bday-day" />

// JavaScript
const profile = await liff.$commonProfile.get([
  "bday-year",
  "bday-month",
  "bday-day",
]);

const year = profile["bday-year"];
const month = profile["bday-month"];
const day = profile["bday-day"];

// 月と日が1桁の場合、2桁になるように0埋めする
const formattedMonth = month.toString().padStart(2, '0');
const formattedDay = day.toString().padStart(2, '0');

// 加工後の値を自動入力
liff.$commonProfile.fill({
  "bday-year": year,
  "bday-month": formattedMonth,
  "bday-day": formattedDay,
});

# 構文

liff.$commonProfile.fill(profile);

# 引数

profile

Partial<CommonProfile>

必須

フォームに自動入力させるプロフィール情報を、Partial<CommonProfile>型で指定します。

指定できるスコープについては、「取得できる共通プロフィールのスコープと戻り値」を参照してください。

# 戻り値

なし