Exemple #1
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):
                    mtext = event.message.text
                    if mtext == '@傳送文字':
                        func.sendText(event)
                    elif mtext == '@傳送圖片':
                        func.sendImage(event)
                    elif mtext == '@傳送貼圖':
                        func.sendStick(event)
                    elif mtext == '@傳送位置':
                        func.sendPosition(event)
                    elif mtext == '@傳送聲音':
                        func.sendAudio(event)

        return HttpResponse()
    else:
        return HttpResponseBadRequest()
Exemple #2
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            if isinstance(event, MessageEvent):
                user_id = event.source.user_id
                if not (users.objects.filter(uid=user_id).exists()):
                    unit = users.objects.create(uid=user_id)
                    unit.save()
                mtext = event.message.text
                if mtext == '@使用說明':
                    func.sendUse(event)

                elif mtext == '@房間預約':
                    func.sendBooking(event, user_id)

                elif mtext == '@取消訂房':
                    func.sendCancel(event, user_id)

                elif mtext == '@關於我們':
                    func.sendAbout(event)

                elif mtext == '@位置資訊':
                    func.sendPosition(event)

                elif mtext == '@聯絡我們':
                    func.sendContact(event)

                elif mtext[:3] == '###' and len(mtext) > 3:  #處理LIFF傳回的FORM資料
                    func.manageForm(event, mtext, user_id)

                elif mtext[:6] == '123456' and len(mtext) > 6:  #推播給所有顧客
                    func.pushMessage(event, mtext)

            if isinstance(event, PostbackEvent):  #PostbackTemplateAction觸發此事件
                backdata = dict(parse_qsl(event.postback.data))  #取得Postback資料
                if backdata.get('action') == 'yes':
                    func.sendYes(event, event.source.user_id)

        return HttpResponse()

    else:
        return HttpResponseBadRequest()
Exemple #3
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')

        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:  #依序處理所有事件
            if isinstance(event, MessageEvent):  #檢查是否為訊息事件
                mtext = event.message.text
                user_id = event.source.user_id
                profile = line_bot_api.get_profile(user_id)
                print(profile.display_name)
                print(profile.user_id)
                print(profile.picture_url)
                if mtext == '抽':
                    func.sendImage(event)  #event裡面有回郵的郵票
                elif mtext == '文字':
                    func.sendText(event)
                elif mtext == '貼圖':
                    func.sendStick(event)
                elif mtext == '多傳':
                    func.sendMulti(event)
                elif mtext == '位置':
                    func.sendPosition(event)
                elif mtext == '選單':
                    func.sendQuickreply(event)
                else:
                    func.replyText(event)

        return HttpResponse()
    else:
        return HttpResponseBadRequest()
Exemple #4
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)

        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            user_id = event.source.user_id
            if not (users.objects.filter(uid=user_id).exists()):
                unit = users.objects.create(uid=user_id)
                unit.save()
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):

                    mtext = event.message.text

                    if mtext == '@功能介紹':
                        func.sendText(event)
                    elif mtext == '@製作團隊':
                        func.sendText1(event)
                    elif mtext == '@特別感謝':
                        func.sendText2(event)
                    elif mtext == '@國內相關組織':
                        func.sendQuickreply(event)
                    elif mtext == '@晶晶茶鋪':
                        func.sendImage(event)
                    elif mtext == '@傳送聲音':
                        func.sendVoice(event)

                    elif mtext == '@傳送影片':
                        func.sendVedio(event)
                    elif mtext == '@傳送貼圖':
                        func.sendStick(event)

                    elif mtext == '@多項傳送':
                        func.sendMulti(event)

                    elif mtext == '@傳送位置':
                        func.sendPosition(event)

                    elif mtext == '@法律資訊':
                        func.sendQuickreply(event)

                    elif mtext == '@按鈕樣版':
                        func.sendButton(event)

                    elif mtext == '@系統整體滿意度調查':
                        func.sendConfirm(event)

                    elif mtext == '@轉盤樣板':
                        func.sendCarousel(event)

                    elif mtext == '@圖片轉盤':
                        func.sendImgCarousel(event)

                    elif mtext == '@購買披薩':
                        func.sendPizza(event)

                    elif mtext == '@yes':
                        func.sendyes(event)
                    elif mtext == '@no':
                        func.sendNo(event)

                    elif mtext == '@圖片地圖':
                        func.sendImgmap(event)
                    elif mtext == '@日期時間':
                        func.sendDatetime(event)

                    elif mtext == '@彈性配置':
                        func.sendFlex(event)

                    elif mtext[:3] == '###' and len(mtext) > 3:
                        func.manageForm(event, mtext, user_id)
                    elif mtext == '@使用說明':
                        func.sendUse(event)

                    elif mtext == '@房間預約':
                        func.sendBooking(event, user_id)

                    elif mtext == '@取消訂房':
                        func.sendCancel(event, user_id)

                    elif mtext == '@關於我們':
                        func.sendAbout(event)

                    elif mtext == '@位置資訊':
                        func.sendPosition(event)

                    elif mtext == '@聯絡資訊':
                        func.sendContact(event)
                    elif mtext == '@辨別洗錢小知識':
                        func.sendMulti2(event)  # func.sendMulti2-->INSERT  2

                    elif mtext == '@圖片':
                        func.sendImage(event)

                    elif mtext == '@重要資訊':
                        func.sendButton(event)

                    elif mtext == '@國內相關組織':
                        func.sendQuickreply(event)

                    elif mtext == '@國外相關組織':
                        func.sendButtonb(event)

                    elif mtext == '@其他資訊':
                        func.sendCarousel(event)

                    elif mtext[:3] == '###' and len(
                            mtext) > 3:  #處理LIFF傳回的FORM資料
                        func.manageForm(event, mtext, user_id)

                    elif mtext[:6] == '123456' and len(mtext) > 6:  #推播給所有顧客
                        func.pushMessage(event, mtext)

            if isinstance(event, PostbackEvent):  #PostbackTemplateAction觸發此事件
                backdata = dict(parse_qsl(event.postback.data))  #取得Postback資料
                if backdata.get('action') == 'sell':
                    func.sendData_sell(event, backdata)
                if backdata.get('action') == 'yes':
                    func.sendYes(event, event.source.user_id)

            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    TextSendMessage(text=event.message.text))

        return HttpResponse()

    else:
        return HttpResponseBadRequest()
Exemple #5
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):
                    mtext = event.message.text
                    if mtext == '@傳送文字':
                        func.sendText(event)
    
                    elif mtext == '@傳送圖片':
                        func.sendImage(event)
                    elif mtext == '@傳送聲音':
                        func.sendVoice(event)
    
                    elif mtext == '@傳送影片':
                        func.sendVedio(event)
                    elif mtext == '@傳送貼圖':
                        func.sendStick(event)
    
                    elif mtext == '@多項傳送':
                        func.sendMulti(event)
    
                    elif mtext == '@傳送位置':
                        func.sendPosition(event)
    
                    elif mtext == '@快速選單':
                        func.sendQuickreply(event)
              
                    elif mtext == '@按鈕樣板':
                        func.sendButton(event)
    
                    elif mtext == '@確認樣板':
                        func.sendConfirm(event)
    
                    elif mtext == '@轉盤樣板':
                        func.sendCarousel(event)
    
                    elif mtext == '@圖片轉盤':
                        func.sendImgCarousel(event)
    
                    elif mtext == '@購買披薩':
                        func.sendPizza(event)
    
                    elif mtext == '@yes':
                        func.sendYes(event)
                    elif mtext == '@圖片地圖':
                        func.sendImgmap(event)
                    elif mtext == '@日期時間':
                        func.sendDatetime(event)
                    elif mtext == '@彈性配置':
                        func.sendFlex(event)
    
                    elif mtext[:3] == '###' and len(mtext) > 3:
                         func.manageForm(event, mtext)
    
            if isinstance(event, PostbackEvent):  #PostbackTemplateAction觸發此事件
                backdata = dict(parse_qsl(event.postback.data))  #取得data資料
                if backdata.get('action') == 'sell':
                    func.sendData_sell(event, backdata)

            else:            
                line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))
    
        return HttpResponse()

    else:
        return HttpResponseBadRequest()
Exemple #6
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):
                    mtext = event.message.text
                    if mtext == '#我的推薦#':
                        func.sendText(event)

                    elif mtext == '#模擬上妝#':
                        func.openCameraRoll(event)

                    elif mtext == '#教學文章#':
                        # func.sendStick(event)
                        func.sendText(event)
                    elif mtext == '#情境小幫手#':
                        func.sendMulti(event)

                    elif mtext == '#熱門排行#':
                        func.sendPosition(event)

                    if mtext == '#聯絡我們# ':
                        func.sendQuickreply(event)
                elif isinstance(event.message,ImageMessage):
                    #line_bot_api.reply_message(event.reply_token,TextSendMessage(text='Image has upload'))
                    message_content = line_bot_api.get_message_content(event.message.id)
                    print(message_content)
                    # with open('C:/Users/Big data/Desktop/db104_2_project/templates/' + event.message.id + '.jpg','wb')as fd:
                    with open('C:/Users/Big data/Desktop/db104_2_project/static/123.jpg','wb')as fd:
                        for chunk in message_content.iter_content():
                            fd.write(chunk)
                    temp_pic = 'C:/Users/Big data/Desktop/db104_2_project/static/123.jpg'
                    temp_pic_1 = 'C:/Users/Big data/Desktop/db104_2_project/static/456.jpg'
                    # parser1 = argparse.ArgumentParser()
                    # parser1.add_argument('--static', type=str,default=os.path.join(path=temp_pic_1),help='path to the no_makeup image')
                    # args = parser1.parse_args()
                    #line_bot_api.reply_message(event.reply_token, TextSendMessage(text='good'))

                    while True :
                        if os.path.isfile(temp_pic):
                            face_cut.detect_face_landmarks(temp_pic)
                            time.sleep(1)
                            main_gan.make_upup(temp_pic_1)
                            time.sleep(1)
                            func.sendMulti_send_image(event)
                            #line_bot_api.reply_message(event.reply_token,ImageSendMessage(original_content_url='https://2a9944ea.ngrok.io/static/result.jpg', preview_image_url='https://2a9944ea.ngrok.io/static/result.jpg') ,)
                            #time.sleep(5)

                            # time.sleep(8)
                            # send_res = send_image()
                            # print(send_res)


                        else:
                            time.sleep(1)
                        break

        return HttpResponse()

    else:
        return HttpResponseBadRequest()
Exemple #7
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)

        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            user_id = event.source.user_id
            if not (users.objects.filter(uid=user_id).exists()):
                unit = users.objects.create(uid=user_id)
                unit.save()
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):

                    mtext = event.message.text

                    if mtext == '@傳送文字':
                        func.sendText(event)

                    elif mtext == '@傳送圖片':
                        func.sendImage(event)
                    elif mtext == '@傳送聲音':
                        func.sendVoice(event)

                    elif mtext == '@傳送影片':
                        func.sendVedio(event)
                    elif mtext == '@傳送貼圖':
                        func.sendStick(event)

                    elif mtext == '@多項傳送':
                        func.sendMulti(event)

                    elif mtext == '@傳送位置':
                        func.sendPosition(event)

                    elif mtext == '@快速選單':
                        func.sendQuickreply(event)

                    elif mtext == '@按鈕樣板':
                        func.sendButton(event)
                    elif mtext == '旅遊數據分析':
                        func.sendButtonp(event)
                    elif mtext == '景點查詢':
                        func.sendButtonq(event)
                    elif mtext == '交通一點通':
                        func.sendButtonr(event)
                    elif mtext == '旅遊即時報':
                        func.sendButtons(event)
                    elif mtext == '天氣小幫手':
                        func.sendButtont(event)
                    elif mtext == '2020旅遊調查':
                        func.sendButtonu(event)
                    elif mtext == '播報警廣事故路況':
                        func.sendButtonv(event)

                    elif mtext == '@確認樣板':
                        func.sendConfirm(event)

                    elif mtext == '@轉盤樣板':
                        func.sendCarousel(event)

                    elif mtext == '@圖片轉盤':
                        func.sendImgCarousel(event)

                    elif mtext == '@購買披薩':
                        func.sendPizza(event)

                    elif mtext == '@yes':
                        func.sendYes(event)
                    elif mtext == '@圖片地圖':
                        func.sendImgmap(event)
                    elif mtext == '@日期時間':
                        func.sendDatetime(event)

                    elif mtext == '@彈性配置':
                        func.sendFlex(event)

                    elif mtext[:3] == '###' and len(mtext) > 3:
                        func.manageForm(event, mtext, user_id)
                    elif mtext == '@使用說明':
                        func.sendUse(event)

                    elif mtext == '@房間預約':
                        func.sendBooking(event, user_id)

                    elif mtext == '@取消訂房':
                        func.sendCancel(event, user_id)

                    elif mtext == '@關於我們':
                        func.sendAbout(event)

                    elif mtext == '@位置資訊':
                        func.sendPosition(event)

                    elif mtext == '@聯絡我們':
                        func.sendContact(event)

                    elif mtext == '聯絡警廣':
                        func.sendContactp(event)

                    elif mtext[:3] == '###' and len(
                            mtext) > 3:  #處理LIFF傳回的FORM資料
                        line_bot_api.reply_message(
                            event.reply_token,
                            TextSendMessage(text="##########"))
                        func.manageForm(event, mtext, user_id)

                    elif mtext[:4] == 'Call' and len(mtext) > 4:  #推播給所有顧客
                        func.pushMessage(event, mtext)

            if isinstance(event, PostbackEvent):  #PostbackTemplateAction觸發此事件
                backdata = dict(parse_qsl(event.postback.data))  #取得Postback資料
                if backdata.get('action') == 'sell':
                    func.sendData_sell(event, backdata)
                if backdata.get('action') == 'yes':
                    func.sendYes(event, event.source.user_id)

            #else:
            #line_bot_api.reply_message(event.reply_token,TextSendMessage(text=event.message.text))

        return HttpResponse()

    else:
        return HttpResponseBadRequest()
Exemple #8
0
def callback(request):
    if request.method == 'POST':
        signature = request.META['HTTP_X_LINE_SIGNATURE']
        body = request.body.decode('utf-8')
        try:
            events = parser.parse(body, signature)
        except InvalidSignatureError:
            return HttpResponseForbidden()
        except LineBotApiError:
            return HttpResponseBadRequest()

        for event in events:
            print("###################### events ################## : " ,event )
            if isinstance(event, MessageEvent):
                if isinstance(event.message, TextMessage):
                    mtext = event.message.text
                    if mtext == '#我的推薦#':
                        write_in_TextMessage(events)
                        # 先抓取 UserId 號碼,看看資料庫有沒有存在
                        # 如果 count = 1 代表存在
                        user_Data = my_recommend.search_db(event)
                        if user_Data[6] == 1 and user_Data[1] != None :
                            my_recommend.sendCarousel(event ,user_Data)  #轉盤樣板
                        elif user_Data[6] == 0 or user_Data[1] == None :
                            my_recommend.fill_in_the_form(event)
                        else:
                            line_bot_api.reply_message(event.reply_token, TextSendMessage(text='系統維護,請稍等!'))
                        return HttpResponse()

                    elif mtext == "#清除我的推薦資料#":
                        write_in_TextMessage(events)
                        my_recommend.delete_commend_form(event)
                        return HttpResponse()

                    elif mtext == "#我的推薦選單#" :
                        write_in_TextMessage(events)
                        my_recommend.send_commend_Quickreply(event)
                        return HttpResponse()


                    elif mtext == '#模擬上妝#':
                        write_in_TextMessage(events)
                        onekey_makeup.openCameraRoll(event) #多元按鈕樣板
                        return HttpResponse()


                    elif mtext == '#教學文章#':
                        write_in_TextMessage(events)
                        learn_paper.sendQuickreply(event) #快速按鈕
                        return HttpResponse()


                    elif mtext == '#請用一句話描述化妝的情境或想要強化的部位#':
                        ## 還沒寫 write 進去函式在寫
                        situation_helper.sendCarousel_f(event ,events)
                        return HttpResponse()


                    elif mtext == '#熱門排行#':
                        write_in_TextMessage(events)
                        func.Top_Ranking_Position(event)
                        return HttpResponse()

                    elif mtext == '#眉睫#' or mtext == '#眼影#' or mtext == '#眼線#' or mtext == '#面頰#' or mtext == '#唇彩#' :
                        write_in_TextMessage(events)
                        func.Top_Ranking_List(event)
                        return HttpResponse()

                    elif mtext == '#人氣最高#' or mtext == '#推薦指數最高#' :
                        write_in_TextMessage(events)
                        # 查詢 userid 有沒有先點選過 部位
                        user_Data = func.Top_Ranking_search_user(event)
                        print("sear_user的user_Data : " ,user_Data)
                        # 查詢 function 在這邊寫
                        if user_Data[2] == 1 :
                            func.Top_Ranking_fetch(event ,user_Data)
                        elif user_Data[2] == 0 :
                            line_bot_api.reply_message(event.reply_token, TextSendMessage(text='您沒點選部位,請重新點選功能。'))
                        else:
                            line_bot_api.reply_message(event.reply_token, TextSendMessage(text='有錯誤,請重新點選功能'))
                        return HttpResponse()

                    elif mtext == '#聯絡我們#': #位置提供
                        write_in_TextMessage(events)
                        func.sendPosition(event)
                        return HttpResponse()

                    elif mtext == '#眼妝_c#' or mtext == '#臉部_c#' or mtext == '#唇部_c#':
                        write_in_TextMessage(events)
                        learn_paper.sendLearn_paper(event , mtext)
                        return HttpResponse()


                elif isinstance(event.message,ImageMessage):
                    #PostbackEvent
                    # line_bot_api.reply_message(event.reply_token,TextSendMessage(text='spark沒開,先不給你照片,哈哈'))
                    # return HttpResponse()
                    message_content = line_bot_api.get_message_content(event.message.id)
                    print(message_content)
                    # with open('C:/Users/Big data/Desktop/db104_2_project/templates/' + event.message.id + '.jpg','wb')as fd:

                    user_id = event.message.id
                    user_id = str(user_id) + str(random.randrange(10 ,99))
                    print(user_id)
                    with open('E:/db104_2_project/static/{}.jpg' .format(user_id),'wb')as fd:
                        for chunk in message_content.iter_content():
                            fd.write(chunk)

                    temp_pic = 'E:/db104_2_project/static/{}.jpg'.format(user_id)
                    # parser1 = argparse.ArgumentParser()
                    # parser1.add_argument('--static', type=str,default=os.path.join(path=temp_pic_1),help='path to the no_makeup image')
                    # args = parser1.parse_args()

                    content = face_cut.detect_face_landmarks(temp_pic)
                    #main_gan.make_upup(temp_pic_1)
                    print(type(content) ,content)

                    # 步驟1. 設定要連線到Kafka集群的相關設定
                    props = {
                        # Kafka集群在那裡?
                        'bootstrap.servers': '10.120.38.7:9092',  # <-- 置換成要連接的Kafka集群
                        'error_cb': error_cb  # 設定接收error訊息的callback函數
                    }

                    # 步驟2. 產生一個Kafka的Producer的實例
                    producer = Producer(props)
                    # 步驟3. 指定想要發佈訊息的topic名稱
                    topicName = 'test'
                    msgCounter = 0
                    try:
                        # produce(topic, [value], [key], [partition], [on_delivery], [timestamp], [headers])
                        producer.produce(topicName, content )

                        msgCounter += 4
                        print('Send ' + str(msgCounter) + ' messages to Kafka')
                    except BufferError as e:
                        # 錯誤處理
                        sys.stderr.write('%% Local producer queue is full ({} messages awaiting delivery): try again\n'
                                         .format(len(producer)))
                    except Exception as e:
                        print(e)
                    # 步驟5. 確認所在Buffer的訊息都己經送出去給Kafka了
                    producer.flush()


                    onekey_makeup.sendMulti_send_image(event ,content)

                    
                    # time.sleep(8)
                    # send_res = send_image()
                    # print(send_res)
                else:
                    print("到這呢???")
                    return HttpResponse()
            elif events[0].type == "follow":
                my_recommend.follow_in_the_form(event)
                return HttpResponse()
            print("到文字func後會,跑到這,如果拿掉下面那行,會跑到 儲存輸入文字")
            # return HttpResponse()

        #viewsget.get_resquest(events)
        print("儲存輸入文字")
        # if events[0].message.type == "text":
        #     write_in_TextMessage(events)
        # else:
        #     print(events[0].message.type)
        #     print("不能存")
        #     pass
        write_in_TextMessage(events)
        return HttpResponse()

    else:
        print("不是POST")
        return HttpResponseBadRequest()