💬

LINEミニアプリ開発ノート『サービスメッセージ編』

2022/08/11に公開

今回は『サービスメッセージ編
LINEミニアプリの特徴の1つである「サービスメッセージ」について、どんなことができるのか?
また開発する上で注意する必要がある点についてまとめる。

LINEミニアプリの概要やメリットなどは割愛。
APIの仕様などは、公式のdocsにまとまってるのでそちらを参照ください。

※執筆時(2022/08/11)の情報です

サービスメッセージとは

サービスメッセージは、LINEミニアプリ上でのユーザーの操作(アクション)に対する確認や応答として、ユーザーが知っておくべき情報をLINEミニアプリから通知する機能です。
たとえば、ユーザーがLINEミニアプリ上でレストランや宿泊施設を予約した場合、「予約」という1つの操作に対して、予約完了や前日のリマインドといったサービスメッセージを最大5回まで送信できます。

https://developers.line.biz/ja/docs/line-mini-app/develop/service-messages/

サービスメッセージの特徴(できること・できないこと)をまとめると..

  • 一般的な公式アカウントとは異なる、特殊なアカウント「サービスメッセージ」から送られてくるメッセージ
    • ブロック不可能 ※ミュートは可能
    • 一般的なLINE公式アカウントから送信するメッセージとは異なり、何通送っても無料
      • ただし、どのLINEミニアプリから送信されるサービスメッセージも、「サービスメッセージ」という特殊なアカウントに集約される
  • 自由なメッセージを送ることができるわけではなく、 用途にあわせたテンプレートが用意されている
    • 項目を減らすことはできるが、項目を増やすことはできない
    • 項目名(key)を変えることはできず、変えられるのは内容(value)のみ
    • どんなテンプレートがあるのか?は、テンプレートカタログを参照
  • ⚠️ ここが重要! ユーザの能動的なアクションがあった上で、最大5回まで送信可能

サービスメッセージを送るまで

サービスメッセージを送るためには、「 サービス通知トークン 」が必要で、
このサービス通知トークン1つにつき、最大5回までサービスメッセージを送信することができる

サービス通知トークン 」を取得するためには、「 チャネルアクセストークン 」と「 LIFF SDKのアクセストークン 」が必要で、
後者は、その名の通り、LIFF SDKを通して取得できるトークンであるため、ユーザがLIFF SDKを通して、LINEユーザとしての認証をした後に、ユーザごとに発行されるアクセストークンである。
(個人的には、単にアクセストークンというとチャネルアクセストークンと誤認しやすいので、ユーザアクセストークンまたはLIFFアクセストークンと呼んでいる)

あくまで、ユーザの能動的なアクションが必要という制約があるのは「LIFF SDKのアクセストークン」が必要なため。
言い換えれば、 ユーザの操作なしに、サーバー側のみで「サービス通知トークン」を取得して、勝手にユーザにサービスメッセージを送信することは不可能。
すでに取得済みであれば、サーバー側のみで送信することは可能

リクエストの流れ

例えば、抽選キャンペーンを実施して、
ユーザが「応募」するという操作をすることによって、「応募完了」のサービスメッセージを送信し、
その後、バッチ処理で抽選処理を実行した際に、「当落発表」のサービスメッセージを送信する場合は、以下のようなシーケンス図になる。

シーケンス図の通り
やはり、 あくまで起点となるのはユーザの能動的なアクションであることが、サービスメッセージの肝
そして、そのアクションをもとに取得した「サービス通知トークン」を、そのアクションイベントに紐づけてDBなどに保存しておくことで、その後、最大5回までサービスメッセージを送信できるという仕組み。

⚠️ サービスメッセージを送信した際は、残数が減り、トークンの値も更新されるため、DBなどに保存している場合は、そちらも更新が必要

上記は、あくまで実装の一例ですが、各社サービスメッセージを送信する際には、似たような実装になるのではないかなと思います。

Discussion