トラブルシューティング

LINEリッチメニューでタブ移動「戻れない」とき、大体の理由がこれです。

LINEリッチメニューをタブ切り替えで運用していると、ある瞬間にこうなりませんか?

  • メニューは表示される
  • 切り替えもできている
  • でも戻れない!!!!!!

押しても反応しない。
あるいは、別のメニューに行ったきり戻ってこれない。

このとき、原因はほぼ決まっていて、
IDとaliasの混線か、aliasの中身の取り違えです。

僕の構成

今回の構成はこんな感じでした。

  • リッチメニューA(メイン)
  • リッチメニューB(サブ)
  • richmenuswichでタブ切り替え
  • aliasを使って管理

一見正しく思えますが、「正しく使っていても事故る」ポイントがありますので次のセクションで解説します。

まず確認すること①

:aliasは「存在」している?

aliasは作っただけではダメで、
「どのリッチメニューIDに紐づいているか」が全て。です。

確認ポイント👇

# alias一覧を取得
curl -sS -X GET https://api.line.me/v2/bot/richmenu/alias/list \
-H "Authorization: Bearer $TOKEN"

ここで見るべきなのはこれだけ。

  • richMenuAliasId が想定どおりか
  • richMenuId が 本当に切り替えたいID

名前があっている=中身もあっている、ではない。

確認すること②

:switch先が「alias」か「ID」か

  • richMenuAliasId に IDを入れてないか
  • richMenuId と 混ざってないか

を確認する。

aliasで切り替えるなら、最後までaliasで統一する。
途中でIDを使うと、戻れなくなる。

よくある事故①

:aliasは正しいが、中身が逆
僕のケースで起きやすかったのが、こちらです。

  • alias名:メニューA(メイン)
  • 中身の richMenuId:実は「メニューB(サブ)」

この状態で、

  • メイン→ サブ は行ける
  • サブ → メイン が戻れない

という 意味不明な挙動になる。
対処は単純です👇

# aliasを正しいIDに付け替える
curl -sS -X POST https://api.line.me/v2/bot/richmenu/alias/main \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
  "richMenuId": "正しいリッチメニューID"
}'

よくある事故②

:メインもサブも「Selected: true」

リッチメニュー作成時、
この設定を両方に入れてしまうと混乱します。

"selected": true

同時に1つしか有効になれないのに、
両方trueにしていると、

  • どれがデフォルトか分からない
  • 切り替え後の挙動が不安定

基本ルールはこれにしましょう〜〜!!

  • デフォルトにしたい1つだけ true
  • それ以外は false

別件:「全員に反映されているか不安」問題

僕が感じていた不安

これ、全員に反映されてんのかな〜〜〜〜〜??

ちば

これ、正常な不安です。
なぜなら、aliasは「裏で差し替え」されるからです。

確認する方法はこちら👇

curl -sS -X GET https://api.line.me/v2/bot/richmenu/alias/main \
-H "Authorization: Bearer $TOKEN"

ここで返ってくるrichMenuIdが正しければ、全ユーザーにそのIDが有効になっています。
結構即時で反映されます。

まとめ

戻れないときは「紐付け」を確認することが大切です!!今回の件で見るべき順番はこれでした。

  1. alias一覧と中身が一致しているか
  2. richmenuswitch が alias統一か
  3. selected: true が1つだけか

画面じゃなく、curlのレスポンスを見る。
これが一番早く確実な方法です。みてみてください〜!

-トラブルシューティング