Llama-2が登場!8bit+LoRAでRLHFファインチューニングを試す方法はこちら

【LINE Messaging API】簡単!PythonでLINEのリッチメニューを簡単に作成!

PythonでLINEのリッチメニューを作りたいという方は多いのではないでしょうか。

こちらのgithubや他の記事を参考にしてみてもよく分からない方もいると思います。

今回は、できるだけ分かりやすいように、classで機能をまとめることはせずに説明していきます。

目次

まずはインポートしよう

リッチメニューを作るために必要最低限必要なもののインポートと定義をします。

import os
from linebot import (
    LineBotApi
)
from linebot.models import (
    RichMenu, RichMenuArea,
    RichMenuBounds, RichMenuSize
)
from linebot.models.actions import PostbackAction

line_bot_api = LineBotApi(os.environ["CHANNEL_ACCESS_TOKEN"])

Create rich menu

rich_menu_to_create = RichMenu(
    size = RichMenuSize(width=2500, height=1686),
    selected = True,
    name = 'richmenu',
    chat_bar_text = 'メニュー',
    areas=[
        RichMenuArea(
            bounds=RichMenuBounds(x=0, y=0, width=1273, height=868),
            action=PostbackAction(data='renew')
        ),
        RichMenuArea(
            bounds=RichMenuBounds(x=1278, y=0, width=1211, height=864),
            action=PostbackAction(data='deadline')
        ),
        RichMenuArea(
            bounds=RichMenuBounds(x=0, y=864, width=1268, height=818),
            action=PostbackAction(data="not_submitted")
        ),
        RichMenuArea(
            bounds=RichMenuBounds(x=1273, y=877, width=1227, height=805),
            action=PostbackAction(data="forget")
        )
    ]
)

引数の詳細は以下になります。

size

全体のサイズを設定できます。widthは幅、heightは高さを表します。

リッチメニューの画像は以下の要件を満たす必要があります。

・画像フォーマット:JPEGまたはPNG

・画像の幅サイズ(ピクセル):800以上、2500以下

・画像の高さサイズ(ピクセル):250以上

・画像のアスペクト比(幅/高さ):1.45以上

・最大ファイルサイズ:1MB

リッチメニューを使う

sizeが2500×1686, 2500×843, 1200×810, 1200×405, 800×540, 800×270のみとなっている点に注意が必要です。

selected

デフォルトでリッチメニューを表示するならTrueにしましょう。

name

ユーザには表示されないリッチメニューの名前です。リッチメニューの管理に役立ちます。

chat_bar_text

チャットバーに表示されるテキストです。

クロネコヤマトのLINEならこの部分のことです。

areas

タップ領域の座標とサイズを定義します。

座標を決めよう

リッチメニューを作るためにはareasの部分で座標を決めなくてはいけません。

目視でやっていってもいいですがもっと簡単な方法があります。

それは「Line Bot Designer」を利用することです。

ダウンロードが完了してプロジェクトを作成するとこのような画面が開きます。

次に画面にあるリッチメニューの右にある+を押してください。

するとこのようになるので、リッチメニューに設置したい画像をプロパティの画像からファイルを選択してください。

選択すると下の画像のようになっていると思います。

では、赤色の背景の賛成の範囲を調べてみます。

赤い四角の左上端をクリックしたまま右下隅までスライドさせて下さい。

そして手を離してみると下の画像のようになります。

また、先ほど指定した範囲がアクション1として登録されました。

ここでいう領域のx, y, 横, 縦が下記のコード部分のx, y, width, heightに対応しています。

bounds=RichMenuBounds(x=0, y=0, width=1252, height=1682)

青色の反対においても同じように座標を調べることができます。

Line Bot Designerでは他にもいろいろと機能があるので試してみることをお勧めします。

APIを呼び出そう

richMenuId = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create)

これでAPIを呼び出してリッチメニューを作成できます。

ですが、これだけでは画像がついていないただのリッチメニューなので次は画像をつけましょう。

画像をアップロードしよう

imageフォルダに入っているmenu.pngファイルをリッチメニューの画像としてアップロードします。

“image/png”の部分であるContent-Typeは image/pngとimage/jpegの二種類の拡張子に対応しています。

with open("image/menu.png", 'rb') as f:
    line_bot_api.set_rich_menu_image(richMenuId, "image/png", f)

これで画像のアップロードも完了しました。

リッチメニューを設置しよう

では作ったリッチメニューを設置してみましょう。

登録したすべてのユーザにリッチメニューを設置する

line_bot_api.set_default_rich_menu(richMenuId)

一人のユーザにリッチメニューを設置する

line_bot_api.link_rich_menu_to_user(user_id, richMenuId)

複数のユーザにリッチメニューを設置する

line_bot_api.link_rich_menu_to_users(user_ids, richMenuId)

user_idsはリストで複数のユーザを指定することができます。

リッチメニューを解除しよう

リッチメニューを解除することもできます。

一人のユーザのリッチメニューを解除する

line_bot_api.unlink_rich_menu_from_user(user_id)

複数のユーザのリッチメニューを解除する

line_bot_api.unlink_rich_menu_from_users(user_ids)

user_idsはリストで複数のユーザを指定することができます。

リッチメニューを取得

リッチメニューをリストで取得できます。

rich_menu_list = line_bot_api.get_rich_menu_list()

リッチメニューを削除

リッチメニューを削除できます。

line_bot_api.delete_rich_menu(rich_menu.rich_menu_id)

リッチメニューをすべて削除

リッチメニューをすべて削除するためのコードです。

import time
rich_menu_ids = [rich_menu.rich_menu_id for rich_menu in line_bot_api.get_rich_menu_list()]
for rich_menu_id in rich_menu_ids:
  time.sleep(3)
  line_bot_api.delete_rich_menu(rich_menu_id)

最後

まだ分からないことがある方は「Lineの公式サイト」を見ることをお勧めします。

クイックリプライの作り方
あわせて読みたい
【LINE Messaging API】Pythonでクイックリプライを簡単に作成!クイックリプライを使った簡単なLINEbot... 何かと便利なクイックリプライをpythonで作る方法を説明します。また、クイックリプライを使った簡単なじゃんけんbotを作ったので参考にしてください。では、さっそくクイックリプライの簡単な作成方法を解説します。
カルーセルメッセージの作り方
あわせて読みたい
【LINE Messaging API】Pythonでカルーセルメッセージは簡単に作れる!10個より多く表示させたい場合... 皆さんはカルーセルメッセージをどのように使っているでしょうか。例えば、なにか検索した結果をラインで表示できるようにするために使うなど様々な使い方がありますよね。ではさっそく基本的なPythonでカルーセルメッセージを作成していきます。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次