LINE Messaging APIで作ったリッチメニューは、全友だちに公開する前に自分の端末だけで確認できます。「ユーザーへのリンク」APIで自分のユーザーIDにだけメニューを紐付ければ、デフォルトメニューを設定するまで他の友だちには何も表示されません。この記事では、その仕組みと手順、公開まで運用してみて分かった注意点をまとめます。
個別リンクはデフォルトメニューより優先される
リッチメニューがどれ表示されるかは、次の優先順位で決まります。
- APIでユーザー個別にリンクしたメニュー
- APIで設定したデフォルトメニュー(全友だち向け)
- LINE Official Account Managerの画面で設定したメニュー
この順位を使うと、確認したい人のユーザーIDにだけメニューをリンクし、デフォルトメニューは設定しないままにしておけます。デフォルトが無い状態では、リンクされていない友だちには管理画面で設定したメニューか、何も表示されません。作成や作り直しを何度繰り返しても、デフォルトを設定する操作を呼ばない限り一般の友だちに影響が出ません。
確認までの手順
先にリッチメニューの作成と画像アップロードを済ませ、richMenuIdを控えておきます。そのうえで次の3つを行います。
1. 自分のユーザーIDを調べる
LINE Developersコンソールでチャネルを開き、「チャネル基本設定」タブの下部にある「あなたのユーザーID」を使います。Uから始まる33文字の値です。
2. 対象のLINE公式アカウントを友だち追加する
友だちになっていないユーザーにはリンクできません。他の人に確認してもらう場合も、その人のユーザーIDと友だち追加の両方が必要です。
3. 自分のユーザーIDにメニューをリンクする
curl -X POST https://api.line.me/v2/bot/user/{userId}/richmenu/{richMenuId} \
-H "Authorization: Bearer {channel access token}"
成功すると空のJSON({})が返り、トーク画面を開き直すとメニューが表示されます。デフォルトメニューが設定されていないことは、次のAPIで確認できます。
curl https://api.line.me/v2/bot/user/all/richmenu \
-H "Authorization: Bearer {channel access token}"
# 未設定なら 404 で {"message":"no default richmenu","details":[]} が返る
確認と公開を別の操作にする
作成から公開までをスクリプト化する場合は、「作成して自分にリンクする」操作と「デフォルトに設定する」操作を、明示的なオプションで分けておくことを勧めます。公開用のオプションを付けた時だけデフォルト設定のAPIを呼ぶ作りにすれば、付け忘れて起きるのは「誰にも表示されない」だけで、逆の事故は起きません。
あわせて、状態を表示する操作と取り消す操作を同じ書式にしないことも大切です。私は状態を見るつもりでユーザーIDを指定するオプションを付けて撤去コマンドを実行し、確認用にリンクしていた2名分を外してしまいました。そのオプションは「指定したユーザーからメニューを外す」ものだったためです。状態確認は引数なし、変更は必ず明示のオプション、と揃えておくと取り違えが起きません。
公開する前に個別リンクを外す
確認が終わったら、個別リンクを外してからデフォルトメニューを設定します。順番を逆にしてもすぐには問題が出ませんが、確認用のメニューを後で削除した時に、そのメニューへリンクされたままのユーザーがどう扱われるかは公式ドキュメントに明記されていません。先に外しておけば、その挙動に依存せずに済みます。
curl -X DELETE https://api.line.me/v2/bot/user/{userId}/richmenu \
-H "Authorization: Bearer {channel access token}"
外した直後からデフォルト設定までの間は、そのユーザーの画面からメニューが消えます。数十秒の話ですが、別の担当者にも確認してもらっている場合は、一言伝えておくと驚かせません。