LINEミニアプリ開発ノート『サービスメッセージ編』
今回は『サービスメッセージ編』
LINEミニアプリの特徴の1つである「サービスメッセージ」について、どんなことができるのか?
また開発する上で注意する必要がある点についてまとめる。
LINEミニアプリの概要やメリットなどは割愛。
APIの仕様などは、公式のdocsにまとまってるのでそちらを参照ください。
※執筆時(2022/08/11)の情報です
サービスメッセージとは
サービスメッセージは、LINEミニアプリ上でのユーザーの操作(アクション)に対する確認や応答として、ユーザーが知っておくべき情報をLINEミニアプリから通知する機能です。
たとえば、ユーザーがLINEミニアプリ上でレストランや宿泊施設を予約した場合、「予約」という1つの操作に対して、予約完了や前日のリマインドといったサービスメッセージを最大5回まで送信できます。
サービスメッセージの特徴(できること・できないこと)をまとめると..
- 一般的な公式アカウントとは異なる、特殊なアカウント「サービスメッセージ」から送られてくるメッセージ
- ブロック不可能 ※ミュートは可能
- 一般的なLINE公式アカウントから送信するメッセージとは異なり、何通送っても無料
- ただし、どのLINEミニアプリから送信されるサービスメッセージも、「サービスメッセージ」という特殊なアカウントに集約される
- 自由なメッセージを送ることができるわけではなく、 用途にあわせたテンプレートが用意されている
- 項目を減らすことはできるが、項目を増やすことはできない
- 項目名(key)を変えることはできず、変えられるのは内容(value)のみ
- どんなテンプレートがあるのか?は、テンプレートカタログを参照
- ⚠️ ここが重要! ユーザの能動的なアクションがあった上で、最大5回まで送信可能
サービスメッセージを送るまで
サービスメッセージを送るためには、「 サービス通知トークン
」が必要で、
このサービス通知トークン1つにつき、最大5回までサービスメッセージを送信することができる
「 サービス通知トークン
」を取得するためには、「 チャネルアクセストークン
」と「 LIFF SDKのアクセストークン
」が必要で、
後者は、その名の通り、LIFF SDKを通して取得できるトークンであるため、ユーザがLIFF SDKを通して、LINEユーザとしての認証をした後に、ユーザごとに発行されるアクセストークンである。
(個人的には、単にアクセストークンというとチャネルアクセストークンと誤認しやすいので、ユーザアクセストークンまたはLIFFアクセストークンと呼んでいる)
あくまで、ユーザの能動的なアクションが必要という制約があるのは「LIFF SDKのアクセストークン」が必要なため。
言い換えれば、 ユーザの操作なしに、サーバー側のみで「サービス通知トークン」を取得して、勝手にユーザにサービスメッセージを送信することは不可能。
すでに取得済みであれば、サーバー側のみで送信することは可能
リクエストの流れ
例えば、抽選キャンペーンを実施して、
ユーザが「応募」するという操作をすることによって、「応募完了」のサービスメッセージを送信し、
その後、バッチ処理で抽選処理を実行した際に、「当落発表」のサービスメッセージを送信する場合は、以下のようなシーケンス図になる。
シーケンス図の通り
やはり、 あくまで起点となるのはユーザの能動的なアクションであることが、サービスメッセージの肝
そして、そのアクションをもとに取得した「サービス通知トークン」を、そのアクションイベントに紐づけてDBなどに保存しておくことで、その後、最大5回までサービスメッセージを送信できるという仕組み。
⚠️ サービスメッセージを送信した際は、残数が減り、トークンの値も更新されるため、DBなどに保存している場合は、そちらも更新が必要
上記は、あくまで実装の一例ですが、各社サービスメッセージを送信する際には、似たような実装になるのではないかなと思います。
Discussion