Messaging APIにおいて、ユーザーにリンク済みのリッチメニューを一括で置き換え・解除するエンドポイントを追加しました。
リッチメニューとユーザーをリンクするエンドポイントなどを利用して、ユーザーにリンクしたリッチメニューを一括で操作できるエンドポイントです。このエンドポイントでは、以下のような操作が可能です。
- 特定のリッチメニューをリンク済みのすべてのユーザーを対象に、リッチメニューを別のリッチメニューに置き換える
- 特定のリッチメニューをリンク済みのすべてのユーザーを対象に、リッチメニューのリンクを解除する
- リッチメニューをリンク済みのすべてのユーザーを対象に、リッチメニューのリンクを解除する
これまで、ユーザーにリンク済みのリッチメニューをリンクし直したり、リンクを解除したりするためには、変更の対象となるすべてのユーザーIDが必要でした。このエンドポイントを利用することで、ユーザーIDを指定することなく、リンク済みのリッチメニューをリンクし直したり、リンクを解除したりすることができます。
このエンドポイントへのリクエストはバックグラウンドで非同期に処理されます。処理の進行状況は「リッチメニューの一括操作の進行状況を取得するエンドポイント」で確認できます。
なお、一度のリクエストで複数のリッチメニューの操作を指定することができます。複数の操作を指定した場合、リッチメニューへの操作はそれぞれ並行してユーザーごとに実行されます。
詳しくは、『Messaging APIリファレンス』の「リンク済みのリッチメニューを一括で置き換え・解除する」を参照してください。
ユーザーにリンク済みのリッチメニューを、一括で置き換え・解除したときの進行状況を取得します。
進行状況を取得できる期間は、リッチメニューの一括操作のリクエストを受け付けた時間から14日間(336時間)です。
詳しくは、『Messaging APIリファレンス』の「リッチメニューの一括操作の進行状況を取得する」を参照してください。
リンク済みのリッチメニューを一括で置き換え・解除するエンドポイントの、リクエストボディが有効かを検証します。
このエンドポイントを使うことで、リクエストがエラーにならないことを事前に確認できます。
詳しくは、『Messaging APIリファレンス』の「リッチメニューの一括操作のリクエストを検証する」を参照してください。
リッチメニューを一括で操作する際の処理は、ユーザーごとに非同期に実行されます。そのため、一部のユーザーに対しての処理が失敗していた場合に、同じ内容でリトライをしてしまうと、意図しない内容でリッチメニューが置き換わってしまう場合があります。
以下のように、ユーザーにリンク済みのリッチメニューを入れ替えるとします。
richmenu ID Aがリンクされているユーザー全員のリッチメニューを、richmenu ID Bに置き換えるrichmenu ID Bがリンクされているユーザー全員のリッチメニューを、richmenu ID Aに置き換える
この場合のリクエストの例は以下のとおりです。
shcurl -v -X POST https://api.line.me/v2/bot/richmenu/batch \
-H "Authorization: Bearer {channel access token}" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{
"type": "link",
"from": "{richmenu ID A}",
"to": "{richmenu ID B}"
},
{
"type": "link",
"from": "{richmenu ID B}",
"to": "{richmenu ID A}"
}
]
}'
このリクエストの処理が成功しているかどうかは、「リッチメニューの一括操作の進行状況を取得するエンドポイント」で取得します。
進行状況を取得した結果、処理に失敗していた場合、上記の内容でリトライをするとします。このとき、初回のリクエストでrichmenu ID Bからrichmenu ID Aに置き換えが完了していたユーザーのリッチメニューは、再びrichmenu ID Bに置き換わってしまいます。
そのため、リッチメニューを一括で置き換えたり、解除したりする場合は、リトライ用のキーであるresumeRequestKeyプロパティを指定することを推奨します。resumeRequestKeyプロパティを指定した場合のリクエストの例は、以下のとおりです。
shcurl -v -X POST https://api.line.me/v2/bot/richmenu/batch \
-H "Authorization: Bearer {channel access token}" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{
"type": "link",
"from": "{richmenu ID A}",
"to": "{richmenu ID B}"
},
{
"type": "link",
"from": "{richmenu ID B}",
"to": "{richmenu ID A}"
}
],
"resumeRequestKey": "{任意のキー}"
}'
初回のリクエストでresumeRequestKeyプロパティに任意のキーを指定していた場合、同じキーを指定して再度リクエストを送ることで、処理が完了していないユーザーに対してのみ再度処理が行われます。resumeRequestKeyプロパティを使用することで、安全にリトライすることができます。
resumeRequestKeyプロパティの有効期限は14日間(336時間)です。有効期限を超えた場合、新しいリクエストとして扱われます。