Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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)
Esempio n. 4
0
    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'
                    )
                )
            ]
        )
Esempio n. 5
0
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"))
Esempio n. 6
0
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
Esempio n. 7
0
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))
Esempio n. 10
0
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)
Esempio n. 11
0
    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)}'
                    )),
            ])
Esempio n. 12
0
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")
Esempio n. 14
0
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)
Esempio n. 15
0
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
Esempio n. 16
0
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))
Esempio n. 17
0
    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)
Esempio n. 18
0
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)
Esempio n. 19
0
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
Esempio n. 20
0
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 
Esempio n. 21
0
    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")
Esempio n. 22
0
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)
Esempio n. 23
0
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="ミス")),
    ])
Esempio n. 24
0
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="幫助"))
    ])
Esempio n. 25
0
            "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)
Esempio n. 26
0
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="ヘルプ"))
    ])
Esempio n. 27
0
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('上傳完成')
Esempio n. 28
0
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
Esempio n. 29
0
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')
Esempio n. 30
0
        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)