LINEユーザーにリンク済みのリッチメニューを一括で置き換え・解除するAPIが新しくなりました
はじめに
2023年7月4日、Messaging APIに「ユーザーにリンク済みのリッチメニューを一括で置き換え・解除するエンドポイント」が追加されました。
Messaging APIにおいて、ユーザーにリンク済みのリッチメニューを一括で置き換えたり、解除したりできるようになりました
今までは以前紹介したLINEユーザーIDを指定してリッチメニューを切り替える方法で実現していましたが、追加されたエンドポイントを利用することでLINEユーザーIDが不要となります。
切り替え手順の変更点
これまでの切り替え手順
- リッチメニューを作成
- デフォルトのリッチメニューを新しいものに切り替え
- 切り替え対象のLINEユーザーIDのリストを取得
- 新しいリッチメニューIDと、LINEユーザーIDのリストを指定して切り替え
新しい切り替え手順
- リッチメニューを作成
- デフォルトのリッチメニューを新しいものに切り替え
- 切り替え前のリッチメニューIDと、新しいリッチメニューIDを指定して切り替え
新しい切り替え手順は、切り替え対象のリッチメニューIDを指定する方法に変わったことで、LINEユーザーIDのリストを取得・指定する手順が無くなりました。新しい手順を使う場合は、リッチメニュー作成時に返却されるリッチメニューIDを大切に保管しておきましょう。
新しい手順で切り替えてみた
実際に新しい手順でリッチメニューを切り替えてみました。事前に以下のリッチメニューが、複数のLINEユーザーIDに設定されている状態にしています。
リッチメニュー画像は、LINEキャンパスで無料配布されている画像を使用しています。
切替えはこちらのエンドポイントにリクエストします。
POST https://api.line.me/v2/bot/richmenu/batch
リクエストヘッダーにAuthorizationを指定して、リクエストボディに次の内容を指定します。
{ "operations": [ { "type": "link", "from": "richmenu-aaaaaaaaaaaaaaaaaaaaaaa", "to": "richmenu-bbbbbbbbbbbbbbbbbbbbbbb" } ] }
type
にlinkを指定し、from
に切り替え前のリッチメニューID、to
に切り替え後のリッチメニューIDを指定します。するとfromのリッチメニューが表示されていた複数ユーザーのリッチメニューが次の通りに切り替わりました。
とてもシンプルな手順で切り替えられるようになりました。なお、デフォルトのリッチメニューのみ設定している場合は、デフォルトを変更をすれば全ユーザーのリッチメニューが切り替わります。この新しい手順を実施する必要はありません。
リッチメニュー切り替えに関連する機能
今回のタイミングで同時に追加されたエンドポイントについても紹介します。
リッチメニュー切り替えリクエストの検証
リクエストボディの operations
の内容を検証してくれます。その他、指定したリッチメニューが存在しない場合や、指定したリッチメニューに画像が設定されていない場合も検証してくれます。このあたりの作業実施漏れは、よくある作業ミスなので非常にありがたい機能です。(今まで何度、画像を設定し忘れたことか・・・)
リッチメニュー切り替えリクエストの状況の確認
GET https://api.line.me/v2/bot/richmenu/progress/batch?requestId={request_id}
こちらのエンドポイントに、リッチメニュー切り替えのレスポンスヘッダーに含まれている requestId
を指定することで進行状況を確認出来ます。処理がエラーになった場合は、後述する機能で安全にリトライ可能です。
リッチメニュー切り替えのリトライ
新しい一括切り替え機能には安全にリトライするための機能が備わっています。一括切り替えのリクエストボディに resumeRequestKey
プロパティを指定することで実現可能です。resumeRequestKey
を利用する場合は、初回リクエスト時に resumeRequestKey
を指定しておく必要があります。リトライ時に同じキーを指定することで失敗したユーザーからリトライ可能です。
まとめ
以前の方法では、LINEユーザーIDとリッチメニューIDの関連付けをDBなどで保持しておく必要がありましたが、新しい方法ではこれが不要となります。非常にありがたい仕組みです。今後は新しい方法一択で良いと思いますし、LINEユーザーIDの管理が必要なくなるのでLINEのポリシーにも準拠しやすくなりますね。