Esempio n. 1
0
def handle_location_message(event):
    line_bot_api.reply_message(
        event.reply_token,
        LocationSendMessage(title='Location',
                            address=event.message.address,
                            latitude=event.message.latitude,
                            longitude=event.message.longitude))
Esempio n. 2
0
def istockSearch(event):

    try:

        search_key_word = {'family': 'creative', 'phrase': event.message.text}
        url = f"https://www.istockphoto.com/search/2/image?{urllib.parse.urlencode(search_key_word)}"
        header = {
            'User-Agent':
            'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0'
        }
        req = urllib.request.Request(url, headers=header)
        conn = urllib.request.urlopen(req)
        data = conn.read()
        template = 'src="(https://media.*?)"'
        image_list = []

        for i in re.finditer(template, str(data, 'utf-8')):
            image_list.append(re.sub('amp;', '', i.group(1)))

        random_image_url = image_list[random.randint(0, len(image_list) + 1)]

        line_bot_api.reply_message(
            event.reply_token,
            ImageSendMessage(original_content_url=random_image_url,
                             preview_image_url=random_image_url))

        return True
    except:
        return False
Esempio n. 3
0
def handler_image_message(event):
    """[summary]

    Args:
        event ([type]): [line bot event-> pass img]        
    Func 1.
        get img msg and reply msg    
    Func 2.
        upload iamge to AWS S3 client
    Func 3. (optional)
        udpate image detail(uploader id, image_path) to db         
    """
    # Step 1. Get message_id
    message_content = line_bot_api.get_message_content(event.message.id)
    file_name = f"{event.message.id }.jpg"

    # write iamge by message content (from user sent)
    with open(file_name, "wb") as fd:
        for chunk in message_content.iter_content():
            fd.write(chunk)

    line_bot_api.reply_message(
        event.reply_token,
        [
            TextSendMessage(text=f"Image saved ! {file_name}"),
        ],
    )
Esempio n. 4
0
def handle_content_message(event):
    if isinstance(event.message, ImageMessage):
        ext = 'jpg'
    elif isinstance(event.message, VideoMessage):
        ext = 'mp4'
    elif isinstance(event.message, AudioMessage):
        ext = 'm4a'
    else:
        return

    message_content = line_bot_api.get_message_content(event.message.id)
    with tempfile.NamedTemporaryFile(dir=static_tmp_path,
                                     prefix=ext + '-',
                                     delete=False) as tf:
        for chunk in message_content.iter_content():
            tf.write(chunk)
        tempfile_path = tf.name

    dist_path = tempfile_path + '.' + ext
    dist_name = os.path.basename(dist_path)
    os.rename(tempfile_path, dist_path)

    line_bot_api.reply_message(event.reply_token, [
        TextSendMessage(text='Save content.'),
        TextSendMessage(text=request.host_url +
                        os.path.join('static', 'tmp', dist_name))
    ])
Esempio n. 5
0
def location_handler(event):    
    from app.service.user_service import udpate_location
    res = udpate_location(event)
    print(res)
    line_bot_api.reply_message( 
        event.reply_token,
        TextSendMessage(text="已更新您的位置 !"))
Esempio n. 6
0
def query_menu(event):
    if '菜單查詢' in event.message.text:
        line_bot_api.reply_message(
            event.reply_token,
            FlexSendMessage(alt_text='query record: index',
                            contents=flexmessages.flex_index()))
        return True
    else:
        return False
Esempio n. 7
0
def echo(event):
    # user id 在 Line Developers / Basic Setting 下
    if event.source.user_id == "user id":

        display_message = '你後面那位也想聽'

        if event.message.text == "tux來一個鬼故事":
            response_message = display_message

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=response_message))
Esempio n. 8
0
def handle_sticker_message(event):
    # ref. https://developers.line.me/media/messaging-api/sticker_list.pdf
    sticker_ids = [
        1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 21, 100,
        101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
        115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
        129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 401, 402
    ]
    index_id = random.randint(0, len(sticker_ids) - 1)
    sticker_id = str(sticker_ids[index_id])

    sticker_message = StickerSendMessage(package_id='1', sticker_id=sticker_id)
    line_bot_api.reply_message(event.reply_token, sticker_message)
Esempio n. 9
0
def handle_follow(event):
    if isinstance(event.source, SourceUser):
        profile = line_bot_api.get_profile(event.source.user_id)
        response = login(event.source.user_id)
        if (response):
            print(profile)
        else:
            print("login failed")
        url = 'https://i.imgur.com/vi9vaYc.jpg'
        app.logger.info("url=" + url)
        bubble_string = flexObj.profile
        message = FlexSendMessage(alt_text="關於作者",
                                  contents=json.loads(bubble_string))
        line_bot_api.reply_message(event.reply_token, message)
Esempio n. 10
0
def replyText(event):
    if event.source.user_id == "Uf4a596a6eb65eabf52c003ffe325a21d":
        try:
            img_url = google_search(event.message.text)
            print(img_url)
            line_bot_api.reply_message(
                event.reply_token,
                ImageSendMessage(original_content_url=img_url,
                                 preview_image_url=img_url))

        except:
            #hello_text = echo(event.message.text)
            line_bot_api.push_message('Uf4a596a6eb65eabf52c003ffe325a21d',
                                      TextSendMessage(text='沒找到'))
Esempio n. 11
0
def showData(event):
    if '菜單' in event.message.text:
        data = connectDB.showallMenu()
        print_text = ""
        for i in data:
            print_text += str(i[1])
            print_text += str(i[2])
            print_text += "\n"

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=print_text))

        return True
    else:
        return False
Esempio n. 12
0
def handle_image_message(event):
    #     請line_bot_api把圖片從line抓回來,儲存到本地端
    #     圖片名字以消息的id做命名
    #      line_bot_api get message content line-bot-sdk
    message_content = line_bot_api.get_message_content(event.message.id)
    file_name = event.message.id + '.jpg'
    # file_message = event.message.id + '.txt'
    with open(file_name, 'wb') as fd:
        for chunk in message_content.iter_content():
            fd.write(chunk)
#  請line_bot_api回復用戶,說圖片已儲存 最多五則回覆
#  line_bot_api reply TextSendMessage
    line_bot_api.reply_message(event.reply_token, [
        TextSendMessage(text="圖片已儲存,檔名為   " + file_name),
        TextSendMessage(text="感謝您提供圖片資訊。")
    ])
Esempio n. 13
0
def shareProfileMessage(event):
    username = event.message.text.split(" ")[2]
    response = requests.get("https://api.github.com/users/{}".format(username))
    data = response.json()
    app.logger.info(data)
    if response.status_code == 200:
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text=
                "fullName = {}\ncompany = {}\nlocation = {}\nfollowers = {}\nfollowing = {}\npublic repo = {}\npublic gist = {}\n"
                .format(data['name'], data['company'], data['location'],
                        data['followers'], data['following'],
                        data['public_repos'], data['public_gists'])))
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="Tidak ditemukan"))
Esempio n. 14
0
def echo(event):
    # user id 在 Line Developers / Basic Setting 下
    if event.source.user_id == "Uf4a596a6eb65eabf52c003ffe325a21d":

        replay = False

        if not replay:
            reply = flextalks.query_menu(event)

        if not replay:
            reply = callData.showData(event)

        if not replay:
            replay = istock.istockSearch(event)

        if not replay:
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text=event.message.text))
Esempio n. 15
0
def handle_file_message(event):
    message_content = line_bot_api.get_message_content(event.message.id)
    with tempfile.NamedTemporaryFile(dir=static_tmp_path,
                                     prefix='file-',
                                     delete=False) as tf:
        for chunk in message_content.iter_content():
            tf.write(chunk)
        tempfile_path = tf.name

    dist_path = tempfile_path + '-' + event.message.file_name
    dist_name = os.path.basename(dist_path)
    os.rename(tempfile_path, dist_path)

    line_bot_api.reply_message(event.reply_token, [
        TextSendMessage(text='Save file.'),
        TextSendMessage(text=request.host_url +
                        os.path.join('static', 'tmp', dist_name))
    ])
Esempio n. 16
0
def phase_intermediate(event):

    color_dict = {
        'red': '紅',
        'orange': '橙',
        'yellow': '黃',
        'green': '綠',
        'blue': '藍',
        'purple': '紫'
    }
    reply_dict = {
        'mode': '[2/4] 今晚,繼續來點雙色打光!\n請選擇色彩變化梯度:',
        'gradient_factor': '[3/4] 今晚,還想來點雙色打光!\n請選擇第一道色彩:',
        'first_tone': '[4/4] 今晚,最後來點雙色打光!\n請選擇第二道色彩:'
    }
    quick_button_dict = {
        'mode': [
            QuickReplyButton(action=PostbackAction(
                label=i, display_text=f'變化梯度:{i}',
                data=f'gradient_factor={i}')) for i in (5, 10, 50, 100)
        ],
        'gradient_factor': [
            QuickReplyButton(action=PostbackAction(
                label=j, display_text=f'第一道色彩:{j}', data=f'first_tone={i}'))
            for i, j in color_dict.items()
        ],
        'first_tone': [
            QuickReplyButton(action=PostbackAction(
                label=j, display_text=f'第二道色彩:{j}', data=f'second_tone={i}'))
            for i, j in color_dict.items()
        ]
    }

    user_id = event.source.user_id
    postback_data = event.postback.data
    current_phase = postback_data.split('=')[0]

    CallDatabase.update_record(user_id, current_phase,
                               postback_data.split('=')[1])
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(
            text=reply_dict[current_phase],
            quick_reply=QuickReply(items=quick_button_dict[current_phase])))
Esempio n. 17
0
def handle_join(event):    
    
    profile=line_bot_api.get_profile(event.source.user_id)
    opening_text = f"👋👋👋👋 {profile.display_name} 您好\n\
為了您有更好的系統體驗, 是否傳送您目前的居住位置呢 \
    " 
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text=opening_text,
                quick_reply=QuickReply(items=[
                    QuickReplyButton(action=MessageAction(label="否, 下次再傳送", text="否, 下次再傳送")),                    
                    QuickReplyButton(action=LocationAction(label="是的, 我很願意有更好的體驗"))
                ],
            )
        )
    )
  

    
Esempio n. 18
0
def phase_start(event):
    CallDatabase.init_table()
    if CallDatabase.check_record(event.source.user_id):
        _ = CallDatabase.update_record(event.source.user_id, 'message_id',
                                       event.message.id)
    else:
        _ = CallDatabase.init_record(event.source.user_id, event.message.id)

    mode_dict = {
        'blend': '線性疊圖',
        'composite': '濾鏡疊圖',
        'composite_invert': '反式濾鏡疊圖'
    }

    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(
            text=f"[1/4] 今晚,我想來點雙色打光!\n請選擇雙色打光模式:",
            quick_reply=QuickReply(items=[
                QuickReplyButton(action=PostbackAction(
                    label=j, display_text=f'打光模式:{j}', data=f'mode={i}'))
                for i, j in mode_dict.items()
            ])))
Esempio n. 19
0
def query_menu_back(event):
    query = event.postback.data
    print(query)
    if '=' in query:
        print(query.split('=')[1])
        data = connectDB.queryItem(query.split('=')[1])
        menu_name = [i[2] for i in data]
        line_bot_api.reply_message(
            event.reply_token,
            FlexSendMessage(alt_text=f"query record: column {query}",
                            contents=flexmessages.flex_menu_prize(
                                query, menu_name)))
        return True
    elif '菜單' in query:
        data = connectDB.showallMenu()
        menu_name = [i[1] for i in data]
        line_bot_api.reply_message(
            event.reply_token,
            FlexSendMessage(alt_text=f"query record: column {query}",
                            contents=flexmessages.flex_menu(query, menu_name)))
        return True
    else:
        return False
Esempio n. 20
0
def phase_finish(event):
    user_id = event.source.user_id
    postback_data = event.postback.data
    current_phase = postback_data.split('=')[0]

    record = CallDatabase.update_record(user_id, current_phase,
                                        postback_data.split('=')[1])

    message_content = line_bot_api.get_message_content(record[1])

    print('Getting image...')
    im = AlmaRenders.get_image(message_content, event.reply_token)

    print('Running dual tone...')
    mode = record[2]
    gradient_factor = int(record[3])
    first_tone = record[4]
    second_tone = record[5]
    im_dual_tone = AlmaRenders.dual_tone_run(im, mode, gradient_factor,
                                             first_tone, second_tone)

    print('Saving image...')
    im_url = AlmaRenders.save_image(im_dual_tone, event.reply_token)

    auth_link = AlmaNotify.create_auth_link(user_id)

    reply_template = f"雙色打光模式:{mode}\n色彩變化梯度:{gradient_factor}\n第一道色彩:{first_tone}\n第二道色彩:{second_tone}\n"
    reply_template += '👉您的雙色打光將由 LINE Notify 送達。若尚未連動,請連動之後再次下單,謝謝!\n'
    reply_template += f'👉連動網址:\n{auth_link}'

    line_bot_api.reply_message(event.reply_token,
                               TextSendMessage(text=reply_template))

    record = CallDatabase.notify_get_token(user_id)
    if record:
        access_token = record[1]
        AlmaNotify.send_message(user_id, access_token, im_url)
Esempio n. 21
0
def showData(event):

    if '新增菜單' in event.message.text:
        input_str = event.message.text
        manu = input_str.split(':')
        data = connectDB.addMenu(manu[1])
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='新增成功!'))
        return True
    elif '菜單' in event.message.text:
        data = connectDB.showallMenu()
        print_text = ""
        for i in data:
            print_text += str(i[1])
            print_text += str(i[2])
            print_text += "\n"

        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=print_text))

        return True

    else:
        return False
Esempio n. 22
0
def handle_message(event):

    if event.message.text == "否, 下次再傳送":
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text="謝謝您, 隨時歡迎更新位置"))

    elif event.message.text == "History of flooding area":
        line_bot_api.reply_message(
            event.reply_token,
            ImageSendMessage(
                original_content_url="https://i.imgur.com/DFkVFPU.png",
                preview_image_url="https://i.imgur.com/DFkVFPU.png"))
    elif event.message.text == "Damage level":
        line_bot_api.reply_message(
            event.reply_token,
            ImageSendMessage(
                original_content_url="https://i.imgur.com/MNms0NS.png",
                preview_image_url="https://i.imgur.com/MNms0NS.png"))
    elif event.message.text == "Disaster supply heat map":
        line_bot_api.reply_message(
            event.reply_token,
            ImageSendMessage(
                original_content_url="https://i.imgur.com/wY9Zssj.png",
                preview_image_url="https://i.imgur.com/wY9Zssj.png"))
Esempio n. 23
0
def handle_join(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text='Joined this ' + event.source.type))
Esempio n. 24
0
def unhandledMessage(event):
    line_bot_api.reply_message(
        event.reply_token, TextSendMessage(text="ini ma contoh aja ih!!!!"))
Esempio n. 25
0
def handle_postback(event):
    if event.postback.data.find("&") != -1:
        action = event.postback.data.split("&")[0][7:]
        taskId = event.postback.data.split("&")[1][7:]
        if (action == "startTask"):
            url, replyItems = startTask(event.source.user_id, taskId)
            if (url):
                line_bot_api.reply_message(event.reply_token, [
                    TextSendMessage(text='請點選按鈕協助進行以下圖片的標註,如欲結束標記請按「結束作答」的按鈕'),
                    ImageSendMessage(url, url),
                    TextSendMessage(text='請問上方圖片屬於哪個類別?',
                                    quick_reply=QuickReply(items=replyItems))
                ])
            else:
                send_error_message(event)

        elif (action == "answerTask"):
            labelId = event.postback.data.split("&")[2][8:]
            answer = event.postback.data.split("&")[3][7:]
            transactionId = None
            if (event.postback.data.find("transactionId") != -1):
                transactionId = event.postback.data.split("&")[4][14:]
            transaction = answerTask(event.source.user_id, taskId, labelId,
                                     answer, transactionId)
            if (transaction):
                url, replyItems = startTask(event.source.user_id, taskId,
                                            transaction['transactionId'])
                line_bot_api.reply_message(event.reply_token, [
                    TextSendMessage(text="你的答案是: {}".format(answer)),
                    ImageSendMessage(url, url),
                    TextSendMessage(text='請問上方圖片屬於哪個類別?',
                                    quick_reply=QuickReply(items=replyItems))
                ])
            else:
                send_error_message(event)
        elif (action == "endTask"):
            labelId = event.postback.data.split("&")[2][8:]
            answer = event.postback.data.split("&")[3][7:]
            transactionId = event.postback.data.split("&")[4][14:]
            response = endTask(event.source.user_id, taskId, transactionId)
            if (response):
                bubbleJson = flexObj.toAccuracyJson(response['taskTitle'],
                                                    response['accuracy'])
                flexMessage = FlexSendMessage(alt_text="準確度",
                                              contents=bubbleJson)

                line_bot_api.reply_message(
                    event.reply_token,
                    [TextSendMessage(text=answer), flexMessage])
            else:
                send_error_message(event)
        elif (action == "contact"):
            bubble_string = flexObj.contact
            message = FlexSendMessage(alt_text="聯絡方式",
                                      contents=json.loads(bubble_string))
            line_bot_api.reply_message(event.reply_token, message)
        elif (action == "projectExperience"):
            bubble_string = flexObj.projectExperience
            message = FlexSendMessage(alt_text="專案經歷",
                                      contents=json.loads(bubble_string))
            line_bot_api.reply_message(event.reply_token, message)
Esempio n. 26
0
def handle_beacon(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(
            text='Got beacon event. hwid={}, device_message(hex string)={}'.
            format(event.beacon.hwid, event.beacon.dm)))
Esempio n. 27
0
def handle_member_joined(event):
    line_bot_api.reply_message(
        event.reply_token,
        TextSendMessage(text='Got memberJoined event. event={}'.format(event)))
Esempio n. 28
0
def send_error_message(event):
    response = login(event.source.user_id)
    line_bot_api.reply_message(event.reply_token,
                               [TextSendMessage(text="伺服器錯誤或尚未開啟,請在幾分鐘後嘗試!")])
Esempio n. 29
0
def handle_message(event):
    profile = line_bot_api.get_profile(event.source.user_id)  # 使用者資訊
    msg = str(event.message.text).upper().strip()  # 使用者輸入的內容
    utterance = luis(msg)  # Luis 自然語言處理語句
    uid = profile.user_id  # 發訊者ID
    Timestamp = calendar.timegm(time.gmtime())
    Name = profile.display_name
    Pic = profile.picture_url
    dict = {
        "Name": Name,
        "Picture": Pic,
        "UserID": uid,
        "Msg": msg,
        'Timestamp': Timestamp
    }
    # 透過回傳至kafka dict可再後端進行分析/調整模型
    main_api(dict)
    # 針對圖文選單所觸發文字進行回復 動作或是文字訊息
    if re.match('威士忌推薦', msg):
        line_bot_api.push_message(uid, quickReplyTextSendMessage)
    elif re.match('調酒推薦', msg):
        line_bot_api.push_message(uid, cocktailTextSendMessage)
# 文字觸發 推播 Liff 嵌入式網頁   #未來展望:取得jquery +評論+liff.profile資訊+更多功能
    elif re.match('酒吧地圖', msg):
        buttons_template = ButtonsTemplate(
            title='親愛的使用者',
            text='請點選下表連結到酒吧',
            actions=[
                uid,
                URIAction(label="將為您提供酒吧地圖",
                          uri="https://liff.line.me/1654667223-V7pklmP5")
            ])
        template_message = TemplateSendMessage(alt_text='將為您提供酒吧地圖',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif re.match('尋找酒友', msg):
        buttons_template = ButtonsTemplate(
            title='親愛的使用者',
            text='請點選下表連結到聊天室',
            actions=[
                uid,
                URIAction(label="將為您提供酒友聊天室",
                          uri="https://liff.line.me/1654667223-3aR1lyPv")
            ])
        template_message = TemplateSendMessage(alt_text='將為您提供酒友聊天室',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif re.match('關鍵字查詢', msg):
        line_bot_api.push_message(uid, TextSendMessage("請再輸入任意風味或酒名關鍵字"))
    elif re.match('熱門排行', msg):
        line_bot_api.push_message(uid, TextSendMessage("將為您提供熱門排行前五名"))
        Pop_message = json.load(
            open("./app/Json_message/popular", 'r', encoding="utf-8"))
        Pop_demo = FlexSendMessage.new_from_json_dict(Pop_message)
        line_bot_api.push_message(uid, Pop_demo)
    elif re.match('好酒貪杯', msg):
        IOT_message = json.load(
            open("./app/Json_message/Drink", 'r', encoding="utf-8"))
        IOT_demo = TemplateSendMessage.new_from_json_dict(IOT_message)
        line_bot_api.push_message(uid, IOT_demo)
    elif re.match('倒酒動作', msg):
        line_bot_api.push_message(uid, TextSendMessage("正在進行倒酒動作"))
    elif re.match('取消動作', msg):
        line_bot_api.push_message(uid, TextSendMessage("已為您取消動作"))
    elif re.match('資策會_EB102_愛心組', msg):
        line_bot_api.push_message(uid,
                                  TextSendMessage("https://ibar3.webnode.tw/"))

    # 針對調酒風味re.match 文字訊息 作出reply
    elif re.match("風味:圓熟", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦圓熟調酒......"))
        Mellow_message = json.load(
            open("./cocktail_flavor/Mellow", 'r', encoding="utf-8"))
        Mellow_demo = FlexSendMessage.new_from_json_dict(Mellow_message)
        line_bot_api.push_message(uid, Mellow_demo)
    elif re.match("風味:經典", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦經典調酒......"))
        Classic_message = json.load(
            open("./cocktail_flavor/Classic", 'r', encoding="utf-8"))
        Classic_demo = FlexSendMessage.new_from_json_dict(Classic_message)
        line_bot_api.push_message(uid, Classic_demo)
    elif re.match("風味:獨創", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦獨創調酒......"))
        Original_message = json.load(
            open("./cocktail_flavor/Original", 'r', encoding="utf-8"))
        Original_demo = FlexSendMessage.new_from_json_dict(Original_message)
        line_bot_api.push_message(uid, Original_demo)
    elif re.match("風味:草藥", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦草藥味調酒......"))
        herbal_message = json.load(
            open("./cocktail_flavor/herbal", 'r', encoding="utf-8"))
        herbal_demo = FlexSendMessage.new_from_json_dict(herbal_message)
        line_bot_api.push_message(uid, herbal_demo)
    elif re.match("風味:甜", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦甜味調酒......"))
        Sweet_message = json.load(
            open("./cocktail_flavor/Sweet", 'r', encoding="utf-8"))
        Sweet_demo = FlexSendMessage.new_from_json_dict(Sweet_message)
        line_bot_api.push_message(uid, Sweet_demo)
    elif re.match("風味:酸", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦酸味調酒......"))
        Sour_message = json.load(
            open("./cocktail_flavor/Sour", 'r', encoding="utf-8"))
        Sour_demo = FlexSendMessage.new_from_json_dict(Sour_message)
        line_bot_api.push_message(uid, Sour_demo)
    elif re.match("風味:苦甜", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦苦甜味調酒......"))
        Bittersweet_message = json.load(
            open("./cocktail_flavor/Bittersweet", 'r', encoding="utf-8"))
        Bittersweet_demo = FlexSendMessage.new_from_json_dict(
            Bittersweet_message)
        line_bot_api.push_message(uid, Bittersweet_demo)
    elif re.match("風味:細緻", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦細緻味調酒......"))
        light_message = json.load(
            open("./cocktail_flavor/light", 'r', encoding="utf-8"))
        light_demo = FlexSendMessage.new_from_json_dict(light_message)
        line_bot_api.push_message(uid, light_demo)
    elif re.match("風味:和諧", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦和諧味調酒......"))
        Balanced_message = json.load(
            open("./cocktail_flavor/Balanced", 'r', encoding="utf-8"))
        Balanced_demo = FlexSendMessage.new_from_json_dict(Balanced_message)
        line_bot_api.push_message(uid, Balanced_demo)
    elif re.match("風味:柑橘", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦柑橘味調酒......"))
        Orange_message = json.load(
            open("./cocktail_flavor/Orange", 'r', encoding="utf-8"))
        Orange_demo = FlexSendMessage.new_from_json_dict(Orange_message)
        line_bot_api.push_message(uid, Orange_demo)
    elif re.match("風味:水果香", msg):
        # line_bot_api.push_message(uid, TextSendMessage("將為您推薦果香味調酒......"))
        Fruity_message = json.load(
            open("./cocktail_flavor/Fruity", 'r', encoding="utf-8"))
        Fruity_demo = FlexSendMessage.new_from_json_dict(Fruity_message)
        line_bot_api.push_message(uid, Fruity_demo)
    # 關鍵字搜尋,先進行酒名關鍵字查詢、再進行風味tag搜尋之後才進行OLAMI模組回復使用者
    # 先透過關鍵字名稱找尋有無相關data 若無再利用標籤查詢data 再沒有則利用olami查詢是否有相關AI數據庫資訊
    else:
        try:
            data = name_api(msg)
            flexSendMessage1 = FlexSendMessage.new_from_json_dict(data)
            line_bot_api.push_message(uid, TextSendMessage("請稍等…將為您進行搜尋"))
            line_bot_api.push_message(uid, flexSendMessage1)
        except IndexError:
            data2 = tag_api(utterance)
            if not len(data2['contents']['contents']) == 0:
                flexSendMessage2 = FlexSendMessage.new_from_json_dict(data2)
                line_bot_api.push_message(uid, TextSendMessage("請稍等…將為您進行搜尋"))
                line_bot_api.push_message(uid, flexSendMessage2)
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text=Olami().nli(event.message.text)))
Esempio n. 30
0
def default_reply(event):
    name = line_bot_api.get_profile(event.source.user_id).display_name
    line_bot_api.reply_message(event.reply_token,
                               TextSendMessage(text=f"Hello {name}!"))