APIを使ったリッチメニュー切り替え挙動を調べる #LINE_API
はじめに
こんにちは、中村です。
本日Developers.IO CAFEでLINEボットでの注文機能がリリースされました。みなさまぜひご利用ください。 今回はリッチメニューAPIの挙動の確認です。トークの途中でリッチメニューを閉じたいというニーズがありそうです。APIを使いながら可能かどうか模索していきます。
トークの途中でリッチメニューを閉じる
チャネルについては適当に1つ作成し、アクセストークン(ロングターム)をメモしておいてください。 まずは、リッチメニューのリストを取得します。当たり前ですが、まだリッチメニューを設定していないので空かと思います。
$ curl -X GET https://api.line.me/v2/bot/richmenu/list -H 'Authorization: Bearer {channel access token}' {"richmenus":[]}
それではリッチメニューを作成していきます。わかりやすいようにSample AとSample Bを用意しました。 画像は、
- サイズ:2500x1686もしくは2500x843
- フォーマット:JPEGまたはPNG
- ファイルサイズ:1MBの制限があります。
リッチメニューを作成
$ curl -X POST https://api.line.me/v2/bot/richmenu \ -H 'Authorization: Bearer {channel access token}' \ -H 'Content-Type: application/json' \ -d \ '{ "size": { "width": 2500, "height": 1686 }, "selected": true, //デフォルトで表示するかどうか "name": "Sample A", "chatBarText": "Sample Aです。", //メニューを表示・非表示を行うボタンへ表示するテキスト "areas": [ { "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "message", "text": "Sample A" } } ] }' {"richMenuId":"richmenu-xxxxxxxxxxxxxxxxxxxxx"}
画像をアップロード
$ curl -X POST https://api.line.me/v2/bot/richmenu/richmenu-xxxxxxxxxxxxxxxxxxxxx/content \ -H 'Authorization: Bearer {channel access token}' \ -H 'Content-Type: image/jpeg' \ -T image.jpg {}
これで、リッチメニューと画像の紐付けが完了しました。ユーザーと紐づけることでチャネルに表示ができます。
ユーザーとリッチメニューを紐付け
$ curl -X POST https://api.line.me/v2/bot/user/xxxxxxxxxxxxxxxx/richmenu/richmenu-xxxxxxxxxxxxxxxxxxxxx \ -H 'Authorization: Bearer {channel access token}' {}
Sample Aの表示を確認できました!同じ要領で、Sample Bも作成します。
Sample Bを作成後、ユーザーとリッチメニューを紐付けを行うことで上書きができます。
selected属性を利用した設定
リッチメニューを作成するリクエストにselectedという属性があります。これは、デフォルトで表示するかどうかを制御しています。Sample Bのメニューのselectedをfalseにしてみました。しかし、表示されているママです。どうやらselectedでは制御できなさそうです。
リンクを解除・設定
ユーザーのリッチメニューを解除できます。削除した後に、リッチメニューを再度紐付けを行います。
$ curl -v -X DELETE https://api.line.me/v2/bot/user/xxxxxxxxxxxxxxxx/richmenu \ -H 'Authorization: Bearer {channel access token}'
すると表示はされずにリッチメニューが紐付けられています。
これで、トークの途中でリッチメニューを閉じたいというニーズを満たせそうです。この機能を実装するためには、ユーザのリッチメニューのステータスを保持する必要があります。Dynamo DB等を利用して管理するのが良いでしょう。
まとめ
実際のニーズを考えてAPIで実装できるかどうか検討してみました。Developers.IO CAFEボットでも適用しよりよいUXにできればと思います。
チャットボット開発は弊社にご相談ください。
またAmazon Connectのキャンペーンを行なっております。こちらもご相談お待ちしております。