# LINEミニアプリ APIリファレンス
# サービスメッセージ
この機能は、認証済ミニアプリでのみ利用できます。未認証ミニアプリの場合、開発用の内部チャネルではテストできますが、公開用の内部チャネルでは利用できません。
サービスメッセージAPIを使用すると、サービスからLINEミニアプリのユーザーに、サービスメッセージを送信できます。
サービスメッセージを送信するには、サービス通知トークンとテンプレートが必要です。
# サービス通知トークンを発行する
サービス通知トークンを発行します。サービス通知トークンを使用すると、紐づけられたユーザーに対してサービスメッセージを送信できます。
サービス通知トークンの特徴は以下のとおりです。
- サービス通知トークンは、発行から1年間(31,536,000秒間)有効です。有効期限が切れるまでに、最大5回サービスメッセージを送信できます。
- サービス通知トークンを使用すると、有効期限が切れておらず、残りの送信可能回数が0でない場合は、サービス通知トークンの値が更新されます。ユーザーに対して、後続のサービスメッセージを送信する場合は、更新後のサービス通知トークンを保存してください。
liff.getAccessToken()
で取得したアクセストークン(LIFFのアクセストークン)を再利用して、複数のサービス通知トークンを発行することは許可されていません。
LIFFのアクセストークン1つにつき、発行できるサービス通知トークンは1つだけです。
サービス通知トークンは、一人のユーザーに紐づいています。あるユーザーに紐づいたサービス通知トークンを利用して、ほかのユーザーにサービスメッセージを送信することはできません。
# HTTPリクエスト
POST https://api.line.me/message/v3/notifier/token
# リクエストヘッダー
Content-Type
application/json
Authorization
Bearer {channel access token}
詳しくは、「チャネルアクセストークン」を参照してください。
LINEミニアプリチャネルでは、長期のチャネルアクセストークンおよび、任意の有効期間を指定できるチャネルアクセストークン(チャネルアクセストークンv2.1)は使用できません。
LINEミニアプリの開発では、ステートレスチャネルアクセストークンまたは短期のチャネルアクセストークンを使用できます。このうち、ステートレスチャネルアクセストークンの使用を推奨します。ステートレスチャネルアクセストークンは、発行数に制限がないため、アプリケーション側でトークンのライフサイクルを管理する必要がありません。
# リクエストボディ
liffAccessToken
String
liff.getAccessToken()
で取得したアクセストークン(LIFFのアクセストークン)
# レスポンス
ステータスコード200
と以下の情報を含むJSONオブジェクトを返します。
notificationToken
String
サービス通知トークン
expiresIn
Number
サービス通知トークンの有効期限が切れるまでの秒数。サービス通知トークンは、発行から1年間(31,536,000秒間)有効です。
remainingCount
Number
発行されたサービス通知トークンで、サービスメッセージを送信できる回数
sessionId
String
セッションID。詳しくは、「サービスメッセージを送信する」を参照してください。
# エラーレスポンス
以下のいずれかのステータスコードとエラーメッセージを返します。
ステータスコード | 説明 |
---|---|
400 Bad request | 以下のいずれかです。
|
401 Unauthorized | 以下のいずれか、または両方です。
|
403 Forbidden | このチャネルには、サービス通知トークンを発行する許可が与えられていません。 |
500 Internal Server Error | 内部サーバーのエラーです。 |
# サービスメッセージを送る
サービス通知トークンで指定されたユーザーに、サービスメッセージを送信します。
サービスメッセージを送信すると、有効期限が切れておらず、残りの送信可能回数が0でない場合は、サービス通知トークンの値が更新されます。ユーザーに対して、後続のサービスメッセージを送信する予定がある場合は、更新後のサービス通知トークンを保存してください。
# HTTPリクエスト
POST https://api.line.me/message/v3/notifier/send
# リクエストヘッダー
Content-Type
application/json
Authorization
Bearer {channel access token}
詳しくは、『LINEプラットフォームの基礎知識』の「チャネルアクセストークン」を参照してください。
LINEミニアプリチャネルでは、長期のチャネルアクセストークンおよび、任意の有効期間を指定できるチャネルアクセストークン(チャネルアクセストークンv2.1)は使用できません。
LINEミニアプリの開発では、ステートレスチャネルアクセストークンまたは短期のチャネルアクセストークンを使用できます。このうち、ステートレスチャネルアクセストークンの使用を推奨します。ステートレスチャネルアクセストークンは、発行数に制限がないため、アプリケーション側でトークンのライフサイクルを管理する必要がありません。
# クエリパラメータ
target
service
# リクエストボディ
templateName
String
サービスメッセージに使用する、事前登録済みテンプレートの名前。BCP 47言語タグを末尾に追加してください。
フォーマット:{template name}_{BCP 47 language tag}
最大文字数:30
サービスメッセージでサポートしている言語と言語タグは、以下のとおりです。
- アラビア語:
ar
- 中国語(簡体字):
zh-CN
- 中国語(繁体字):
zh-TW
- 英語:
en
- フランス語:
fr
- ドイツ語:
de
- インドネシア語:
id
- イタリア語:
it
- 日本語:
ja
- 韓国語:
ko
- マレー語:
ms
- ポルトガル語(ブラジル):
pt-BR
- ポルトガル語(ポルトガル):
pt-PT
- ロシア語:
ru
- スペイン語(スペイン):
es-ES
- タイ語:
th
- トルコ語:
tr
- ベトナム語:
vi
params
object
テンプレート変数と値のペアを指定するJSONオブジェクト。
テンプレートにテンプレート変数がない場合は、空のJSONオブジェクト({ }
)を指定します。
テンプレート変数は、テンプレートごとに定義されています。必須の要素にテンプレート変数が含まれる場合は、必ずテンプレート変数と値のペアを指定してください。
詳しくは、「サービスメッセージのテンプレートを追加する」を参照してください。
notificationToken
String
サービス通知トークン
# レスポンス
ステータスコード200
と以下の情報を含むJSONオブジェクトを返します。
notificationToken
String
更新後のサービス通知トークン。このサービス通知トークンを使用して、後続のサービスメッセージを送信します。
expiresIn
Number
更新後のサービス通知トークンの有効期限が切れるまでの秒数
remainingCount
Number
更新後のサービス通知トークンで、後続のサービスメッセージを送信できる回数
sessionId
String
セッションID。詳しくは、「サービスメッセージを送信する」を参照してください。
expiresIn
およびremainingCount
の値が0
の場合は、サービスメッセージは送信されたが、サービス通知トークンが更新できなかったことを示します。
# エラーレスポンス
以下のいずれかのステータスコードとエラーメッセージを返します。
ステータスコード | 説明 |
---|---|
400 Bad request | 以下のいずれかです。
|
401 Unauthorized | 以下のいずれか、または両方です。
|
403 Forbidden | 以下のいずれかです。
|
500 Internal Server Error | 内部サーバーのエラーです。 |
# 共通プロフィールのクイック入力
共通プロフィールのクイック入力を利用するには、LINEミニアプリが認証済みであり、かつ利用申請が完了している必要があります。
クイック入力とは、LINEミニアプリ上で[自動入力]をタップすることで、必要なプロフィール情報が自動で入力される機能です。ユーザーがアカウントセンターで設定した共通プロフィールの情報が、LINEミニアプリで簡単に利用できます。詳しくは、「共通プロフィールのクイック入力の概要」を参照してください。
# liff.$commonProfile.get()
ユーザーがアカウントセンターで設定している共通プロフィールの情報を取得します。
liff.$commonProfile.get()
メソッドを実行すると、ユーザーがプロフィールの情報を確認するためのモーダルが表示されます。表示されたモーダルでプロフィールを確認後、ユーザーが[自動で入力する]をタップすると、共通プロフィールの情報を取得できます。
モーダルの表示例:
# 構文
liff.$commonProfile.get(scopes, options);
# 引数
scopes
Array of strings
取得したい共通プロフィールのスコープを指定します。
scopes
に指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
options
Object
共通プロフィールの情報を取得するときのオプション
options.formatOptions
Object
情報の形式に関するオプション。scopes
プロパティで指定した各スコープに対して、formatOptions
オブジェクトを指定します。
キーには、オプションを設定したいスコープをキャメルケース形式で指定します。たとえば、スコープがgiven-name
のとき、キーはgivenName
になります。
# formatOptions
オブジェクト
excludeEmojis
Boolean
文字列内の絵文字を削除するかどうか。デフォルトはtrue
です。以下のスコープにのみ指定できます。
- givenName
- familyName
excludeNonJp
Boolean
12桁以上の電話番号を排除するかどうか。デフォルトはtrue
です。true
の場合、電話番号が12桁以上のときは、空文字とエラー情報を返します。以下のスコープにのみ指定できます。
- tel
digitsOnly
Boolean
数字以外の郵便番号を排除するかどうか。デフォルトはtrue
です。true
の場合、郵便番号に数字以外が含まれているときは、空文字とエラー情報を返します。以下のスコープにのみ指定できます。
- postalCode
# 戻り値
{ data: Partial<CommonProfile>, error: Partial<CommonProfileError>}
型のPromise
オブジェクトが返されます。
Promise
がresolveされると、data
プロパティにユーザーの共通プロフィール情報を含むPartial<CommonProfile>
型、error
プロパティにエラー情報を含むPartial<CommonProfileError>
型のオブジェクトが渡されます。
次のような場合、data
が持つプロパティはundefined
もしくはnull
になります。
undefined
になるケース- 引数の
scopes
で対象の項目を指定していない場合 - 引数の
scopes
で対象の項目を指定したが、ユーザーがその項目の権限を許可していない場合
- 引数の
null
になるケース- ユーザーが共通プロフィールで対象の項目に値を設定していない場合
- 共通プロフィールで対象の項目を取得する時にエラーが発生した場合
指定したスコープに応じて取得できるプロパティの値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
# エラーレスポンス
Promise
がrejectされたときは、LiffError
が渡されます。
# liff.$commonProfile.getDummy()
共通プロフィールのダミーデータを取得します。10種類のダミーデータが用意されており、caseId
によって取得するダミーデータを指定できます。
liff.$commonProfile.getDummy()
メソッドを実行すると、プロフィールの情報を確認するためのモーダルが表示されます。[自動で入力する]をタップすると、共通プロフィールのダミーデータを取得できます。
モーダルの表示例:
# 構文
liff.$commonProfile.getDummy(scopes, options, caseId);
# 引数
scopes
Array of strings
取得したい共通プロフィールのスコープを指定します。
scopes
に指定できる値については、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
options
Object
共通プロフィールの情報を取得するときのオプション
options.formatOptions
Object
情報の形式に関するオプション。scopes
プロパティで指定した各スコープに対して、formatOptions
オブジェクトを指定します。
キーには、オプションを設定したいスコープをキャメルケース形式で指定します。たとえば、スコープがgiven-name
のとき、キーはgivenName
になります。
caseId
number
取得したいダミーデータのIDを指定します。IDが1
から10
までのダミーデータが用意されています。
caseId
ごとのダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。
# 戻り値
{ data: Partial<CommonProfile>, error: Partial<CommonProfileError>}
型のPromise
オブジェクトが返されます。
Promise
がresolveされると、data
プロパティにダミーデータを含むPartial<CommonProfile>
型、error
プロパティにエラー情報を含むPartial<CommonProfileError>
型のオブジェクトが渡されます。
次のような場合、data
が持つプロパティはundefined
もしくはnull
になります。
undefined
になるケース- 引数の
scopes
で対象の項目を指定していない場合
- 引数の
null
になるケース- ダミーデータで対象の項目に値が設定されていない場合
指定したIDに応じて取得できるダミーデータについては、「取得できる共通プロフィールのダミーデータ」を参照してください。
# エラーレスポンス
Promise
がrejectされたときは、LiffError
が渡されます。
# liff.$commonProfile.fill()
取得した共通プロフィールの情報をフォームに自動入力します。それぞれのプロフィール情報とフォームの紐づけには、data-liff-autocomplete
属性を用います。
liff.$commonProfile.fill()
による自動入力は、フォームのdata-liff-autocomplete
属性を用いて行います。このとき、フォームのdata-liff-autocomplete
属性に指定する値は、取得したプロフィール情報のスコープ(family-name
、tel
、bday-year
など)と一致している必要があります。
たとえば、誕生年(bday-year
)、誕生月(bday-month
)、誕生日(bday-day
)の情報をそれぞれ取得した後、20110623
のような形式に加工した上でフォームに自動入力させたい場合は、liff.$commonProfile.fill()
の代わりに、document.getElementById().value
やdocument.querySelector().value
を用いることができます。
# 構文
liff.$commonProfile.fill(profile);
# 引数
profile
Partial<CommonProfile>
フォームに自動入力させるプロフィール情報を、Partial<CommonProfile>
型で指定します。
指定できるスコープについては、「取得できる共通プロフィールのスコープと戻り値」を参照してください。
# 戻り値
なし