# サービスメッセージを送信する
サービスメッセージは、LINEミニアプリ上でのユーザーの操作(アクション)に対する確認や応答として、ユーザーが知っておくべき情報をLINEミニアプリから通知する機能です。 たとえば、ユーザーがLINEミニアプリ上でレストランや宿泊施設を予約した場合、「予約」という1つの操作に対して、予約完了や前日のリマインドといったサービスメッセージを最大5回まで送信できます。
サービスメッセージは、LINEミニアプリ上でのユーザーの操作(アクション)に対する確認や応答としてのみ送信できます。 値下げ、ショッピング特典、新商品、割引クーポン、プロモーションなどの情報を含む広告やイベントの通知は禁止されています。 サービスメッセージの条件について詳しくは、「サービスメッセージの条件」を参照してください。
LINEミニアプリから送られたサービスメッセージは、LINEミニアプリの種類にかかわらず「Service Messages」のトークルームに表示されます。
# サービスメッセージを送信する際の流れ
サービスメッセージを送信するには、サービスメッセージテンプレートとサービス通知トークンが必要です。以下の手順に沿って、送信してください。
- LINE Developersコンソールで、LINEミニアプリチャネルにサービスメッセージのテンプレートを追加します。
- LINEミニアプリ上でのユーザーの操作(アクション)を元にサービス通知トークンを発行してサービスメッセージを送信します。
- 2で発行された新しいサービス通知トークンを利用して、リマインダーなど後続のサービスメッセージを送信します。
# サービスメッセージのテンプレートを追加する
LINEが提供しているテンプレートの中から、サービスメッセージで利用するテンプレートを選択して、LINEミニアプリチャネルに追加します。 サービスメッセージのテンプレートは、LINEミニアプリチャネルごとに20個まで追加できます。
LINEミニアプリでは、Service Message Catalog (opens new window)でカテゴリ別にテンプレートを提供しています。これらのテンプレートは、利用シーンを想定して作成しています。テンプレートはあらかじめフォーマットされていますが、ガイドラインに沿ってある程度カスタマイズすることで、サービスニーズに合ったものにすることができます。LINE Developersコンソールから自分のアカウントにテストメッセージを送信してプレビューを確認してください。
また、LINE Developersコンソールでも、テンプレートをカテゴリ別に提供しています。
LINEミニアプリチャネルに追加したサービスメッセージテンプレートをサービスメッセージのAPIで利用するには、LINEによる審査を通過する必要があります。
- LINE Developersコンソールで、テンプレートを追加するLINEミニアプリチャネルを選択し、[サービスメッセージテンプレート]タブをクリックします。
- チャネルを作成しながら、公式テンプレートの作成を進めることができます。
- チャネルの作成中は、次のことができます:
- 新しいテンプレートの追加
- すべてのテンプレートリストの参照
- テンプレート詳細の参照
- テンプレート
使用事例
の編集 - テンプレートの削除
- シミュレータ-でのテストメッセージ送信
- 審査が進行中の場合、公式テンプレートの使用にいくつかの制限が適用されます。
- チャネルの審査進行中でも次のことはできます:
- テンプレート詳細の参照
- シミュレーターでのテストメッセージ送信
- テンプレート詳細の参照
- しかしこの段階では、次のことはできません:
- すべてのテンプレートのリストの参照
- テンプレートの
使用事例
の編集 - テンプレートの削除
- チャネルが公開されたら、本番用チャネルで公式テンプレートを使用できます(#1の準備段階と同じ条件が適用されます)。
チャネルの審査中は、新しいテンプレートを追加できません。チャネルが審査を通過するまでは、シミュレーターで利用可能なテストメッセージのみ送信できます。 ただし、審査プロセスは、過去に正常に追加された既存のテンプレート(公式テンプレートとカスタムテンプレートの両方)には影響しません。
[追加]をクリックします。
以下の項目を設定します。
項目 説明 テンプレートを選択する サービスメッセージAPIで利用するテンプレートを選択します。 テンプレート詳細 選択したテンプレートの詳細が表示されます。サービスメッセージを送るAPIを実行するときに、[Template Name]に表示されている文字列( {template name}_{BCP 47 language tag}
)をtemplateName
に指定してください。プレビュー テストメッセージのプレビューが表示されます。テストメッセージは、[テストメッセージを送信する]の[送信する]をクリックすると、LINE DevelopersコンソールにログインしているLINEアカウントに送信されます。 テストメッセージを送信する テンプレート変数と値のペアを指定するJSONオブジェクトを入力します。入力した内容をもとに[プレビュー]が更新されます。 - [コピー]:JSONオブジェクトをクリップボードにコピーします。
- [Reset]:JSONオブジェクトの編集内容を破棄します。
- [送信する]:LINE DevelopersコンソールにログインしているLINEアカウントに、テストメッセージが送信されます。
使用事例 このテンプレートを送信する状況を正確に入力してください。 注意[使用事例]に入力した事例から逸脱した方法でテンプレートを使用した場合は、テンプレートの使用を停止する場合があります。
[追加]をクリックします。
サービスメッセージテンプレートの一覧に戻ります。
追加したテンプレートの[公開状況]に審査の状況が表示されます。
公開状況 説明 開発中 開発中(審査未申請)。LINEミニアプリチャネルのAdmin権限またはTester権限を持つ開発者に対して、開発用のチャネルからサービスメッセージを送る場合にのみ使用できます。 公開中 審査通過済み。LINEミニアプリチャネルのユーザーに対して、本番用のチャネルからサービスメッセージを送る場合に使用できます。
# テンプレートの各要素について
サービスメッセージは、(A)タイトル、(B)詳細内容、(C)ボタン、(D)フッターで構成されています。 テンプレートは使用例に応じて、これらのセクションを組み合わせて作成してください。 また、サービスメッセージの目的に最も適したテンプレートを利用してください。
ラベル | セクション | 説明 |
---|---|---|
A | タイトル | タイトルセクションは、以下の要素で構成されます。
|
B | 詳細内容 | 詳細内容セクションには、テンプレートの種類に応じて次の2種類のレイアウトがあります。
|
C | ボタン | 選択したテンプレートによって、使用できるボタンの数は異なります。また、URLを設定したボタンのみが表示されます。URLは、LINEミニアプリのページのパーマネントリンクを指定してください。
|
D | フッター | LINEミニアプリのアイコンとLINEミニアプリの名前が表示されます。ユーザーがフッターをタップすると、そのLINEミニアプリのホームページが表示されます。 |
LINEミニアプリのステータスが「開発中」や「審査中」の場合は、本来のフッターの代わりにLINEのアイコンと、「Service Message」というテキストが表示されます。ステータスが「公開中」に切り替わると、設定したLINEミニアプリのアイコンとLINEミニアプリの名前が表示されます。
最大文字数を超えた場合は、末尾に省略記号(...
)が表示されます。省略記号が表示されないように、最大文字数の基準を守ってください。
# 最初のサービスメッセージを送信する
ユーザーが操作を行ったり何かを要求したりした後で、LINEミニアプリから初めてサービスメッセージを送信する場合の手順を説明します。
サービスメッセージをユーザーに送信する前に、開発者のみを対象としたテスト送信を行い、サービスメッセージが実際にどのように表示されるか確認することをお勧めします。
LINEミニチャネルでは、長期のチャネルアクセストークンは使用できません。
LINEミニアプリの開発では、短期のチャネルアクセストークンもしくは、任意の有効期間を指定できるチャネルアクセストークン(チャネルアクセストークンv2.1)を使用してください。
以下はチャネルアクセストークンとLIFF SDKのアクセストークンを使って、サービス通知トークンを発行し、サービスメッセージを送信するまでのイメージ図です。これらのイメージ図では、チャネルアクセストークンに短期のチャネルアクセストークンを使用しています。
あらかじめチャネルアクセストークンを取得しておきます。
チャネルアクセストークンは、サービスメッセージを送信するたびに取得しなおす必要はありません。
通知するときに、LINEミニアプリでliff.getAccessToken()を実行して、LIFFのアクセストークンを取得します。
手順2で取得したLIFFのアクセストークンを、サーバーに送信します。
サービス通知トークンを発行します。
手順1で取得したチャネルアクセストークンと、手順2で取得したLIFFのアクセストークンを利用します。
final OkHttpClient notifierApiClient = new OkHttpClient().newBuilder().build(); final MediaType mediaType = MediaType.parse("application/json"); final RequestBody notificationTokenRequestBody = RequestBody.create(mediaType, "{'liffAccessToken': 'eyJhbGciOiJIUzI1NiJ9…'"); final Request notificationTokenRequest = new Request.Builder() .url(BASE_URL + "/notifier/token") .method("POST", notificationTokenRequestBody) .addHeader("Content-Type", "application/json") .addHeader("Authorization", "Bearer W1TeHCgfH2Liwa...") .build(); final NotificationTokenResponse response = notifierApiClient.newCall(request).execute(); String notificationToken = notificationTokenResponse.getNotificationToken(); int tokenRemainingCount = notificationTokenResponse.getRemainingCount();
最初のサービスメッセージを送信します。
手順4で取得したサービス通知トークンを利用します。
なお、使用するテンプレートにテンプレート変数がある場合は、
params
にキーと値のペアを指定してください。 必須要素のテンプレート変数を指定しないと、エラーが返されます。params
の例:{ ... "params": { // params sample to be updated "variable-name": "value", "button_uri_1": "detailView?userId=1234&purchaseID=5678" } ... }
final RequestBody notificationRequestBody = RequestBody.create(mediaType,"{ 'templateName': 'reservation_confirmation_en', 'notificationToken': '34c11a03-b726-49e3-8ce0-949387a9…', 'params': { 'template-field-name': 'field-value', 'template-field-name': 'field-value', }}"); final Request notificationRequest = new Request.Builder() .url(BASE_URL + "/notifier/send?target=service") .method("POST", notificationRequestBody) .addHeader("Content-Type", "application/json") .addHeader("Authorization", "Bearer W1TeHCgfH2Liwa...") .build(); final NotificationResponse notificationResponse = notifierApiClient.newCall(request).execute(); notificationToken = notificationResponse.getNotificationToken(); tokenRemainingCount = notificationResponse.getRemainingCount();
レスポンスに含まれる値を保存してくださいレスポンスに含まれるサービス通知トークン(
notificationToken
)は、必ず保存してください。 このトークンは、同じ操作(アクション)に対して、後続のサービスメッセージを送信するときに使用します。 サービス通知トークンの有効期間内は、レスポンスに含まれるremainingCount
の数だけ、同じ操作に対する後続のサービスメッセージを送信できます。それぞれの操作(アクション)は、レスポンスに含まれるセッションID(
sessionId
)で区別できます。
サービス通知トークンは、発行から1年間(31,536,000秒間)有効です。有効期限が切れるまでの間、たとえばユーザーの「予約」という1つの操作に対して、LINEミニアプリから最大5回のサービスメッセージを送信できます。2回目以降のサービスメッセージ送信について詳しくは、「後続のサービスメッセージを送信する」を参照してください。
# 後続のサービスメッセージを送信する
同じ操作に対する後続のサービスメッセージを送信するときは、新しいサービス通知トークンを発行する必要はありません。 前回サービスメッセージを送信したときにレスポンスに含まれていたサービス通知トークンを使用してください。
...
JsonObject subsequentMessage = Json.createObjectBuilder()
.add("notificationToken", notificationToken)
.add("templateName", templateName)
.add("params", templateData)
.build();
...
if (tokenRemainingCount < 0)
{
notificationRequestBody = RequestBody.create(mediaType, subsequentMessage.toString());
notificationRequest = new Request.Builder()
.url(BASE_URL + "/notifier/send?target=service")
.method("POST", notificationRequestBody)
.addHeader("Content-Type", mediaType.toString())
.addHeader("Authorization", "Bearer W1TeHCgfH2Liwa...")
.build();
notificationResponse =
notifierApiClient.newCall(notificationRequest).execute();
notificationToken = notificationResponse.getNotificationToken();
tokenRemainingCount = notificationResponse.getRemainingCount();
}
レスポンスに含まれるサービス通知トークン(notificationToken
)は、必ず保存してください。
このトークンは、同じ操作(アクション)に対して、後続のサービスメッセージを送信するときに使用します。
サービス通知トークンの有効期間内は、レスポンスに含まれるremainingCount
の数だけ、同じ操作に対する後続のサービスメッセージを送信できます。
それぞれの操作(アクション)は、レスポンスに含まれるセッションID(sessionId
)で区別できます。