この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは、中村です。
本日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のキャンペーンを行なっております。こちらもご相談お待ちしております。