はじめに
LINE公式アカウントには、リッチメニューという機能があります
LINE公式アカウントと友だちになったユーザーに、フッター固定のメニューを表示できるとても面白い機能です
LINE Official Account Managerを使ったGUIでの設定、Messaging APIを利用したAPIでの設定ができます
今回はMessaging APIを利用し、デフォルトのリッチメニューとタブ切り替えを組み合わせたリッチメニューの動きを紹介したいと思います
リッチメニューをユーザーに表示する方法ついて
リッチメニューをユーザーに表示する方法は2つあります
- 特定のユーザーに特定のリッチメニューをリンクする
- デフォルトのリッチメニューを登録する
特定のユーザーに特定のリッチメニューをリンクする
方法は、「男性には男性向け、女性には女性向けのメニューを出したい」など、ターゲットを決めてリッチメニューを出したい時にとても便利です
対して、デフォルトのリッチメニューを登録する
方法では、上記のターゲットを除くすべてのユーザーに見せたいリッチメニューを設定することができます
2つを組み合わせることで、漏れなくすべてのユーザーに何かしらのリッチメニューを表示することができます
デフォルトのリッチメニューについて
デフォルトのリッチメニューには、下記のような仕様があります
デフォルトのリッチメニューは、LINE公式アカウントと友だちになっているユーザーのうち、個別にリッチメニューをリンクされていないすべてのユーザーに表示されます。
すでにデフォルトのリッチメニューが設定されていた場合は、新しく指定したリッチメニューに置き換えられます。
つまり、特定のユーザーに特定のリッチメニューを表示したいわけではないのなら、デフォルトのリッチメニューを再登録しなおすだけで、こまめにリッチメニューを出し分けることができます
「特にターゲットは絞らず、日替わりの特集のタイトルを表示したリッチメニューを出したい」など、いろんなユースケースで使えそうです
タブ切り替えについて
リッチメニュー内に別のリッチメニューへの切替アクションを設定することで、タブ切り替えを実装することもできます
APIとしては、切り替え先のリッチメニューのエイリアスを指定するだけのシンプルな機能ですが、
内部的には特定のユーザーに特定のリッチメニューをリンクする実装となっているようです
- [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトのリッチメニューとして登録する
- ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される
- ユーザーがタブを押してリッチメニューBに切り替える
- ユーザーとリッチメニューBがリンクされる
- ユーザーが元のメニューに戻るタブを押し、リッチメニューA に切り替える
- ユーザーとリッチメニューAがリンクされる
この実装であることで、ユーザーが最後に表示したリッチメニューが保持されるので、
一度トーク画面から離れても、また同じリッチメニューを見ることができます!
デフォルトのリッチメニューとタブ切り替えを組み合わせるとどうなるか
では、この後 リッチメニューC をデフォルトのリッチメニューとして登録したらどうなるでしょうか?
先に紹介しましたデフォルトのリッチメニューの仕様↓を知っていると、ユーザーにはリッチメニューCが表示されることを期待してしまいます
すでにデフォルトのリッチメニューが設定されていた場合は、新しく指定したリッチメニューに置き換えられます。
しかし、ユーザーはタブ切り替え機能により特定のリッチメニューとリンクされています
そのため、デフォルトリッチメニューの表示対象から外れ、ユーザーにはリッチメニューAが表示され続けてしまいます
- [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトリッチメニューとして登録する
- ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される
- ユーザーがタブを押してリッチメニューBに切り替える
- ユーザーとリッチメニューBがリンクされる
- ユーザーが元のメニューに戻るタブを押し、リッチメニューA に切り替える
- ユーザーとリッチメニューAがリンクされる
7. [運用側] リッチメニューC を、デフォルトリッチメニューとして登録する
8. ユーザーはリッチメニューAとリンクされているので、リッチメニューAが表示される
ユーザーに再びデフォルトリッチメニューを見せるには
もし、新しくデフォルトのリッチメニューを設定することになった場合は、ユーザーとリッチメニューのリンクを解除してあげる必要があります
今回の例の場合は、タブ切り替えを実装しているので、リッチメニューA・Bどちらに紐づいているのかはユーザーによってまちまちです
そのため、リッチメニューA・Bの両方のリンクを解除してあげる必要があります
ちなみに
- [運用側] リッチメニューB への切り替えが設定された リッチメニューA を、デフォルトのリッチメニューとして登録する
- ユーザーにデフォルトのリッチメニュー(リッチメニューA)が表示される
このタイミング、つまりユーザーがタブ移動をしていないタイミングであれば、ユーザーにはリッチメニューが紐づいていません
この後 リッチメニューC をデフォルトのリッチメニューとして登録したら…
3. ユーザーにデフォルトのリッチメニュー(リッチメニューC)が表示される
という動きをします