예제 #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 != '@傳送文字':
                    #                        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=mtext))
                    if mtext == '@傳送文字':
                        func.sendText(event)
                    if mtext == '@傳送聲音':
                        func.sendVoice(event)
                    if mtext == '@傳送影片':
                        func.sendVedio(event)
                    if mtext == '@使用說明':
                        func.sendUse(event)
                    if mtext == '@北歐貿易':
                        func.neuWeb(event)

                    else:
                        func.sendTWder(event, mtext)

        return HttpResponse()
    else:
        return HttpResponseBadRequest()
예제 #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):
                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()
예제 #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()
예제 #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()
예제 #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()
예제 #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()
예제 #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()
예제 #8
0
파일: views.py 프로젝트: tai34tw/AI_fitness
def callback(request):
    
    print("### callback.resquest: " , request)
    print("### callback.resquest傳輸的方式: ", request.method) 

    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("### callback.resquest.POST.event(事件觸發格式): ", event)

            # 判斷使用者在linechat的對話之上一句是否為"'我要告御狀'"
            # 供告御狀的回覆用(elif mtext != "'我要告御狀'")
    
            # 取得時間(至十分)
            ISOTIMEFORMAT = '%Y%m%d%H%M' # 指定時間格式
            time = (datetime.datetime.now().strftime(ISOTIMEFORMAT))[:-1]
            print("### callback.time: " + time)
            # 存擋路徑
            path = Path() + event.source.user_id + "_" + time
            print("###存檔路徑:",  path[:-11])
     
            # :讀取暫存檔內容
            if os.path.isfile(path):
                f = open(path)
                text = f.readlines()
                f.close()
                print("### callback" +str(text))

            # Postback事件觸發
            if isinstance(event, PostbackEvent):
                print("### callback.isinstanc.Postback觸發_start")
                print("### event.postback.data:" ,event.postback.data)  
                if event.postback.data  == 'fuzzySearch':
                    print("### callbacki.isinstance.PostbackEvent.fuzzySearch_start")

                    # 創建file,供func.sendText.ExtraFood使用
                    f  = open(path,"w")
                    f.write('ExtraFood') #####內文為'嘴饞紀錄'
                    f.close
                    #print("### func.UserData."吃了什麼跟我說說")
                    message = TextSendMessage(text = "吃了什麼跟我說說\n(打在對話框送出即可)")
                    #print("### func.UserData."吃了什麼跟我說說")
                    line_bot_api.reply_message(event.reply_token,message)
                    print("### func.UserData.吃了什麼跟我說說")

            # 事件觸發
            if isinstance(event, MessageEvent):
                print("### callback.isinstanc.事件觸發")
                
                # 照片事件觸發
                if isinstance(event.message, ImageMessage) and (os.path.isfile(path)) and text == ['img']:
                    os.remove(path) # 刪除資料夾,避免干擾

                    print("### callback.isinstanc.照片事件觸發_start")
                    message_content = line_bot_api.get_message_content(event.message.id)                  
                    print("### callback.isinstanc.照片事件觸發.message_content",  message_content)
                    sendImage.Image(event)
                    print("### callback.isinstanc.照片事件觸發_end")
                    #line_bot_api.reply_message(event.reply_token, message) 

                # 文字事件觸發
                if isinstance(event.message, TextMessage):
                    print("### callback.isinstanc.文字事件觸發")

                    mimange = event.message
                    print("### event.message:", (event.message))
                    print("### TextMessage:", TextMessage)
                    #文字訊息
                    mtext = event.message.text

                    print("### views.callback_start\n")                
                    print("### callback.isinstanc.文字事件觸發,輸入訊息:" + mtext)



                 # testi 問卷用 
                    if mtext[:3] == "###":
                        os.remove(path) # 刪除資料夾,避免干擾

                        print("### views.callback.問卷_start\n")
                        list_ = ["userId", "sex", "age", "height", "weight", "bodyFat", "exerciseFrequency"]
                        QA = 5
                        #message = (event.source.user_id + "/"+ mtext[3:]+ "/" + time) 
                        message = (mtext)
                        print(message, "_end")
                        print(type(message))
                        from kafka import KafkaProducer
                        producer = KafkaProducer(bootstrap_servers=['35.221.199.161:9092'])
                        future = producer.send('ttt', bytes(mtext, encoding="utf8"))
                        result = future.get(timeout=30)
                       
                        line_bot_api.reply_message(event.reply_token,message)
                        #json.load(filename)
                        #json.loadds(string)     


          
                # 圖文選單
                    if mtext == "我升級了,我要更新狀態值 ლ(´ڡ`ლ)":
                        print("### views.callback.'基本資料'\n")
                        if os.path.isfile(path):  # 為避免暫存檔干擾
                            os.remove(path)

                        QuickReplyButton.UserData(event)
                    
                    elif mtext == '人家要吃飯飯~ ♥(´∀` )':
                        print("### callback.time(hr).'人家要吃飯飯~ ♥(´∀` )'")
                           
                        # 取得時間(hr)
                        ISOTIMEFORMAT = '%H' # 指定時間格式
                        time = (datetime.datetime.now().strftime(ISOTIMEFORMAT))
                        print("### callback.time.'人家要吃飯飯~ ♥(´∀` )': " + time)
            
                        if 10 >= int(time) >= 4:
                            BreakfastPush.BreakfastPush(event)
                        elif 17  > int(time) > 10:
                            LunchPush.LunchPush(event)
                        elif 23  > int(time) >= 17:
                            DinnerPush.DinnerPush(event) 
                        else:
                            message = TextSendMessage(text = "乖~這時候就別吃了吧~")
                            print("### views.callback.'乖~這這時候就別吃了吧~'_start\n")   
                            line_bot_api.reply_message(event.reply_token,message)
                            print("### views.callback.'乖~這這時候就別吃了吧~'_end\n")

                    elif mtext == "人家想知道吃進了多少熱量嘛~ ( ̄¬ ̄)~":
                        print("### views.callback.人家想知道吃進了多少熱量嘛~ ( ̄¬ ̄)~_start\n")
                        func.sendText(event)
                        print("### views.callback.人家想知道吃進了多少熱量嘛~ ( ̄¬ ̄)~_end\n")

                    elif mtext == "我鼓起勇氣,面對過去的自己 (*•̀ㅂ•́)ﻭ":
                        print("### views.callback.'我鼓起勇氣,面對過去的自己 (*•̀ㅂ•́)ﻭ'_start\n")
                        if os.path.isfile(path):  # 為避免暫存檔干擾
                            os.remove(path)

                        func.sendText(event)
                        print("### views.callback.'我鼓起勇氣,面對過去的自己 (*•̀ㅂ•́)ﻭ'_end\n")

                    elif mtext == "呼叫姿勢王 ٩(♡ε♡ )۶":

                        if os.path.isfile(path):  # 為避免暫存檔干擾
                            os.remove(path)

                        sendCarousel.Pose(event)
    
                    elif mtext == '我不想再當單身狗了(〓 ̄(∵エ∵) ̄〓)':
                        print("### views.callback.我不想再當單身狗了_start\n")                
                        if os.path.isfile(path):  # 為避免暫存檔干擾
                            os.remove(path)

                        func.sendText(event)
                        print("### views.callback.我不想再當單身狗了(〓 ̄(∵エ∵) ̄〓)_end\n")
                                                
   
                    elif mtext == "我要告狀!(╬ಠ益ಠ)":
                        print("### views.callback.我要告狀!(╬ಠ益ಠ)_start\n") 
                        func.sendText(event) 
                        print("### views.callback.我要告狀!(╬ಠ益ಠ)_end\n")

                # 基本資料之快速選單的回覆 
                    elif mtext == "讓我記錄這美好的body吧~":
                        print("### views.callback.讓我記錄這美好的body吧~")
                        func.sendText(event)

               
                # 告御狀的回覆
                    elif mtext != "我要告狀!(╬ಠ益ಠ)" and (os.path.isfile(path)) and text == ['ErrorReport']:    
                        print("### views.callback.mtext != '我要告御狀'_start\n") 
                        func.sendErrorReport(event)
                        print("### views.callback.mtext != '我要告御狀'_end\n")

                # 嘴饞紀錄的回覆
                    elif mtext != "人家想知道吃進了多少熱量嘛~ ( ̄¬ ̄)~" and (os.path.isfile(path)) and  text == ['ExtraFood']:
                        print("### views.callback.mtext != 人家想知道吃進了多少熱量嘛~ _start\n")
                        func.fuzzySearch(event)
                        print("### views.callback.mtext != 人家想知道吃進了多少熱量嘛~ ( ̄¬ ̄)~_end\n")

                # 飲食建議回覆    
                    elif mtext[:9] == "我想吃查理大師的 ": 
                        print("### views.callback.mtext =" + mtext[:9] + " _start")
                        func.pushSearch(event)
                        print("### views.callback.mtext =" + mtext[:9] + " _start")

                return HttpResponse()
                print("### view.callback_end\n")   
    else:
        return HttpResponseBadRequest()