def create_rich_menu(): result = False try: # define a new rich menu rich_menu_to_create = RichMenu( size=RichMenuSize(width=1200, height=405), selected=True, name='RichMenu for j-bot', chat_bar_text='TAP HERE', areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=500, height=405), action=URIAction( label='Open Google Map', uri='https://www.google.co.jp/maps/?hl=ja')), RichMenuArea(bounds=RichMenuBounds(x=480, y=0, width=700, height=405), action=MessageAction(text='Menu 2')) ]) rich_menu_id = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) # upload an image for rich menu path = '../static/rich_menu/rich_menu_sample.png' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id, "image/png", f) # set the default rich menu line_bot_api.set_default_rich_menu(rich_menu_id) result = True except Exception: result = False return result
def create_richmenuid(line_bot_api, rich_menu_name): ''' Create rich menu & Upload rich menu image rich_menu_name: 填入要新增的 圖文選單 新增一個執行一次就好,不然 ID 會有很多個 ''' # Create rich menu and get ID lineRichMenuId = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict( json.load( open('material/' + rich_menu_name + '/rich_menu.json', 'r', encoding='utf8')))) print('Rich Menu ID:', lineRichMenuId) # record rich menu ID with open('material/' + rich_menu_name + '/rich_menu_id', 'w', encoding='utf8') as f: f.write(lineRichMenuId) # Upload rich menu image setImageResponse = '' with open('material/' + rich_menu_name + '/rich_menu.png', 'rb') as f: setImageResponse = line_bot_api.set_rich_menu_image( lineRichMenuId, 'image/png', f) print('Upload Result: ', setImageResponse) return lineRichMenuId
def generate_rich_menu_id(): rich_menu_array = ['rich_menu_b'] from linebot.models import RichMenu for rich_menu_name in rich_menu_array: # 創建菜單,取得menuId lineRichMenuId = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict( json.load( open("素材/" + rich_menu_name + '/rich_menu.json', 'r', encoding='utf8')))) print("-設定檔上傳結果") print(lineRichMenuId) # id寫入本地端 f = open("素材/" + rich_menu_name + "/rich_menu_id", "w", encoding='utf8') f.write(lineRichMenuId) f.close() # 上傳照片至該id set_image_response = '' with open("素材/" + rich_menu_name + '/rich_menu.jpg', 'rb') as f: set_image_response = line_bot_api.set_rich_menu_image( lineRichMenuId, 'image/jpeg', f) print("-圖片上傳結果") print(set_image_response)
def setUp(self): self.tested = LineBotApi('channel_secret') self.rich_menu_id = 'richmenu-0000000000' self.user_id = 'userid' self.rich_menu = RichMenu( size=RichMenuSize( width=2500, height=1686 ), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBounds( x=0, y=0, width=833, height=843 ), URITemplateAction( uri='line://nv/location' ) ) ] )
def handle_follow(event): current_app.logger.debug("event: " + str(event)) rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="Nice richmenu", chat_bar_text="Tap here", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=2500, height=1686), action=URIAction(label='Go to line.me', uri='https://line.me')) ]) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) path = './rich_menu.jpg' content_type = 'image/jpeg' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id, content_type, f) line_bot_api.link_rich_menu_to_user('all', rich_menu_id) line_bot_api.reply_message(event.reply_token, TextSendMessage(text="follow"))
def createRichmenu(line_bot_api): result = False try: rich_menu_to_create = RichMenu( size=RichMenuSize(width=1000, height=688), selected=True, name='richmenu for randomchat', chat_bar_text='メニュー', areas=[ RichMenuArea(bounds=RichMenuBounds(x=434.5, y=184, width=555.5, height=248), action=MessageAction(text="Recipatorをはじめる")), ]) richMenuId = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) path = './images/menu.png' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(richMenuId, "image/png", f) # set the default rich menu line_bot_api.set_default_rich_menu(richMenuId) result = True except Exception: result = False return result
def handle_message(event): rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=843), selected=False, name="Nice richmenu", chat_bar_text="Tap here", areas=[RichMenuArea( bounds=RichMenuBounds(x=0, y=0, width=2500, height=1686), action=URIAction(label='Go to line.me', uri='https://line.me'))] ) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) print(rich_menu_id) with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id, "image/png", f) start = time() # texts = sc.get_message(event.message.text) texts = "広報ちゃんβは広報ちゃんに移行しました。\nこれからはこちらをご利用ください\n\nhttps://lin.ee/2bnkBnx\n\n{}".format(rich_menu_id) if sc.is_str(texts): line_bot_api.reply_message( event.reply_token, TextSendMessage(text=texts)) else: x = [] for t in texts: x.append(TextSendMessage(text=t)) line_bot_api.reply_message( event.reply_token, x ) elapsed_time = time() - start print("elapsed_time:{0}".format(elapsed_time) + "[秒]")
def create_rich_menu(): print("INFO: Creating rich menu") line_bot_api = LineBotApi(channel_access_token) display_text = str( capture_seconds) + "秒の録画が始まりました!\nスマホをしまっても大丈夫です。\n2分程たったら動画が届きます。" rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1204), selected=True, name="Nice richmenu", chat_bar_text="録画ボタン", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=2500, height=1408), action=PostbackAction(data=twitch_username, display_text=display_text)) ]) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) with open("record_button.png", 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id, 'image/png', f) line_bot_api.set_default_rich_menu(rich_menu_id) print("INFO: Finished creating rich menu")
def create_facebook_richmenu(line_bot_api, user_id): facebook_uri = "https://www.facebook.com/profile.php?id=100002433519943" ### Create one rich menu rich_menu_to_create = RichMenu(size=RichMenuBound(width=2500, height=1686), selected=False, name="Fabebook Page", chatBarText="Gift", areas=[ RichMenuArea( RichMenuBound(x=0, y=0, width=2000, height=1300), URITemplateAction(uri=facebook_uri)) ]) rich_menu_id = line_bot_api.create_rich_menu(rich_menu_to_create) ### Set image to rich_menu with open("dog.jpg", "rb") as f: pic = f.read() line_bot_api.set_rich_menu_image(rich_menu_id, "image/jpeg", pic) ### Link rich_menu_id and user_id line_bot_api.link_rich_menu_to_user(user_id, rich_menu_id) ### Console print( "[Create] The facebook rich menu is created and linked to the user_id = {}" .format(user_id))
def create_rich_menu(): rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="pocket_health", chat_bar_text="服務選單", areas=[ RichMenuArea( bounds=RichMenuBounds(x=0, y=0, width=1250, height=843), action=PostbackAction(label='postback', data='richmenu_chronic')), RichMenuArea( bounds=RichMenuBounds(x=1250, y=0, width=1250, height=843), action=PostbackAction(label='postback', data='richmenu_goodbody')), RichMenuArea( bounds=RichMenuBounds(x=0, y=843, width=1250, height=843), action=PostbackAction(label='postback', data='richmenu_health')), RichMenuArea( bounds=RichMenuBounds(x=1250, y=843, width=1250, height=843), action=PostbackAction(label='postback', data='richmenu_supply')) ] ) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) print(rich_menu_id) with open("rich-menu-id.txt", "a+") as fp: fp.write(rich_menu_id)
def get_menu(self, index=MAIN_MENU): login_kwargs = {'eid': self.line_channel_membership.url_safe_uuid} return RichMenu( size=RichMenuSize(width=1000, height=315), selected=True, name="Menu", chat_bar_text="Start", areas=[ RichMenuArea( bounds=RichMenuBounds(x=15, y=8, width=300, height=300), action=PostbackAction(label='Call', data='action=place_call') # action=URIAction(label='Call', uri=f'tel:{self.line_channel.shop.contact_phone_number}') ), RichMenuArea( bounds=RichMenuBounds( x=300 + 33 + 15, y=8, width=300, height=300), action=URIAction( label='Order', uri= f'https://{HOSTNAME}{self.shop.menu.get_absolute_url()}?{urlencode(login_kwargs)}' )), RichMenuArea( bounds=RichMenuBounds( x=600 + 67 + 15, y=8, width=300, height=300), action=URIAction( label='Preferences', uri= f'https://{HOSTNAME}{self.shop.get_absolute_url()}?{urlencode(login_kwargs)}' )), ])
def generate_rich_menu(request: HttpRequest) -> HttpResponse: rich_menu = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name="Nice richmenu", chat_bar_text="點擊選單", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=833, height=843), action=URIAction( label='我要預約', uri='https://liff.line.me/1654335010-n02repwV', )), RichMenuArea(bounds=RichMenuBounds(x=0, y=843, width=833, height=843), action=PostbackAction( label='查詢預約', text='查詢預約', data='check_reservation', )), RichMenuArea(bounds=RichMenuBounds(x=833, y=843, width=833, height=843), action=PostbackAction( label='課程介紹', text='課程介紹', data='introduce_course', )), RichMenuArea(bounds=RichMenuBounds(x=1666, y=843, width=833, height=843), action=PostbackAction( label='常見問題', text='常見問題', data='common_questions', )), RichMenuArea(bounds=RichMenuBounds(x=1666, y=0, width=833, height=843), action=URIAction( label='諮詢客服', uri='http://line.me/ti/p/@t0927899899')) ]) rich_menu_id = line_bot_api.create_rich_menu(rich_menu) with open('/home/hsintian/linebot/rich_menu.png', 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id, 'image/png', f) return HttpResponse("<h1 style='color:blue'>rich_menu: " + rich_menu_id + "</h1>")
def test_rich_menu_with_switch_action(self): rich_menu = RichMenu(size=RichMenuSize(width=2500, height=1686), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBounds(x=0, y=0, width=833, height=843), RichMenuSwitchAction( rich_menu_alias_id="richmenu-alias-a", data="richmenu-changed-to-a")) ]) responses.add(responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu', json={ "richMenuId": "rich_menu_id", "size": { "width": 2500, "height": 1686 }, "selected": False, "name": "name", "chatBarText": "chatBarText", "areas": [{ "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "richmenuswitch", "richMenuAliasId": "richmenu-alias-a", "data": "richmenu-changed-to-a" } }] }, status=200) result = self.tested.create_rich_menu(rich_menu) print(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual(request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu') self.assertEqual(result, "rich_menu_id")
def process_follow_event(event): # 讀取並轉換 result_message_array = [] replyJsonPath = "material/Follow/reply.json" result_message_array = detect_json_array_to_new_message_array(replyJsonPath) # 消息發送 line_bot_api.reply_message( event.reply_token, result_message_array ) menuJson = json.load(open('./material/rich_menu/rich_menu.json', 'r', encoding='utf-8')) # 設定圖文選單功能 lineRichMenuId = line_bot_api.create_rich_menu(rich_menu=RichMenu.new_from_json_dict(menuJson)) print(lineRichMenuId) uploadImageFile = open("./material/rich_menu/rich_menu.jpg", 'rb') # 設定圖文選單圖片 setImageResponse = line_bot_api.set_rich_menu_image(lineRichMenuId, 'image/jpeg', uploadImageFile) linkResult = line_bot_api.link_rich_menu_to_user(self_user_id, lineRichMenuId) # 取出消息內User的資料 user_profile = line_bot_api.get_profile(event.source.user_id) # 將用戶資訊存在檔案內 # with open("./users.txt", "a") as myfile: # myfile.write(json.dumps(vars(user_profile), sort_keys=True)) # myfile.write('\n') user_id = str(event.source.user_id) print(user_id) select_userid = ''' SELECT userid from line_bot_db.lineuser; ''' print(type(db.engine.execute(select_userid).fetchall())) try: if user_id not in select_userid: sql2 = f'''INSERT INTO line_bot_db.user_linebot_record(userid) VALUES ("{user_id}");''' db.engine.execute(sql2) sql1 = f'''INSERT INTO line_bot_db.lineuser(userid) VALUES ("{user_id}"); ''' db.engine.execute(sql1) except Exception: pass # 將菜單綁定在用戶身上 line_bot_api.link_rich_menu_to_user(user_id, lineRichMenuId)
def createRichmenu(event, context): # LineBotAPIオブジェクトを作成する token = os.getenv('LINE_ACCESS_TOKEN') line_bot_api = LineBotApi(token) result = False try: # define a new richmenu rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=843), selected=False, name='richmenu for Link', chat_bar_text='MENU', areas=[ RichMenuArea( bounds=RichMenuBounds(x=15, y=0, width=800, height=843), action=URIAction(uri='https://www.matsuokamayu.jp/') ), RichMenuArea( bounds=RichMenuBounds(x=845, y=0, width=800, height=843), action=URIAction(uri='https://twitter.com/hiratahirata14/') ), RichMenuArea( bounds=RichMenuBounds(x=1660, y=0, width=800, height=843), action=URIAction( uri='https://www.instagram.com/mayu_matsuoka_koushiki/') ) ] ) richMenuId = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) # upload an image for rich menu path = './images/rich_image.jpg' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(richMenuId, "image/png", f) # set the default rich menu line_bot_api.set_default_rich_menu(richMenuId) result = True except Exception: result = False return result
def get_rich_menu(): result = False width = 2500 height = 1686 try: # define a new richmenu rich_menu_to_create = RichMenu( size=RichMenuSize(width=width, height=height), selected=True, name='richmenu', chat_bar_text='メニュー', areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=height, height=height), action=PostbackAction(label='ストーリーをすすめる', data='next_step')), RichMenuArea(bounds=RichMenuBounds(x=height, y=0, width=width - height, height=height / 2), action=PostbackAction(label='中止', data='stop')), RichMenuArea(bounds=RichMenuBounds(x=height, y=height / 2, width=width - height, height=height / 2), action=PostbackAction(label='投票', data='vote')) ]) richMenuId = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) # upload an image for rich menu path = settings.STATIC_ROOT + 'images/richmenu.jpeg' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(richMenuId, "image/jpeg", f) result = True except Exception: result = False print(richMenuId, 'richmenu-id result: ' + str(result))
def __create_richmenu(self): rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=True, name="dine_richmenu", chat_bar_text="BOT設定はここ!", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=1250, height=843), action=PostbackAction( data="delete_server", display_text="サーバーを消したいよ!")), RichMenuArea(bounds=RichMenuBounds(x=0, y=843, width=1250, height=1686), action=PostbackAction( data="setting_server", display_text="サーバーを設定したいよ!")), RichMenuArea(bounds=RichMenuBounds(x=1250, y=0, width=2500, height=843), action=PostbackAction( data="register_server", display_text="サーバを登録したいよ!")), RichMenuArea(bounds=RichMenuBounds(x=1250, y=843, width=2500, height=1686), action=PostbackAction(data="select_server", display_text="サーバーを選びたいよ!")) ]) richMenuId = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) with open("picture/richmenu.png", 'rb') as f: line_bot_api.set_rich_menu_image(richMenuId, "image/png", f) line_bot_api.set_default_rich_menu(richMenuId)
def run(): rich_menu_array = [ 'rich_menu_main', 'rich_menu_button_1', 'rich_menu_button_2', 'rich_menu_control', 'rich_menu_control_1' ] for i in range(1, 13): c = 'rich_menu_{}'.format(i) rich_menu_array.append(c) for rich_menu_name in rich_menu_array: lineRichMenuId = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict( json.load( open('image_trpg_elevator/rich_menu/{}/{}.json'.format( rich_menu_name, rich_menu_name), 'r', encoding='utf-8')))) print('設定上傳結果') print(lineRichMenuId) f = open('image_trpg_elevator/rich_menu/{}/rich_menu_id'.format( rich_menu_name), 'w', encoding='utf-8') f.write(lineRichMenuId) f.close() with open( 'image_trpg_elevator/rich_menu/{}/{}.jpg'.format( rich_menu_name, rich_menu_name), 'rb') as f: set_image_response = line_bot_api.set_rich_menu_image( lineRichMenuId, 'image/jpeg', f) print('圖片上傳結果') print(set_image_response) # run() # rich_menu_list = line_bot_api.get_rich_menu_list() # for rich_menu in rich_menu_list: # line_bot_api.delete_rich_menu(rich_menu.rich_menu_id)
def setRichMenu(): try: rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=843), selected=False, name="用愛發財", chat_bar_text="用愛發財選單", areas=[ RichMenuArea( bounds=RichMenuBounds(x=0, y=0, width=833, height=843), action=PostbackAction( label='history', display_text='查看投資歷史績效', data='action=history&itemid=1' ) ), RichMenuArea( bounds=RichMenuBounds(x=833, y=0, width=833, height=843), action=URIAction(label="Go to Investment", uri="http://192.168.43.19:8080/auth") ), RichMenuArea( bounds=RichMenuBounds(x=1666, y=0, width=833, height=843), action=URIAction(label="Go to line.me", uri="https://line.me") ) ] ) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) content_type = "image/png" with open("./images/richmenu.jpg", "rb") as f: print(f) line_bot_api.set_rich_menu_image(rich_menu_id, content_type, f) line_bot_api.set_default_rich_menu(rich_menu_id) return jsonify({ "id": rich_menu_id, "description": "richMenu setted." }), 200 except Exception as e: print(e) return jsonify({ "description": "Server Error." }), 500
def NonStopObj(file): rich_menu_to_create = RichMenu( size=RichMenuSize(width=800, height=270), selected=True, name="Sample RichMenu", chat_bar_text="不具合などがある場合", areas=[RichMenuArea( bounds=RichMenuBounds(x=0, y=0, width=800, height=270), action= PostbackAction( label='不具合の報告・意見', display_text='不具合の報告・意見があります', data="action=report" ) )] ) rich_menu_id = line_bot_api.create_rich_menu(rich_menu=rich_menu_to_create) print(rich_menu_id) with open (file, 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id,'image/png',f) line_bot_api.set_default_rich_menu(rich_menu_id) return
def test_create_rich_menu(self): responses.add( responses.POST, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu', json={"richMenuId": "richMenuId"}, status=200 ) rich_menu = RichMenu( size=RichMenuSize( width=2500, height=1686 ), selected=False, name="nice richmenu", chatBarText="touch me", areas=[ RichMenuArea( RichMenuBounds( x=0, y=0, width=833, height=843 ), URITemplateAction( uri='line://nv/location' ) ) ] ) result = self.tested.create_rich_menu(rich_menu) request = responses.calls[0].request self.assertEqual(request.method, 'POST') self.assertEqual( request.url, LineBotApi.DEFAULT_API_ENDPOINT + '/v2/bot/richmenu' ) self.assertEqual(result, "richMenuId")
def create_affiliation_menu(): affiliation_menu = RichMenu( size=RichMenuSize(width=2500, height=843), selected=True, name='affiliation', chat_bar_text='学年・学科を設定', areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=2500, height=843), action=PostbackAction(label='affiliation', data='affiliation')) ]) affiliation_id = line_bot_api.create_rich_menu(rich_menu=affiliation_menu) with open('static/affiliation.png', 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_id=affiliation_id, content_type='image/png', content=f) line_bot_api.set_default_rich_menu(affiliation_id)
from linebot.models import RichMenu, RichMenuSize, RichMenuBounds, RichMenuArea, DatetimePickerAction, MessageAction import datetime milk_rich_menu = RichMenu( size=RichMenuSize(width=2500, height=843), selected=True, name="milk rich menu", chat_bar_text="Open Menu", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=1617, height=843), action=DatetimePickerAction(data="action=calc_month", mode="date", initial=str( datetime.date.today()))), RichMenuArea(bounds=RichMenuBounds(x=1617, y=0, width=2500 - 1617, height=843), action=MessageAction(text="ミス")), ])
rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=True, name="圖文選單 1", chat_bar_text="查看快捷鍵", areas=[ RichMenuArea( bounds=RichMenuBounds(x=0, y=0, width=854, height=843), action=URIAction( label="呼叫助理", uri="https://liff.line.me/1654548127-50gGKZyE/Manager")), RichMenuArea( bounds=RichMenuBounds(x=854, y=0, width=854, height=843), action=URIAction( label="推薦行程", uri="https://liff.line.me/1654548127-50gGKZyE/Travel")), RichMenuArea( bounds=RichMenuBounds(x=1707, y=0, width=854, height=843), action=URIAction( label="記帳小本本", uri="https://liff.line.me/1654548127-50gGKZyE/Account")), RichMenuArea(bounds=RichMenuBounds(x=0, y=843, width=854, height=843), action=MessageAction(label="天氣及空氣品質", text="天氣及空氣品質")), RichMenuArea(bounds=RichMenuBounds(x=854, y=843, width=854, height=843), action=MessageAction(label="油價", text="油價")), RichMenuArea(bounds=RichMenuBounds(x=1707, y=843, width=854, height=843), action=MessageAction(label="message", text="幫助")) ])
"x": 1763, "y": 848, "width": 545, "height": 520 }, "action": { "type": "postback", "data": '{"kind":"menu","level":"%d","choice":"%d","item":"%d"}' % (0, 6, 0) } }] } rich_menu_list = line_bot_api.get_rich_menu_list() if rich_menu_list: print('rich_menu_list', rich_menu_list) line_bot_api.delete_rich_menu(line_bot_api.get_default_rich_menu()) else: myRichMenu_Id = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict(rich_menu_initial)) print('myRichMenu_Id:', myRichMenu_Id) uploadImageFile = open('D:/rich_menu_forallusers.jpg', 'rb') setImageResponse = line_bot_api.set_rich_menu_image( myRichMenu_Id, 'image/jpeg', uploadImageFile) if setImageResponse: print('setImageResponse:', setImageResponse) setImageResponse = line_bot_api.set_default_rich_menu(myRichMenu_Id) default_rich_menu = line_bot_api.get_default_rich_menu() print('default_rich_menu', default_rich_menu)
rich_menu_to_create = RichMenu( size=RichMenuSize(width=2500, height=1686), selected=False, name='richmenu for randomchat', # chat_bar_text = 'id_default', chat_bar_text="基幹科目等の検索はこちら", areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=93, width=675, height=750), action=PostbackAction(data="人間論")), RichMenuArea(bounds=RichMenuBounds(x=0, y=843, width=675, height=750), action=PostbackAction(data="人文科学")), RichMenuArea(bounds=RichMenuBounds(x=675, y=93, width=575, height=750), action=PostbackAction(data="自然論")), RichMenuArea(bounds=RichMenuBounds(x=675, y=843, width=575, height=750), action=PostbackAction(data="自然科学")), RichMenuArea(bounds=RichMenuBounds(x=1250, y=93, width=575, height=750), action=PostbackAction(data="社会論")), RichMenuArea(bounds=RichMenuBounds(x=1250, y=843, width=575, height=750), action=PostbackAction(data="社会科学")), RichMenuArea(bounds=RichMenuBounds(x=1825, y=93, width=675, height=750), action=PostbackAction(data="外国語")), RichMenuArea(bounds=RichMenuBounds(x=1825, y=843, width=675, height=750), action=PostbackAction(data="ヘルプ")) ])
line_bot_api = LineBotApi(channel_access_token) # 讀取選單 json、jpg,json 利用 Line bot Designer 設計出來 json_path_list = glob.glob(r'.\menu\*.json') jpg_path_list = glob.glob(r'.\menu\*.jpg') # 檔案上傳順序確認 print(json_path_list) print(jpg_path_list) # 依序上傳 for index in range(len(json_path_list)): print(f'上傳第 {index + 1} 組') # 創建菜單,取得 menuId try: lineRichMenuId = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict( json.load(open(json_path_list[index], 'r', encoding='utf8')))) print(lineRichMenuId) except: print('建立 json 失敗') # 上傳照片至該id try: with open(jpg_path_list[index], 'rb') as f: set_image_response = line_bot_api.set_rich_menu_image( lineRichMenuId, 'image/jpeg', f) except: print('上傳失敗') print('上傳完成')
def do_create(menus: Dict[Any, Any], img_type: str = "png", base_path: str = "./", write_to_file: bool = True, output_file_name: str = "rich_menu_result_id") -> Dict[str, str]: """ Create rich menu and set its image example menu dictionary image name: "awesomeImage.png" { "awesomeImage": { "size": { "width": 2500, "height": 1686 }, "selected": True, "name": "MyAwesomeRichMenu", "chatBarText": "Touch me!", "areas": [ { "bounds": { "x": 0, "y": 0, "width": 2500, "height": 1686 }, "action": { "type": "uri", "uri": "https://github.com/hackinteach" } } ] }, ... } :param base_path: directory that stores images :param menus: dictionary containing {"file_name" : {content from Line Bot Designer} :param img_type: "png" or "jpg" :param write_to_file: Should I write dict[menu_name, menu_id] to file :param output_file_name: output file name for id result :return: resulting dictionary of (name, id) for the created menus """ result_ids = dict() for filename, template in menus.items(): print("Processing", filename) try: m = RichMenu( size=RichMenuSize(width=template["size"]["width"], height=template["size"]["height"]), selected=False, # override from template name=template["name"], chat_bar_text=template["chatBarText"], areas=template["areas"]) menu_id = api.create_rich_menu(rich_menu=m) print(template["name"], "->", menu_id) result_ids[template["name"]] = menu_id with open(path.join(base_path, f"{filename}.{img_type}"), "rb") as img_file: api.set_rich_menu_image(rich_menu_id=menu_id, content_type=f"image/{img_type}", content=img_file) print("===" * 10) except Exception as e: print(e) continue print("results:", result_ids) if write_to_file: if ".json" not in output_file_name: output_file_name += ".json" json.dump(result_ids, open(output_file_name, "w")) return result_ids
def main(): # 2. Create rich menu A (richmenu-a) rich_menu_object_a = rich_menu_object_a_json() areas = [ RichMenuArea(bounds=RichMenuBounds(x=info['bounds']['x'], y=info['bounds']['y'], width=info['bounds']['width'], height=info['bounds']['height']), action=create_action(info['action'])) for info in rich_menu_object_a['areas'] ] rich_menu_to_a_create = RichMenu(size=RichMenuSize( width=rich_menu_object_a['size']['width'], height=rich_menu_object_a['size']['height']), selected=rich_menu_object_a['selected'], name=rich_menu_object_a['name'], chat_bar_text=rich_menu_object_a['name'], areas=areas) rich_menu_a_id = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_a_create) # 3. Upload image to rich menu A with open('./public/richmenu-a.png', 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_a_id, 'image/png', f) # 4. Create rich menu B (richmenu-b) rich_menu_object_b = rich_menu_object_b_json() areas = [ RichMenuArea(bounds=RichMenuBounds(x=info['bounds']['x'], y=info['bounds']['y'], width=info['bounds']['width'], height=info['bounds']['height']), action=create_action(info['action'])) for info in rich_menu_object_b['areas'] ] rich_menu_to_b_create = RichMenu(size=RichMenuSize( width=rich_menu_object_b['size']['width'], height=rich_menu_object_b['size']['height']), selected=rich_menu_object_b['selected'], name=rich_menu_object_b['name'], chat_bar_text=rich_menu_object_b['name'], areas=areas) rich_menu_b_id = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_b_create) # 5. Upload image to rich menu B with open('./public/richmenu-b.png', 'rb') as f: line_bot_api.set_rich_menu_image(rich_menu_b_id, 'image/png', f) # 6. Set rich menu A as the default rich menu line_bot_api.set_default_rich_menu(rich_menu_b_id) # 7. Create rich menu alias A alias_a = RichMenuAlias(rich_menu_alias_id='richmenu-alias-a', rich_menu_id=rich_menu_a_id) line_bot_api.create_rich_menu_alias(alias_a) # 8. Create rich menu alias B alias_b = RichMenuAlias(rich_menu_alias_id='richmenu-alias-b', rich_menu_id=rich_menu_b_id) line_bot_api.create_rich_menu_alias(alias_b) print('success')
if os.path.isdir(rich_menu_path): anything = os.listdir(rich_menu_path) file_path = '' jpg_path = '' for file in anything: if file == 'rich_menu.json': file_path = os.path.join(rich_menu_path, file) elif file == 'rich_menu.jpg': jpg_path = os.path.join(rich_menu_path, file) with open(file_path, 'r') as f: rich_menu_json = json.loads(f.read()) # 創建菜單,取得menuId lineRichMenuId = line_bot_api.create_rich_menu( rich_menu=RichMenu.new_from_json_dict(rich_menu_json)) print('設定檔上傳結果') print(lineRichMenuId) #id寫入指定資料夾端 id_folder = os.path.join(rich_menu_path, 'rich_menu_id.txt') with open(id_folder, 'w') as rich_id: rich_id.write(lineRichMenuId) # 上傳照片至該menu-id with open(jpg_path, 'rb') as f: set_image_response = line_bot_api.set_rich_menu_image( lineRichMenuId, 'image/jpeg', f) print("-圖片上傳結果") print(set_image_response)