def Confirm_PostMessage(data, number):
        # 取消step2
        if number == 1:
            ConfirmMessage = FlexSendMessage(alt_text='菜單查詢',
                                             position='absolute',
                                             contents={
                                                 "type": "bubble",
                                                 "body": {
                                                     "type":
                                                     "box",
                                                     "layout":
                                                     "vertical",
                                                     "contents": [{
                                                         "type":
                                                         "text",
                                                         "text":
                                                         "確定取消嗎?",
                                                         "margin":
                                                         "md"
                                                     }, {
                                                         "type":
                                                         "spacer"
                                                     }]
                                                 },
                                                 "footer": {
                                                     "type":
                                                     "box",
                                                     "layout":
                                                     "horizontal",
                                                     "spacing":
                                                     "sm",
                                                     "contents": [{
                                                         "type":
                                                         "button",
                                                         "action": {
                                                             "type":
                                                             "postback",
                                                             "label": "是的",
                                                             "data": data
                                                         },
                                                         "height":
                                                         "sm"
                                                     }, {
                                                         "type":
                                                         "button",
                                                         "action": {
                                                             "type":
                                                             "postback",
                                                             "label": "再想想好了",
                                                             "data": "no"
                                                         },
                                                         "height":
                                                         "sm"
                                                     }],
                                                     "flex":
                                                     0
                                                 },
                                                 "styles": {
                                                     "footer": {
                                                         "separator": True
                                                     }
                                                 }
                                             })

        # 確認是否答應 訂位Step6
        elif number == 2:
            print(data)
            ConfirmMessage = FlexSendMessage(
                alt_text='確定此次訂位資訊嗎?\n姓名: ' + data[0] + '\n預約日期: ' +
                data[1].split('T')[0] + '\n預約時間: ' + data[1].split('T')[1] +
                "\n預約人數: " + data[2],  #+ "\n選擇位置: " + data[4],
                position='absolute',
                contents={
                    "type": "bubble",
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [
                            {
                                "type":
                                "text",
                                "text":
                                '確定此次訂位資訊嗎?\n姓名: ' + data[0] + '\n預約日期: ' +
                                data[1].split('T')[0] + '\n預約時間: ' +
                                data[1].split('T')[1] + "\n預約人數: " +
                                data[2],  #+ "\n選擇位置: " + data[4],
                                "margin":
                                "md",
                                "wrap":
                                True
                            },
                            {
                                "type": "spacer"
                            }
                        ]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "horizontal",
                        "spacing":
                        "sm",
                        "contents": [
                            {
                                "type": "button",
                                "action": {
                                    "type":
                                    "postback",
                                    "label":
                                    "訂單正確",
                                    "data":
                                    'yes ' + data[0] + " " + data[1] + " " +
                                    data[2] + " " + data[3]
                                },
                                "height": "sm"
                            },
                            {
                                "type": "button",
                                "action": {
                                    "type":
                                    "postback",
                                    "label":
                                    "取消訂單",
                                    "data":
                                    'no ' + data[0] + " " + data[1] + " " +
                                    data[2] + " " + data[3]  # 3: UserId
                                },
                                "height": "sm"
                            }
                        ],
                        "flex":
                        0
                    },
                    "styles": {
                        "footer": {
                            "separator": True
                        }
                    }
                })

        # 確認是先生或小姐 訂位step2
        elif number == 3:
            ConfirmMessage = FlexSendMessage(
                alt_text='請問是{0}先生還是{0}小姐呢?'.format(data[0]),
                position='absolute',
                contents={
                    "type": "bubble",
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type":
                            "text",
                            "text":
                            '請問是{0}先生還是{0}小姐呢?'.format(data[0]),
                            "margin":
                            "md",
                            "wrap":
                            True
                        }, {
                            "type": "spacer"
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "horizontal",
                        "spacing":
                        "sm",
                        "contents": [{
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "先生",
                                "data": '先生'
                            },
                            "height": "sm"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "小姐",
                                "data": '小姐'
                            },
                            "height": "sm"
                        }],
                        "flex":
                        0
                    },
                    "styles": {
                        "footer": {
                            "separator": True
                        }
                    }
                })

        elif number == 4:
            ConfirmMessage = FlexSendMessage(alt_text='請問是要預約訂位還是取消預約呢?',
                                             position='absolute',
                                             contents={
                                                 "type": "bubble",
                                                 "body": {
                                                     "type":
                                                     "box",
                                                     "layout":
                                                     "vertical",
                                                     "contents": [{
                                                         "type": "text",
                                                         "text":
                                                         '請問是要預約訂位還是取消預約呢?',
                                                         "margin": "md",
                                                         "wrap": True
                                                     }, {
                                                         "type":
                                                         "spacer"
                                                     }]
                                                 },
                                                 "footer": {
                                                     "type":
                                                     "box",
                                                     "layout":
                                                     "horizontal",
                                                     "spacing":
                                                     "sm",
                                                     "contents": [{
                                                         "type":
                                                         "button",
                                                         "action": {
                                                             "type": "message",
                                                             "label": "預約訂位",
                                                             "text": '預約訂位'
                                                         },
                                                         "height":
                                                         "sm"
                                                     }, {
                                                         "type":
                                                         "button",
                                                         "action": {
                                                             "type": "message",
                                                             "label": "取消預約",
                                                             "text": '取消預約'
                                                         },
                                                         "height":
                                                         "sm"
                                                     }],
                                                     "flex":
                                                     0
                                                 },
                                                 "styles": {
                                                     "footer": {
                                                         "separator": True
                                                     }
                                                 }
                                             })

        # 確認日期 訂位step3.5
        elif number == 5:
            print(data)
            ConfirmMessage = FlexSendMessage(
                alt_text='確定此次日期資訊嗎?',
                position='absolute',
                contents={
                    "type": "bubble",
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type":
                            "text",
                            "text":
                            '確定此次日期資訊嗎?\n預約日期: ' + data.split('T')[0] +
                            '\n預約時間: ' + data.split('T')[1],
                            "margin":
                            "md",
                            "wrap":
                            True
                        }, {
                            "type": "spacer"
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "horizontal",
                        "spacing":
                        "sm",
                        "contents": [{
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "日期正確",
                                "data": 'yes ' + data
                            },
                            "height": "sm"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "重新選取",
                                "data": 'no ' + data
                            },
                            "height": "sm"
                        }],
                        "flex":
                        0
                    },
                    "styles": {
                        "footer": {
                            "separator": True
                        }
                    }
                })

        # 確認訂餐資訊
        elif number == 6:
            print(data)
            reply_message = '以下是您的訂餐詳細\n'
            postmessage = ''
            for i in list(data.keys()):
                if data[i] != 0:
                    if i == '桌號':
                        postmessage = postmessage + i + ' ' + str(
                            data[i]) + " "
                        reply_message = reply_message + i + ' ' + str(
                            data[i]) + "號\n"
                    else:
                        postmessage = postmessage + i + ' ' + str(
                            data[i]) + " "
                        reply_message = reply_message + i + ' ' + str(
                            data[i]) + "份\n"
            reply_message = reply_message + '確認無誤嗎?'
            ConfirmMessage = FlexSendMessage(
                alt_text='餐點確認無誤嗎?',
                position='absolute',
                contents={
                    "type": "bubble",
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "text",
                            "text": reply_message,
                            "margin": "md",
                            "wrap": True
                        }, {
                            "type": "spacer"
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "horizontal",
                        "spacing":
                        "sm",
                        "contents": [{
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "訂單正確",
                                "data": 'yes menu ' + postmessage
                            },
                            "height": "sm"
                        }, {
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "我要修改",
                                "data": 'no menu '
                            },
                            "height": "sm"
                        }],
                        "flex":
                        0
                    },
                    "styles": {
                        "footer": {
                            "separator": True
                        }
                    }
                })

        return ConfirmMessage
示例#2
0
def send_flex_message(reply_token, flex_msg):
    line_bot_api = LineBotApi(channel_access_token)
    line_bot_api.reply_message(reply_token, FlexSendMessage("menu", flex_msg))

    return "OK"
示例#3
0
def sendFlex(event):  #彈性配置
    try:
        bubble = BubbleContainer(
            direction='ltr',  #項目由左向右排列
            header=BoxComponent(  #標題
                layout='vertical',
                contents=[
                    TextComponent(text='冰火飲料', weight='bold', size='xxl'),
                ]),
            hero=ImageComponent(  #主圖片
                url='https://i.imgur.com/3sBRh08.jpg',
                size='full',
                aspect_ratio='792:555',  #長寬比例
                aspect_mode='cover',
            ),
            body=BoxComponent(  #主要內容
                layout='vertical',
                contents=[
                    TextComponent(text='評價', size='md'),
                    BoxComponent(
                        layout='baseline',  #水平排列
                        margin='md',
                        contents=[
                            IconComponent(
                                size='lg',
                                url='https://i.imgur.com/GsWCrIx.png'),
                            TextComponent(text='25   ',
                                          size='sm',
                                          color='#999999',
                                          flex=0),
                            IconComponent(
                                size='lg',
                                url='https://i.imgur.com/sJPhtB3.png'),
                            TextComponent(text='14',
                                          size='sm',
                                          color='#999999',
                                          flex=0),
                        ]),
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                contents=[
                                    TextComponent(text='營業地址:',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=2),
                                    TextComponent(text='台北市信義路14號',
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            SeparatorComponent(color='#0000FF'),
                            BoxComponent(
                                layout='baseline',
                                contents=[
                                    TextComponent(text='營業時間:',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=2),
                                    TextComponent(text="10:00 - 23:00",
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5),
                                ],
                            ),
                        ],
                    ),
                    BoxComponent(layout='horizontal',
                                 margin='xxl',
                                 contents=[
                                     ButtonComponent(
                                         style='primary',
                                         height='sm',
                                         action=URIAction(
                                             label='電話聯絡',
                                             uri='tel:0987654321'),
                                     ),
                                     ButtonComponent(
                                         style='secondary',
                                         height='sm',
                                         action=URIAction(
                                             label='查看網頁',
                                             uri="http://www.e-happy.com.tw"))
                                 ])
                ],
            ),
            footer=BoxComponent(  #底部版權宣告
                layout='vertical',
                contents=[
                    TextComponent(text='Copyright@ehappy studio 2019',
                                  color='#888888',
                                  size='sm',
                                  align='center'),
                ]),
        )
        message = FlexSendMessage(alt_text="彈性配置範例", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='發生錯誤!'))
示例#4
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                str(profile.status_message))
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'quota':
        quota = line_bot_api.get_message_quota()
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='type: ' + quota.type),
            TextSendMessage(text='value: ' + str(quota.value))
        ])
    elif text == 'quota_consumption':
        quota_consumption = line_bot_api.get_message_quota_consumption()
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='total usage: ' +
                            str(quota_consumption.total_usage)),
        ])
    elif text == 'push':
        line_bot_api.push_message(event.source.user_id, [
            TextSendMessage(text='PUSH!'),
        ])
    elif text == 'multicast':
        line_bot_api.multicast([event.source.user_id], [
            TextSendMessage(text='THIS IS A MULTICAST MESSAGE'),
        ])
    elif text == 'broadcast':
        line_bot_api.broadcast([
            TextSendMessage(text='THIS IS A BROADCAST MESSAGE'),
        ])
    elif text.startswith('broadcast '):  # broadcast 20190505
        date = text.split(' ')[1]
        print("Getting broadcast result: " + date)
        result = line_bot_api.get_message_delivery_broadcast(date)
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='Number of sent broadcast messages: ' + date),
            TextSendMessage(text='status: ' + str(result.status)),
            TextSendMessage(text='success: ' + str(result.success)),
        ])
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'image':
        url = request.url_root + '/static/logo.png'
        app.logger.info("url=" + url)
        line_bot_api.reply_message(event.reply_token,
                                   ImageSendMessage(url, url))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    elif text == 'quick_reply':
        line_bot_api.reply_message(
            event.reply_token,
            TextSendMessage(
                text='Quick reply',
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=PostbackAction(label="label1", data="data1")),
                    QuickReplyButton(
                        action=MessageAction(label="label2", text="text2")),
                    QuickReplyButton(action=DatetimePickerAction(
                        label="label3", data="data3", mode="date")),
                    QuickReplyButton(action=CameraAction(label="label4")),
                    QuickReplyButton(action=CameraRollAction(label="label5")),
                    QuickReplyButton(action=LocationAction(label="label6")),
                ])))
    elif text == 'link_token' and isinstance(event.source, SourceUser):
        link_token_response = line_bot_api.issue_link_token(
            event.source.user_id)
        line_bot_api.reply_message(event.reply_token, [
            TextSendMessage(text='link_token: ' +
                            link_token_response.link_token)
        ])
    elif text == 'insight_message_delivery':
        today = datetime.date.today().strftime("%Y%m%d")
        response = line_bot_api.get_insight_message_delivery(today)
        if response.status == 'ready':
            messages = [
                TextSendMessage(text='broadcast: ' + str(response.broadcast)),
                TextSendMessage(text='targeting: ' + str(response.targeting)),
            ]
        else:
            messages = [TextSendMessage(text='status: ' + response.status)]
        line_bot_api.reply_message(event.reply_token, messages)
    elif text == 'insight_followers':
        today = datetime.date.today().strftime("%Y%m%d")
        response = line_bot_api.get_insight_followers(today)
        if response.status == 'ready':
            messages = [
                TextSendMessage(text='followers: ' + str(response.followers)),
                TextSendMessage(text='targetedReaches: ' +
                                str(response.targeted_reaches)),
                TextSendMessage(text='blocks: ' + str(response.blocks)),
            ]
        else:
            messages = [TextSendMessage(text='status: ' + response.status)]
        line_bot_api.reply_message(event.reply_token, messages)
    elif text == 'insight_demographic':
        response = line_bot_api.get_insight_demographic()
        if response.available:
            messages = [
                "{gender}: {percentage}".format(gender=it.gender,
                                                percentage=it.percentage)
                for it in response.genders
            ]
        else:
            messages = [TextSendMessage(text='available: false')]
        line_bot_api.reply_message(event.reply_token, messages)
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
示例#5
0
文件: app.py 项目: mohsen-bw/mbot
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='mosen.bw', uri="https://line.me/ti/p/~masih.00")
                    )
                ]
            ),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(
            event.reply_token,
            message
        )
#=======================================================================================================================
import os
if __name__ == "__main__":
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)
 def menu_test(cls):
     return FlexSendMessage(alt_text="hello",
                            contents=CarouselContainer.new_from_json_dict(
                                cls.recipe_menu_tmp))
示例#7
0
            }
          ]
        }
      }
    ]
}
"""

survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_001#", ('https://%s/images/0001.jpg' % server_url))
survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_002#", ('https://%s/images/0002.jpg' % server_url))
survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_003#", ('https://%s/images/0003.jpg' % server_url))
survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_004#", ('https://%s/images/0004.jpg' % server_url))
survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_005#", ('https://%s/images/0005.jpg' % server_url))
survey_flexCarouselContainerJsonDict = survey_flexCarouselContainerJsonDict.replace(
    "#img_url_006#", ('https://%s/images/0006.jpg' % server_url))
# print(type(survey_flexCarouselContainerJsonDict))
# print(survey_flexCarouselContainerJsonDict)
'''
將carousel類型的json 進行轉換變成 Python可理解之類型物件
將該物件封裝進 Flex Message中
'''
survey_carouselContent = CarouselContainer.new_from_json_dict(
    json.loads(survey_flexCarouselContainerJsonDict))
survey_flexCarouselSendMeesage = FlexSendMessage(
    alt_text="偏好調查", contents=survey_carouselContent)
示例#8
0
    def skill(self):

        bubble = BubbleContainer(
            body = BoxComponent(
                layout = 'vertical',
                contents = [
                    # header
                    TextComponent(text="SAM's SKIL", weight='bold', size='sm', color='#1DB446'),
                    TextComponent(text='Programming Skill', weight='bold', size='xxl', margin='md'),
                    SeparatorComponent(margin='xxl'),

                    # Body
                    BoxComponent(
                        layout = 'vertical',
                        margin ='md',
                        spacing = 'sm',
                        contents = [
                            # Backend
                            BoxComponent(
                                layout='baseline',
                                spacing='md',
                                contents=[
                                    IconComponent(url='https://i.imgur.com/8Uxdkpn.png', size='md'),
                                    TextComponent(text='Backend', size='lg', color='#7b7b7b')
                                ]
                            ),
                            # node go
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='Node.js - express', size='sm', color='#111111'),
                                    TextComponent(text='Golang - gin', size='sm', color='#111111'),
                                ] 
                            ),

                            # Mobile
                            BoxComponent(
                                layout='baseline',
                                spacing='md',
                                margin='xl',
                                contents=[
                                    IconComponent(url='https://i.imgur.com/0hOfB2w.png', size='md'),
                                    TextComponent(text='Mobile', size='lg', color='#7b7b7b')
                                ]
                            ),
                            # swift
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='Swift', size='sm', color='#111111'),
                                ] 
                            ),

                            # Others
                            BoxComponent(
                                layout='baseline',
                                spacing='md',
                                margin='xl',
                                contents=[
                                    IconComponent(url='https://i.imgur.com/etmNxkf.png', size='md'),
                                    TextComponent(text='Others', size='lg', color='#7b7b7b')
                                ]
                            ),
                            # py c# java html/css git docker
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='Python', size='sm', color='#111111'),
                                    TextComponent(text='C#', size='sm', color='#111111'),
                                    TextComponent(text='Java', size='sm', color='#111111')
                                ] 
                            ),
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='HTML/CSS', size='sm', color='#111111'),
                                    TextComponent(text='Git', size='sm', color='#111111'),
                                    TextComponent(text='Docker', size='sm', color='#111111')
                                ] 
                            ),                                                                                      

                            # DB
                            BoxComponent(
                                layout='baseline',
                                spacing='md',
                                margin='xl',
                                contents=[
                                    IconComponent(url='https://i.imgur.com/DaVwYMh.png', size='md'),
                                    TextComponent(text='Database', size='lg', color='#7b7b7b')
                                ]
                            ),
                            # mysql ms oracle pg redis mongo
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='MySQL', size='sm', color='#111111'),
                                    TextComponent(text='MSSQL', size='sm', color='#111111'),
                                    TextComponent(text='Oracle', size='sm', color='#111111')
                                ] 
                            ),
                            BoxComponent(
                                layout = 'horizontal',
                                spacing = 'md',
                                contents = [
                                    TextComponent(text='PostgreSQL', size='sm', color='#111111'),
                                    TextComponent(text='Redis', size='sm', color='#111111'),
                                    TextComponent(text='Mongo', size='sm', color='#111111')
                                ] 
                            ),

                            SeparatorComponent(margin='xxl'),
                            
                            # footer
                            BoxComponent(
                                layout = 'vertical',
                                spacing = 'md',
                                contents = [
                                    SpacerComponent(size='md'),
                                    ButtonComponent(
                                        style='primary',
                                        height='sm',
                                        color='#00BE00',
                                        action=MessageAction(label="SAM's Portfolio", text='你有什麼作品?'),
                                    ),
                                    ButtonComponent(
                                        style='secondary',
                                        height='sm',                                        
                                        action=URIAction(label="SAM's GitHub", uri='line://app/1570355825-rLKWJZK6'),
                                    )                                                                     
                                ]
                            )
                        ]
                    )
                ]
            )
        )
        message = FlexSendMessage(alt_text="SAM's Skill", contents=bubble)
        return message
示例#9
0
def handle_message(event):
    text = event.message.text  #simplify for receove message
    sender = event.source.user_id  #get user_id
    gid = event.source.sender_id  #get group_id
    #=====[ LEAVE GROUP OR ROOM ]==========[ ARSYBAI ]======================
    if text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
#=====[ TEMPLATE MESSAGE ]=============[ ARSYBAI ]======================
    elif text == '/template':
        buttons_template = TemplateSendMessage(
            alt_text='template',
            template=ButtonsTemplate(
                title='[ TEMPLATE MSG ]',
                text='Tap the Button',
                actions=[
                    MessageTemplateAction(label='Culum 1', text='/arsybai'),
                    MessageTemplateAction(label='CULUM 2', text='/arsybai'),
                    MessageTemplateAction(label='CULUM 3', text='/arsybai')
                ]))

        line_bot_api.reply_message(event.reply_token, buttons_template)
#=====[ CAROUSEL MESSAGE ]==========[ ARSYBAI ]======================
    elif text == '/carousel':
        message = TemplateSendMessage(
            alt_text='OTHER MENU',
            template=CarouselTemplate(columns=[
                CarouselColumn(title='CAROUSEL 1',
                               text='This Carousel URI action',
                               actions=[
                                   URITemplateAction(
                                       label='>carousel 1<',
                                       uri='https://line.me/ti/p/~arsy22bai')
                               ]),
                CarouselColumn(title='ABAI-API',
                               text='API documentation',
                               actions=[
                                   URITemplateAction(
                                       label='>Visit<',
                                       uri='https://arsybaiapi.herokuapp.com')
                               ])
            ]))
        line_bot_api.reply_message(event.reply_token, message)
#=====[ FLEX MESSAGE ]==========[ ARSYBAI ]======================
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    def Choose_Seat_Message(dict_doc):
        Contents = []
        Seats = [
            'A桌(2人)', 'B桌(2人)', 'C桌(4人)', 'D桌(4人)', 'E桌(4人)', 'F桌(4人)',
            'G桌(4人)', 'H桌(4人)', 'I桌(6人)', 'J桌(6人)'
        ]
        if (int)(dict_doc['Num_People']) <= 2:
            Seats = Seats[0:3]
        elif 2 < (int)(dict_doc['Num_People']) <= 4:
            Seats = Seats[2:8]
        elif 4 < (int)(dict_doc['Num_People']):
            Seats = Seats[-2:]
        elif int(dict_doc['Num_People']) > 6:
            ChooseSeatMessage = TextSendMessage(
                text='因人數較多,麻煩您打電話至店裡,由店內人員幫您安排座位,感謝您!')
            return ChooseSeatMessage
        # 取得順位
        doc_ref = firedb.collection_group('訂位紀錄')
        docs = doc_ref.stream()  # generator
        # 1個ID(collection)算一次迴圈
        for doc in docs:
            for d in doc.to_dict():  # for each in dict
                try:  # 如果他訂的時間一小時內沒有人的話開放位置, 有的話就不開放
                    selected_time = datetime.strptime(
                        dict_doc['selected_time'], '%Y-%m-%dT%H:%M')
                    selected_time_plus = datetime.strptime(
                        dict_doc['selected_time'],
                        '%Y-%m-%dT%H:%M') + timedelta(hours=1)
                    other_selected_time = datetime.strptime(
                        doc.to_dict()[d][1], '%Y-%m-%dT%H:%M')
                    if selected_time <= other_selected_time and selected_time_plus >= other_selected_time:
                        Seats.remove(doc.to_dict()[d][3])
                    else:
                        pass
                except:
                    pass

        for M in range(len(Seats)):
            Contents.append({
                "type": "bubble",
                "body": {
                    "type":
                    "box",
                    "layout":
                    "vertical",
                    "contents": [{
                        "type": "button",
                        "style": "primary",
                        "color": "#905c44",
                        "action": {
                            "type": "postback",
                            "label": Seats[M],
                            "data": Seats[M]
                        },
                        "height": "sm"
                    }]
                },
                "styles": {
                    "footer": {
                        "separator": True
                    }
                }
            })
        ChooseSeatMessage = FlexSendMessage(alt_text='選擇座位',
                                            position='absolute',
                                            contents={
                                                "type": "carousel",
                                                "contents": Contents
                                            })

        return ChooseSeatMessage
示例#11
0
def handle_text_message(event):
    text = event.message.text.lower()
    words = text.split()
    
    if words[0] == "kony":
        if words[1] in VOTE_REGEX: # vote
            if words[2].isdigit() and words[3].isdigit():
                # Get user id and username
                profile = line_bot_api.get_profile(event.source.user_id)
                name = profile.display_name.replace(" ","_")
                
                # rate cewe to database
                id_cewe , score = words[2] , words[3]
                db.__rate_cewe__(name,id_cewe,score)
                
                # check image is exist and send flex message
                url_img = HTTPS+STATIC+"/"+str(id_cewe)+".jpg"
                if os.path.isfile(LOCAL_STATIC+"/"+str(id_cewe)+".jpg"):
                    list_voter = db.__get_rated__(id_cewe)
                                                    
                    line_bot_api.reply_message(
                        event.reply_token,
                        FlexSendMessage(alt_text='hello',
                                        contents=flex.flex_rated(str(id_cewe),
                                                                 url_img,list_voter)))
                else:
                    line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(text="sorry id cewe does not exist"))
        
        elif words[1] == "get" :   
                       
            # get user id and username
            profile = line_bot_api.get_profile(event.source.user_id)
            name = profile.display_name.replace(" ","_")
            
            # get id cewe that not voted by username
            ids_cewe =db. __get_cewe_unvoted__(name)
            
            print(ids_cewe)
            if ids_cewe[0] != -1:
                flex_messages = []
                if len(ids_cewe) > 5:
                    ids_cewe = ids_cewe[:5]
                    
                for id_cewe in ids_cewe:
                    url_img = HTTPS+STATIC+"/"+str(id_cewe)+".jpg"
                    list_voter = db.__get_rated__(id_cewe)
                    
                    flex_message = flex.flex_rated(str(id_cewe),url_img,list_voter)
                    flex_messages.append(flex_message)
                
                print(type(flex_messages[0]))        
                flex_messages = CarouselContainer(flex_messages)
                flex_messages = FlexSendMessage("list cewe",flex_messages)
                line_bot_api.reply_message(event.reply_token,flex_messages)
                    
            else:
                line_bot_api.reply_message(
                        event.reply_token,
                        TextSendMessage(text="you already voted all cewe"))
            
            
        elif text == "kony createtablevoting":
            # create table voting
            db.__create_table__()
            
        elif text == "kony help":
            # send kony help
            __send_help_message__(event)
        
        else: # send kony help if user typo
            __send_help_message__(event)
    def Menu_Message():
        Contents = []
        Menus = []
        Menus.append(
            'https://i.imgur.com/ZSsqBqW.jpg 精緻簡餐 (本店週六、日用餐消費加收一成服務費,若有加贈甜點已美餐60分,送完為止。)\n附餐有:(熱)咖啡、紅茶、綠茶、柚子茶、巧克力、甜湯、綠茶、冰綠茶、咖啡、紅茶、奶茶、檸檬汁、蔓越莓冰醋 >>右滑看菜單>>'
        )
        Menus.append('https://i.imgur.com/SBDmHrJ.jpg 芒果炒雞柳 -詳細介紹- NT$300')
        Menus.append('https://i.imgur.com/JCBXVEq.jpg 東坡肉 -詳細介紹- NT$310')
        Menus.append('https://i.imgur.com/gGhxvM6.jpg 嫩煎牛排 -詳細介紹- NT$320')
        Menus.append('https://i.imgur.com/MhAb8nA.jpg 蒜泥白玉蒸蝦 -詳細介紹- NT$330')
        Menus.append('https://i.imgur.com/JZssJkM.jpg 蒜苗炒松阪牛 -詳細介紹- NT$340')
        Menus.append(
            'https://i.imgur.com/HJr3SU5.jpg 橙汁魚排 外銷日本潮鯛魚排輕裹粉煎酥佐以橙汁醬\n略帶酸甜口味開會美味好滋味 NT$290'
        )
        for M in range(len(Menus)):
            Mlist = Menus[M].split(" ")
            if M == 0:
                Contents.append({
                    "type": "bubble",
                    "hero": {
                        "type": "image",
                        "url": Mlist[0],  # img 網址
                        "size": "full",
                        "aspectRatio": "10:9",
                        "aspectMode": "cover",
                        "backgroundColor": "#FFFFFF"
                    },
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "text",
                            "text": Mlist[1],
                            "weight": "bold",
                            "size": "xl",
                            "margin": "md",
                            "wrap": True
                        }, {
                            "type": "text",
                            "text": Mlist[2],
                            "margin": "md",
                            "wrap": True
                        }, {
                            "type": "text",
                            "text": Mlist[3],
                            "margin": "md",
                            "weight": "bold",
                            "align": "center",
                            "wrap": True
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "spacer",
                            "size": "xxl"
                        }, {
                            "type": "button",
                            "style": "primary",
                            "color": "#905c44",
                            "action": {
                                "type": "postback",
                                "label": "確定訂單",
                                "data": "confirm"
                            }
                        }]
                    }
                })
            else:
                Contents.append({
                    "type": "bubble",
                    "hero": {
                        "type": "image",
                        "url": Mlist[0],  # img 網址
                        "size": "full",
                        "aspectRatio": "10:9",
                        "aspectMode": "cover",
                        "backgroundColor": "#FFFFFF"
                    },
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type": "text",
                            "text": Mlist[1],
                            "weight": "bold",
                            "size": "xl",
                            "margin": "md",
                            "wrap": True
                        }, {
                            "type": "text",
                            "text": Mlist[2],
                            "margin": "md",
                            "wrap": True
                        }, {
                            "type": "text",
                            "text": Mlist[3],
                            "size": "md",
                            "flex": 0
                        }]
                    },
                    "footer": {
                        "type":
                        "box",
                        "layout":
                        "horizontal",
                        "contents": [{
                            "type": "button",
                            "style": "primary",
                            "cornerRadius": "75px",
                            "color": "#905c44",
                            "action": {
                                "type": "postback",
                                "label": "+",
                                "data": '加 ' + Mlist[1]
                            },
                            "height": "sm"
                        }, {
                            "type": "button",
                            "style": "primary",
                            "color": "#905c44",
                            "cornerRadius": "100px",
                            "action": {
                                "type": "postback",
                                "label": "-",
                                "data": '減 ' + Mlist[1]
                            },
                            "height": "sm"
                        }],
                        "flex":
                        0
                    }
                })
        MenuMessage = FlexSendMessage(alt_text='菜單查詢',
                                      position='absolute',
                                      contents={
                                          "type": "carousel",
                                          "contents": Contents
                                      })

        return MenuMessage
    def Cancel_Message(UserId):
        firebase_rec = {}
        doc_ref = firedb.collection('訂位紀錄').document(UserId)
        doc = doc_ref.get().to_dict()
        if doc == None:  # 無過往紀錄
            reply_message = [
                TextSendMessage(text='目前沒有訂位紀錄!!'),
                TextSendMessage(text='如需要訂位,麻煩按下訂位查詢喔~')
            ]
        else:
            reply_message = []
            reply_data = []
            for k, v in doc.items():
                try:
                    if datetime.strptime(v[1], '%Y-%m-%dT%H:%M') < (
                            datetime.now() - timedelta(minutes=30)):
                        pass
                    else:
                        reply_message.append(v[0])
                        reply_message.append(v[1].replace('T', ' '))
                        reply_message.append(v[2])
                        reply_message.append(v[4])
                        reply_data.append(k)
                except:
                    pass

        if len(reply_message) == 0:
            reply_message = [
                TextSendMessage(text='目前沒有訂位紀錄!!'),
                TextSendMessage(text='如需要訂位,麻煩按下預約訂位喔~')
            ]
        else:
            doc_ref = firedb.collection('是否訂位').document(UserId)
            firebase_rec['step'] = 'C1'
            firebase_rec['status'] = 'cancel'
            doc_ref.update(firebase_rec)

            Contents = []
            for t in range(0, len(reply_message), 4):
                Contents.append({
                    "type": "bubble",
                    "body": {
                        "type":
                        "box",
                        "layout":
                        "vertical",
                        "contents": [{
                            "type":
                            "text",
                            "text":
                            "姓名: " + reply_message[t] + "\n訂位時間: " +
                            reply_message[t + 1] + "\n人數: " +
                            reply_message[t + 2] + "\n訂單編號: " +
                            reply_message[t + 3],
                            "margin":
                            "md",
                            "wrap":
                            True
                        }, {
                            "type": "button",
                            "action": {
                                "type": "postback",
                                "label": "取消此次訂位",
                                "data": reply_data[(t // 4)]
                            },
                            "margin": "md",
                            "weight": "bold",
                            "align": "center"
                        }]
                    },
                    "styles": {
                        "footer": {
                            "separator": True
                        }
                    }
                })
                if t == 15: break  # 最多長度為15
            reply_message = [
                TextSendMessage(text='僅顯示15筆訂單'),
                FlexSendMessage(alt_text='取消訂位中',
                                position='absolute',
                                contents={
                                    "type": "carousel",
                                    "contents": Contents
                                })
            ]

        return reply_message
 def Time_Message(number):
     # 選日期
     ntime = datetime.now()
     mtime = ntime + timedelta(days=30)
     if number == 1:
         if len(str(ntime.month)) == 1:
             month = '0' + str(ntime.month)
         else:
             month = str(ntime.month)
         if len(str(ntime.day)) == 1:
             day = '0' + str(ntime.day)
         else:
             day = str(ntime.day)
         nowtime = str(
             ntime.year) + '-' + month + '-' + day + "T11:30"  # 舊版
         if len(str(mtime.month)) == 1:
             month = '0' + str(mtime.month)
         else:
             month = str(mtime.month)
         if len(str(mtime.day)) == 1:
             day = '0' + str(mtime.day)
         else:
             day = str(mtime.day)
         maxtime = str(mtime.year) + '-' + month + '-' + day + "T19:50"
         #print(nowtime)
         TimeMessage = FlexSendMessage(
             alt_text='選時間',
             position='absolute',
             contents={
                 'type': 'bubble',
                 'direction': 'ltr',
                 'hero': {
                     'type': 'image',
                     'url': 'https://i.imgur.com/1sVGKkq.jpg',
                     'size': 'full',
                     'action': {
                         "type": "datetimepicker",
                         "label": "select time",  # 方便用post接收資料
                         "data": "selected time",
                         "mode": "datetime",
                         "initial": nowtime,  # format: date
                         "max": maxtime,
                         "min": nowtime
                     }
                 }
             })
     elif number == 2:
         '''
         if len(str(ntime.minute)) == 1:
             minute = '0'+str(ntime.minute)
         else:
             minute = str(ntime.minute)
         if len(str(ntime.hour)) == 1:
             hour = '0'+str(ntime.hour)
         else:
             hour = str(ntime.hour)
         nowtime = hour + ':' + minute
         #print(nowtime)'''
         TimeMessage = FlexSendMessage(
             alt_text='選時間',
             position='absolute',
             contents={
                 'type': 'bubble',
                 'direction': 'ltr',
                 'hero': {
                     'type': 'image',
                     'url': 'https://i.imgur.com/Cp3nmkw.jpg',
                     'size': 'full',
                     'action': {
                         "type": "datetimepicker",
                         "label": "select time",  # 方便用post接收資料
                         "data": "selected time",
                         "mode": "time",  # format: time
                         "initial": '11:30',
                         "min": '11:30',
                         "max": '19:50'
                     }
                 }
             })
     return TimeMessage
示例#15
0
def handle_message(event):
    global set_
    global stoptime
    global stoppoint
    msg_from = event.reply_token
    msg_text = event.message.text
    user_id = event.source.user_id
    '''if msg_text == '設定する':
        items = {'items': [{'type': 'action','action': {'type': 'message','label': '貯める','text': '貯める'}},{'type': 'action','action': {'type': 'message','label': '使う','text': '使う'}}]}
        line_bot_api.reply_message(msg_from,TextSendMessage(text='まずは貯めるのか使うのかを教えてね!',quick_reply=items))
        setting_[user_id] = {'use':True,'name':'name','point':0,'time':0,'timepoint':0,'ID':'','point2':0,'dbID':0}
        setting_[user_id]['ID'] = user_id
        Time[user_id] = {'count':0,'pointcount_1':0,'pointcount_2':0,'pointcount2_1':0,'pointcount2_2':0}
        setting2[user_id] = {'setting1':False,'setting2':False,'setting3':False,'setting4':False,'setting5':False,'setting6':False,'setting7':False,'setting8':False,'setting9':False,'setting10':False,}
        set_ = 2
'''
    if msg_text == '布教する':
        line_bot_api.reply_message(
            msg_from, TextSendMessage(text='まずは布教したいYoutubeの動画のリンクを送ってね!'))
        setting_[user_id] = {
            'use': True,
            'name': 'name',
            'point': 0,
            'time': 0,
            'timepoint': 0,
            'ID': '',
            'point2': 0,
            'dbID': 0
        }
        setting_[user_id]['ID'] = user_id
        Time[user_id] = {
            'count': 0,
            'pointcount_1': 0,
            'pointcount_2': 0,
            'pointcount2_1': 0,
            'pointcount2_2': 0
        }
        setting2[user_id] = {
            'setting1': False,
            'setting2': False,
            'setting3': False,
            'setting4': False,
            'setting5': False,
            'setting6': False,
            'setting7': False,
            'setting8': False,
            'setting9': False,
            'setting10': False,
        }
        set_ = 2
        setting2[user_id]['setting1'] = True
        return

    if msg_text == 'ゲットする':
        url = geturl()
        flex_ = Flex(url)
        seve2(user_id, url[0])
        flex = {"type": "flex", "altText": "YouTubeリンク", "contents": flex_}
        container_obj = FlexSendMessage.new_from_json_dict(flex)
        line_bot_api.reply_message(msg_from, messages=container_obj)
        return

    if msg_text == 'いいね!':
        url = IDcheck(user_id)
        data = getdata(url)
        hoge = like(user_id, data)
        if hoge == True:
            line_bot_api.reply_message(msg_from,
                                       TextSendMessage(text="いいねを押したよ!"))
        if hoge == False:
            line_bot_api.reply_message(
                msg_from, TextSendMessage(text="いいねを押せなかったよ!\nいいねは1回しか押せないよ!"))
        return


#    if 'メッセージ:' in msg_text:
#        #namecheck(user_id,'test')
#        msg_text_ = msg_text.replace("メッセージ:","")
#        line_bot_api.reply_message(msg_from,TextSendMessage(text='送信したよ!'))
#        line_bot_api.reply_message("U76d18383a9b659b9ab3d0e43d06c1e78",TextSendMessage(text=msg_text_))

    else:
        try:
            if setting2[user_id]['setting1'] == True and user_id == setting_[
                    user_id]['ID']:
                setting2[user_id]['setting1'] = False
                try:
                    if 'youtu.be' in msg_text or 'youtube.com' in msg_text:
                        print('url OK')
                        URL = msg_text
                        setting_youtube[user_id] = {
                            'url': URL,
                            'text': '',
                            'ctg': ''
                        }
                        setting2[user_id]['setting2'] = True
                        line_bot_api.reply_message(
                            msg_from,
                            TextSendMessage(
                                text='URLを設定したよ!\n次はURLの動画についてのコメントを送信してね!!'))
                        return
                except Exception as e:
                    print(str(e))
                    return
        except Exception as e:
            print(str(e))
            items = {
                'items': [{
                    'type': 'action',
                    'action': {
                        'type': 'message',
                        'label': '布教する',
                        'text': '布教する'
                    }
                }, {
                    'type': 'action',
                    'action': {
                        'type': 'message',
                        'label': 'ゲットする',
                        'text': 'ゲットする'
                    }
                }]
            }
            line_bot_api.reply_message(
                msg_from,
                TextSendMessage(
                    text=
                    '新しい動画を探してたら\n「ゲットする」\nと送信してね!\n\n動画を布教する場合は\n「布教する」\nと送信してね!\n\n下のボタンからも送信できるよ!',
                    quick_reply=items))
            return
        if setting2[user_id]['setting2'] == True and user_id == setting_[
                user_id]['ID']:
            try:
                print('ok-12')
                setting_youtube[user_id]['text'] = msg_text
                setting2[user_id]['setting2'] = False
                setting2[user_id]['setting3'] = True
                items = {
                    'items': [{
                        'type': 'action',
                        'action': {
                            'type': 'message',
                            'label': '音楽',
                            'text': '音楽'
                        }
                    }, {
                        'type': 'action',
                        'action': {
                            'type': 'message',
                            'label': 'おもしろ',
                            'text': 'おもしろ'
                        }
                    }, {
                        'type': 'action',
                        'action': {
                            'type': 'message',
                            'label': 'VTuber',
                            'text': 'VTuber'
                        }
                    }]
                }
                line_bot_api.reply_message(
                    msg_from,
                    TextSendMessage(
                        text=
                        'コメントを設定できたよ!\n次は動画のカテゴリーを決めて送信してね!\nカテゴリーは好きに作れるよ!\n\n迷ったときは下のボタンからも送信できるよ!',
                        quick_reply=items))
                return
            except Exception as e:
                print(str(e))
                line_bot_api.reply_message(
                    msg_from, TextSendMessage(text='コメントの設定に失敗したよ!'))
                return

        if setting2[user_id]['setting3'] == True and user_id == setting_[
                user_id]['ID']:
            try:
                print('ok-13')
                setting2[user_id]['setting3'] = False
                setting_youtube[user_id]['ctg'] = msg_text
                id_list = ['test']
                id_list.append(user_id)
                id_list_str = ','.join(id_list)
                youtube_set(setting_youtube[user_id]['url'],
                            setting_youtube[user_id]['text'], "0", id_list_str,
                            setting_youtube[user_id]['ctg'])
                line_bot_api.reply_message(msg_from,
                                           TextSendMessage(text='アップできたよ!'))
                return
            except Exception as e:
                print(str(e))
                line_bot_api.reply_message(msg_from,
                                           TextSendMessage(text='アップに失敗したよ!'))
                return

        else:
            items = {
                'items': [{
                    'type': 'action',
                    'action': {
                        'type': 'message',
                        'label': '布教する',
                        'text': '布教する'
                    }
                }, {
                    'type': 'action',
                    'action': {
                        'type': 'message',
                        'label': 'ゲットする',
                        'text': 'ゲットする'
                    }
                }]
            }
            line_bot_api.reply_message(
                msg_from,
                TextSendMessage(
                    text=
                    '新しい動画を探してたら\n「ゲットする」\nと送信してね!\n\n動画を布教する場合は\n「布教する」\nと送信してね!\n\n下のボタンからも送信できるよ!',
                    quick_reply=items))
def keyword_flex(event):
    #JSON from LINE SIMULATOR
    carousel_flex = {
        "type": "carousel",
        "contents": [{
            "type": "bubble",
            "size": "micro",
            "hero": {
                "type": "image",
                "url": "https://images.unsplash.com/flagged/photo-1584036561584-b03c19da874c?ixlib=rb-1.2.1&auto=format&fit=crop&w=1489&q=80",
                "size": "full",
                "aspectMode": "cover",
                "aspectRatio": "320:213"
            },
            "body": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "COVID-19 News",
                    "weight": "bold",
                    "size": "md",
                    "color": "#FF0055"
                },
                {
                    "type": "box",
                    "layout": "vertical",
                    "contents": [{
                        "type": "box",
                        "layout": "baseline",
                        "spacing": "sm",
                        "contents": [{
                            "type": "text",
                            "text": "BBC news",
                            "color": "#8f8f8f",
                            "size": "sm",
                            "flex": 5,
                            "margin": "md"
                        }]
                    }]
                }],
                "spacing": "sm",
                "paddingAll": "13px"
            },
            "footer": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "Please click here",
                    "flex": 0,
                    "margin": "md",
                    "action": {
                        "type": "uri",
                        "label": "action",
                        "uri": "https://www.bbc.com/zhongwen/trad/topics/a3b15769-775e-471d-a511-a7b78f346859"
                    },
                    "color": "#1ABBAB"
                }]
            },
            "styles": {
                "body": {
                    "backgroundColor": "#FFD711"
                },
                "footer": {
                    "backgroundColor": "#FFD711"
                }
            }
        },
        {
            "type": "bubble",
            "size": "micro",
            "hero": {
                "type": "image",
                "url": "https://www.timeshighereducation.com/sites/default/files/styles/medium/public/hong_kong_baptists_logo.jpg?itok=--nQ3fBu",
                "size": "full",
                "aspectMode": "cover",
                "aspectRatio": "320:213"
            },
            "body": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "HKBU update",
                    "weight": "bold",
                    "size": "md",
                    "color": "#0DE39C"
                },
                {
                    "type": "box",
                    "layout": "vertical",
                    "contents": [{
                        "type": "box",
                        "layout": "baseline",
                        "spacing": "sm",
                        "contents": [{
                            "type": "text",
                            "text": "COVID-19 arrangements",
                            "color": "#8c8c8c",
                            "size": "xs",
                            "flex": 5,
                            "action": {
                                "type": "uri",
                                "label": "action",
                                "uri": "http://ehsu.hkbu.edu.hk/2019-nCOV/"
                            }   
                        }]
                    }]
                }],
                "spacing": "sm",
                "paddingAll": "13px"
            },
            "footer": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "Please click here",
                    "color": "#BB0FFB"
                }]
            },
            "styles": {
                "body": {
                    "backgroundColor": "#E6E6E6"
                },
                "footer": {
                    "backgroundColor": "#E6E6E6"
                }
            }
        },
        {
            "type": "bubble",
            "size": "micro",
            "hero": {
                "type": "image",
                "url": "https://www.chp.gov.hk/files/png/logo_dh_en.png",
                "size": "full",
                "aspectMode": "cover",
                "aspectRatio": "320:213"
            },
            "body": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "COVID-19 FAQ",
                    "weight": "bold",
                    "size": "sm",
                    "color": "#8C02F2"
                },
                {
                    "type": "box",
                    "layout": "vertical",
                    "contents": [{
                        "type": "box",
                        "layout": "baseline",
                        "spacing": "sm",
                        "contents": [{
                            "type": "text",
                            "text": "Something you should be aware",
                            "color": "#8c8c8c",
                            "size": "xs",
                            "flex": 5
                        }]
                    }]
                }],
                "spacing": "sm",
                "paddingAll": "13px"
            },
            "footer": {
                "type": "box",
                "layout": "vertical",
                "contents": [{
                    "type": "text",
                    "text": "Please click here",
                    "color": "#2F71E8"
                }]
            },
            "styles": {
                "body": {
                    "backgroundColor": "#2FF4F1"
                },
                "footer": {
                    "backgroundColor": "#2FF4F1"
                }
            }
        }]
    }

    if re.match("information", event.message.text.lower()):
        
        try:
            message = FlexSendMessage(alt_text="Carousel Checklist", contents=carousel_flex)
            line_bot_api.reply_message(
                event.reply_token,
                message
            )

            return True
        except:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="can't read flex")
            )
            return True
    else:
        return False
示例#17
0
def join(event):
    reply_token = event.reply_token
    data = syoukai()
    flex = {"type": "flex", "altText": "自己紹介", "contents": data}
    container_obj = FlexSendMessage.new_from_json_dict(flex)
    line_bot_api.reply_message(reply_token, messages=container_obj)
示例#18
0
def root():
    if request.method == 'POST':
        print(request.json)
        for event in request.json['events']:
            if event['message']['type'] == 'location':
                my_y = event['message']['latitude']
                my_x = event['message']['longitude']
                sorted_available = get_mask(my_x, my_y, True)
                d = sorted_available[:10].to_dict('records')

                flex_dict = {"type": "carousel", "contents": []}

                # c = []
                for i in d:
                    flex_dict['contents'].append({
                        "type": "bubble",
                        "size": "micro",
                        "body": {
                            "type":
                            "box",
                            "layout":
                            "vertical",
                            "contents": [{
                                "type": "text",
                                "text": i['醫事機構名稱'],
                                "weight": "bold",
                                "size": "md",
                                "wrap": True,
                                "align": "center"
                            }, {
                                "type":
                                "box",
                                "layout":
                                "vertical",
                                "contents": [{
                                    "type":
                                    "text",
                                    "text":
                                    "地址:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "地址:",
                                        "color": "#000000"
                                    }, {
                                        "type": "span",
                                        "text": i['醫事機構地址']
                                    }],
                                    "align":
                                    "start",
                                    "gravity":
                                    "top",
                                    "margin":
                                    "lg"
                                }, {
                                    "type":
                                    "text",
                                    "text":
                                    "地址:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "距離:",
                                        "color": "#000000"
                                    }, {
                                        "type":
                                        "span",
                                        "text":
                                        str(int(i['dist'])) + ' m'
                                    }],
                                    "margin":
                                    "md"
                                }, {
                                    "type":
                                    "text",
                                    "text":
                                    "電話:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "電話:",
                                        "color": "#000000"
                                    }, {
                                        "type": "span",
                                        "text": i['醫事機構電話']
                                    }],
                                    "margin":
                                    "md"
                                }, {
                                    "type":
                                    "text",
                                    "text":
                                    "地址:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "成人口罩數量:",
                                        "color": "#000000"
                                    }, {
                                        "type": "span",
                                        "text": str(i['成人口罩剩餘數'])
                                    }],
                                    "margin":
                                    "md"
                                }, {
                                    "type":
                                    "text",
                                    "text":
                                    "地址:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "兒童口罩數量:",
                                        "color": "#000000"
                                    }, {
                                        "type": "span",
                                        "text": str(i['兒童口罩剩餘數'])
                                    }],
                                    "margin":
                                    "md"
                                }, {
                                    "type":
                                    "text",
                                    "text":
                                    "地址:",
                                    "wrap":
                                    True,
                                    "color":
                                    "#8c8c8c",
                                    "size":
                                    "xs",
                                    "flex":
                                    5,
                                    "contents": [{
                                        "type": "span",
                                        "text": "備註:",
                                        "color": "#000000"
                                    }, {
                                        "type": "span",
                                        "text": str(i['看診備註'])
                                    }],
                                    "margin":
                                    "md"
                                }]
                            }],
                            "spacing":
                            "sm",
                            "paddingAll":
                            "13px"
                        },
                        "footer": {
                            "type":
                            "box",
                            "layout":
                            "vertical",
                            "contents": [{
                                "type": "button",
                                "action": {
                                    "type":
                                    "uri",
                                    "label":
                                    "電話",
                                    "uri":
                                    'tel:' + i['醫事機構電話'].replace(
                                        '(', '').replace(')', '')
                                }
                            }, {
                                "type": "button",
                                "action": {
                                    "type":
                                    "uri",
                                    "label":
                                    "導航",
                                    "uri":
                                    "http://www.google.com.tw/maps/search/" +
                                    urllib.parse.quote(i['醫事機構地址'])
                                }
                            }],
                            "spacing":
                            "sm",
                            "paddingAll":
                            "13px"
                        }
                    })

                line_bot_api.reply_message(
                    event['replyToken'],
                    FlexSendMessage(alt_text="喵", contents=flex_dict))
            else:
                line_bot_api.reply_message(
                    event['replyToken'],
                    TextSendMessage(text='發定位給我LA\nQQ\n喵喵'))
    return '1'
示例#19
0
def handle_text_message(event):
    text = event.message.text

    if text == 'profile':
        if isinstance(event.source, SourceUser):
            profile = line_bot_api.get_profile(event.source.user_id)
            line_bot_api.reply_message(event.reply_token, [
                TextSendMessage(text='Display name: ' + profile.display_name),
                TextSendMessage(text='Status message: ' +
                                profile.status_message)
            ])
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(
                    text="Bot can't use profile API without user ID"))
    elif text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(event.reply_token,
                                       TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
    elif text == 'confirm':
        confirm_template = ConfirmTemplate(text='Do it?',
                                           actions=[
                                               MessageAction(label='Yes',
                                                             text='Yes!'),
                                               MessageAction(label='No',
                                                             text='No!'),
                                           ])
        template_message = TemplateSendMessage(alt_text='Confirm alt text',
                                               template=confirm_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'buttons':
        buttons_template = ButtonsTemplate(
            title='My buttons sample',
            text='Hello, my buttons',
            actions=[
                URIAction(label='Go to line.me', uri='https://line.me'),
                PostbackAction(label='ping', data='ping'),
                PostbackAction(label='ping with text',
                               data='ping',
                               text='ping'),
                MessageAction(label='Translate Rice', text='米')
            ])
        template_message = TemplateSendMessage(alt_text='Buttons alt text',
                                               template=buttons_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'carousel':
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(text='hoge1',
                           title='fuga1',
                           actions=[
                               URIAction(label='Go to line.me',
                                         uri='https://line.me'),
                               PostbackAction(label='ping', data='ping')
                           ]),
            CarouselColumn(text='hoge2',
                           title='fuga2',
                           actions=[
                               PostbackAction(label='ping with text',
                                              data='ping',
                                              text='ping'),
                               MessageAction(label='Translate Rice', text='米')
                           ]),
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'image_carousel':
        image_carousel_template = ImageCarouselTemplate(columns=[
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(label='datetime',
                                            data='datetime_postback',
                                            mode='datetime')),
            ImageCarouselColumn(
                image_url='https://via.placeholder.com/1024x1024',
                action=DatetimePickerAction(
                    label='date', data='date_postback', mode='date'))
        ])
        template_message = TemplateSendMessage(
            alt_text='ImageCarousel alt text',
            template=image_carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)
    elif text == 'imagemap':
        pass
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://example.com/cafe.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(uri='http://example.com',
                                                 label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Brown Cafe', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/gold_star.png'),
                            IconComponent(
                                size='sm',
                                url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0',
                                          size='sm',
                                          color='#999999',
                                          margin='md',
                                          flex=0)
                        ]),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Place',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text='Shinjuku, Tokyo',
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='Time',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='CALL', uri='tel:000000'),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=URIAction(
                                        label='WEBSITE',
                                        uri="https://example.com"))
                ]),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
    else:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text=event.message.text))
示例#20
0
def handle_audio(event):

    name_mp3 = 'recording.mp3'
    name_wav = 'recording.wav'
    message_content = line_bot_api.get_message_content(event.message.id)

    with open(name_mp3, 'wb') as fd:
        for chunk in message_content.iter_content():
            fd.write(chunk)

    os.system('ffmpeg -y -i ' + name_mp3 + ' ' + name_wav + ' -loglevel quiet')
    text = transcribe(name_wav)
    new_text = Converter('zh-hant').convert(text)
    msg = new_text
    if "最新商品消息" in msg or "商品" in msg or "消息" in msg or "最新" in msg:
        carousel_template = CarouselTemplate(columns=[
            CarouselColumn(
                thumbnail_image_url=
                'https://uploads-ssl.webflow.com/575714cc825e8dbc6c83b98a/5fd9c3b6cbffe80c6574ffbe_Animal%20Upon%20Animal_X%27mas_Box_3D_DE.jpg',
                text='聖誕節!所有的動物決定以一場堆疊友誼賽來慶祝佳節。遊戲中,誰能率先將自己所有配件疊上金字塔?',
                title='動物疊疊樂 聖誕金字塔',
                actions=[
                    URIAction(
                        label='介紹影片',
                        uri=
                        'https://www.youtube.com/watch?v=LfsPqDwt5aU&feature=emb_title&ab_channel=%E6%96%B0%E5%A4%A9%E9%B5%9D%E5%A0%A1%E6%A1%8C%E9%81%8ASwanPanasia'
                    )
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://uploads-ssl.webflow.com/575714cc825e8dbc6c83b98a/5f6d89f01b318a3b7ff66db5_Night%20of%20Witnesses_Box.jpg',
                text='山中作客的夜晚,主人慘遭殺害!賓客能否藉由各自職業上的優勢,識破殺人魔與其共犯羅織的謊言?',
                title='目擊者之夜',
                actions=[
                    URIAction(
                        label='介紹影片',
                        uri=
                        'https://www.youtube.com/watch?v=do9kypzitus&feature=emb_title&ab_channel=%E6%96%B0%E5%A4%A9%E9%B5%9D%E5%A0%A1%E6%A1%8C%E9%81%8ASwanPanasia'
                    )
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://uploads-ssl.webflow.com/575714cc825e8dbc6c83b98a/5ab8f125ff9c8b071bceccc8_Bamboleo_Box_3D.jpg',
                text='平衡天使是給所有重力學專家的一款極富技巧性的遊戲!參與遊戲或旁觀都十分有趣。',
                title='平衡天使',
                actions=[
                    URIAction(
                        label='介紹影片',
                        uri=
                        'https://www.youtube.com/watch?v=EmPR8leNWhk&ab_channel=%E6%96%B0%E5%A4%A9%E9%B5%9D%E5%A0%A1%E6%A1%8C%E9%81%8ASwanPanasia'
                    )
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://uploads-ssl.webflow.com/575714cc825e8dbc6c83b98a/5d1c01a5d9148d107e01c93c_BOOOOOM_Box_3D.jpg',
                text='這是個與和平完全無關的遊戲。\n遊戲中展現弱肉強食的黑暗面,讓自己成為唯一倖存的玩家。',
                title='你炸我彈他',
                actions=[
                    URIAction(
                        label='介紹影片',
                        uri=
                        'https://www.youtube.com/watch?v=eeGmS_ZjFR8&ab_channel=%E6%96%B0%E5%A4%A9%E9%B5%9D%E5%A0%A1%E6%A1%8C%E9%81%8ASwanPanasia'
                    ),
                ]),
            CarouselColumn(
                thumbnail_image_url=
                'https://uploads-ssl.webflow.com/575714cc825e8dbc6c83b98a/5e282a8b8fc29850b3980b60_CamelUp_2020_BOX.jpg',
                text='快來見識有史以來最瘋狂的駱駝大賽!對自己看好的駱駝下注,以期在分段賽及賽終時贏得最多獎金。',
                title='駱駝大賽',
                actions=[
                    URIAction(
                        label='介紹影片',
                        uri=
                        'https://www.youtube.com/watch?v=3Iye_KoLu6M&ab_channel=%E6%96%B0%E5%A4%A9%E9%B5%9D%E5%A0%A1%E6%A1%8C%E9%81%8ASwanPanasia'
                    ),
                ])
        ])
        template_message = TemplateSendMessage(alt_text='Carousel alt text',
                                               template=carousel_template)
        line_bot_api.reply_message(event.reply_token, template_message)

    #else:
    #    line_bot_api.reply_message(event.reply_token, TextSendMessage(text = '抱歉,您的訊息中未包含關鍵字,煩請再試一次喔感謝~'))

    if "店鋪位置" in msg or "位置" in msg or "店鋪" in msg:
        line_bot_api.reply_message(
            event.reply_token,
            LocationSendMessage(title='Enjoy Board Game Location',
                                address='NCU EEIT',
                                latitude=24.969388594485057,
                                longitude=121.19105616458904))
        return
    #else:
    #    line_bot_api.reply_message(event.reply_token, TextSendMessage(text = '抱歉,您的訊息中未包含關鍵字,煩請再試一次喔感謝~'))
    #    return

    if "我有問題" in msg or "問題" in msg or "疑問" in msg or "QA" in msg:
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(
                url=
                'https://img.ruten.com.tw/s1/5/5a/87/21715845113479_395.PNG',
                size='full',
                aspect_ratio='15:10',
                aspect_mode='cover',
                action=URIAction(
                    uri=
                    'https://img.ruten.com.tw/s1/5/5a/87/21715845113479_395.PNG',
                    label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='常見問題', weight='bold', size='xl')
                ]),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SeparatorComponent(),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=MessageAction(label='專題成員有誰?', text="專題成員有誰?"),
                    ),
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='訓練時數多久?',
                                                         text="訓練時數多久?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='為何選擇此主題?',
                                                         text="為何選擇此主題?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='資料來源是哪?',
                                                         text="資料來源是哪?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='網站特色?',
                                                         text="網站特色?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='網站品項總共有多少?',
                                                         text="網站品項總共有多少?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='有優惠嗎?',
                                                         text="有優惠嗎?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(
                                        label='可以告訴我完整的訂購流程嗎?',
                                        text="可以告訴我完整的訂購流程嗎?")),
                    SeparatorComponent(),
                    ButtonComponent(style='link',
                                    height='sm',
                                    action=MessageAction(label='期待新的商品推出',
                                                         text="期待新的商品推出"))
                ]))
        message = FlexSendMessage(alt_text="享玩桌遊 EnjoyBoardGame",
                                  contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)
        return
    #else:
    #    line_bot_api.reply_message(event.reply_token, TextSendMessage(text = '抱歉,您的訊息中未包含關鍵字,煩請再試一次喔感謝~'))
    #    return

    if "專題成員有誰?" in msg or "成員" in msg:
        re = "成員包含:\n(組長)夏浩庭\n(技術長)黃凱廷\n(組員)劉哲文\n(組員)王泓智 "
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "訓練時數多久?" in msg or "時數" in msg or "訓練" in msg:
        re = "跨域Java工程師就業養成班,總訓練時數為546小時!"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "為何選擇此主題?" in msg or "主題" in msg:
        re = "目前國際疫情持續延燒,且有越演越烈的趨勢,因此不論是強制隔離或自主居家檢疫,人們待在家中與家人相處的時間大幅增加,但3C產品往往佔據目光,造成\t'''明明相處時間增加,但彼此感情未見增長,衝突反而變多'''\t的情況出現。\n此時桌遊即為多人互動的好選擇!\n既可以遠離螢幕,又可充分與他人互動,故本組以桌遊作為題目進行專題發想,目標建立一個桌遊相關的網站。"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "網站特色?" in msg or "特色" in msg:
        re = "網站提供完整的桌遊檢索系統供使用者搜尋以及購買、追蹤想體驗的桌遊\n亦有關於桌遊的討論區和消息專區,讓使用者觀看其他玩家的評論、遊戲體驗、開箱文,也可透過網站報名桌遊相關的課程、培訓活動。\n此外,前端頁面全為組員自行設計,未套用任何現成版面,敬請您觀賞指教!"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "網站品項總共有多少?" in msg or "品項" in msg or "數量" in msg:
        re = "網站品項目前共有400多個品項可供選購。"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "有優惠嗎?" in msg or "優惠" in msg or "折扣" in msg:
        re = "請至選單點選折扣券圖示即可領取並至官網使用"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "資料來源是哪?" in msg or "資料" in msg or "來源" in msg:
        re = "網站主要商品資訊來源,皆來自新天鵝堡桌遊官方網站提供,真的非常感謝!"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "可以告訴我完整的訂購流程嗎?" in msg or "訂購" in msg or "購買" in msg or "買" in msg:
        re = "請上我們的官方網站,將想購買的商品加入購物車中,點擊結帳按鈕,系統即會導引您完成購買流程,非常感謝您的支持!"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))
    elif "期待新的商品推出" in msg:
        re = "網站如果有新商品推出,皆會公布在最新消息上喔!我們也會發送通知給您~"
        line_bot_api.reply_message(event.reply_token, TextSendMessage(text=re))

    print('Transcribe:', new_text)

    line_bot_api.reply_message(
        event.reply_token, TextSendMessage(text='抱歉,您的訊息中未包含關鍵字,煩請再試一次喔感謝~'))
示例#21
0
    def handle_message(event):
        text = event.message.text
        user_id = event.source.user_id
        sub = routing('^訂閱\s+', text)
        cancel_sub = routing('^取消訂閱\s+', text)
        all_county = routing('所有縣市', text)
        if sub:
            row = find_user_notify_info(user_id)
            bind_message = None
            if row is None:
                bind_message = FlexSendMessage(
                    alt_text=event.message.text,
                    contents=bind_notify_content(NOTIFY_BIND_URL))
            create_user_site(user_id, sub[1])

            if bind_message:
                line_bot_api.reply_message(
                    event.reply_token,
                    messages=[
                        TextSendMessage(
                            text=f'訂閱 {sub[1]} 成功!',
                            quick_reply=QuickReply(items=[
                                QuickReplyButton(action=MessageAction(
                                    label="所有縣市", text="所有縣市"))
                            ])), bind_message
                    ])
            else:
                line_bot_api.reply_message(
                    event.reply_token,
                    messages=TextSendMessage(
                        text=f'訂閱 {sub[1]} 成功!',
                        quick_reply=QuickReply(items=[
                            QuickReplyButton(action=MessageAction(label="所有縣市",
                                                                  text="所有縣市"))
                        ])))
        elif cancel_sub:
            remove_user_site(user_id, cancel_sub[1])
            line_bot_api.reply_message(
                event.reply_token,
                messages=TextSendMessage(
                    text=f'取消訂閱 {cancel_sub[1]} 完成...',
                    quick_reply=QuickReply(items=[
                        QuickReplyButton(
                            action=MessageAction(label="所有縣市", text="所有縣市"))
                    ])))
        elif all_county:
            rows = find_counties()
            contents = counties_template(rows)
            message = FlexSendMessage(
                alt_text=event.message.text,
                contents=CarouselContainer(contents),
                quick_reply=QuickReply(items=[
                    QuickReplyButton(
                        action=MessageAction(label="所有縣市", text="所有縣市"))
                ]))
            line_bot_api.reply_message(event.reply_token, messages=message)
        else:
            rows = find_sites_by_county(text)
            if not rows:
                line_bot_api.reply_message(
                    event.reply_token,
                    messages=TextSendMessage(text="請輸入「所有縣市」"))

            contents, flex_message = [], []
            for index in range(len(rows)):
                if (index + 1) % 10 == 0:
                    flex_message.append(
                        FlexSendMessage(alt_text=text,
                                        contents=CarouselContainer(contents)))
                    contents = []
                else:
                    contents.append(
                        create_county_flex(
                            line_id=user_id,
                            county=rows[index]['county'],
                            site=rows[index]['site_name'],
                            status=rows[index]['status'],
                            update_time=rows[index]['update_time']))
            flex_message.append(
                FlexSendMessage(
                    alt_text=text,
                    contents=CarouselContainer(contents),
                    quick_reply=QuickReply(items=[
                        QuickReplyButton(
                            action=MessageAction(label="所有縣市", text="所有縣市"))
                    ])))
            line_bot_api.reply_message(event.reply_token,
                                       messages=flex_message)
        return 'OK'
示例#22
0
 def display_information(self):
     bubble = BubbleContainer(
         direction='ltr',
         body=BoxComponent(
             layout='vertical',
             contents=[
                 TextComponent(text='Account', weight='bold', size='xxl'),
                 SeparatorComponent(),
                 BoxComponent(layout='vertical',
                              margin='xxl',
                              spacing='sm',
                              contents=[
                                  BoxComponent(
                                      layout='vertical',
                                      contents=[
                                          TextComponent(text='Real Name:',
                                                        size='sm',
                                                        color='#00A29A'),
                                          TextComponent(text='Derek',
                                                        size='sm',
                                                        color='#111111',
                                                        margin='md'),
                                      ])
                              ]),
                 BoxComponent(layout='vertical',
                              margin='xxl',
                              spacing='sm',
                              contents=[
                                  BoxComponent(
                                      layout='vertical',
                                      contents=[
                                          TextComponent(text='Birthday:',
                                                        size='sm',
                                                        color='#00A29A'),
                                          TextComponent(text='1999/12/12',
                                                        size='sm',
                                                        color='#111111',
                                                        margin='md'),
                                      ])
                              ]),
                 BoxComponent(layout='vertical',
                              margin='xxl',
                              spacing='sm',
                              contents=[
                                  BoxComponent(
                                      layout='vertical',
                                      contents=[
                                          TextComponent(text='ID Number:',
                                                        size='sm',
                                                        color='#00A29A'),
                                          TextComponent(text='A123456789',
                                                        size='sm',
                                                        color='#111111',
                                                        margin='md'),
                                      ])
                              ]),
                 BoxComponent(layout='vertical',
                              margin='xxl',
                              spacing='sm',
                              contents=[
                                  BoxComponent(layout='vertical',
                                               contents=[
                                                   TextComponent(
                                                       text='Phone Number:',
                                                       size='sm',
                                                       color='#00A29A'),
                                                   TextComponent(
                                                       text='0922123123',
                                                       size='sm',
                                                       color='#111111',
                                                       margin='md'),
                                               ])
                              ]),
                 BoxComponent(layout='vertical',
                              margin='xxl',
                              spacing='sm',
                              contents=[
                                  BoxComponent(
                                      layout='vertical',
                                      contents=[
                                          TextComponent(text='Address:',
                                                        size='sm',
                                                        color='#00A29A'),
                                          TextComponent(
                                              text='台北市大安區信義路四段 296 號 8 樓',
                                              size='sm',
                                              color='#111111',
                                              margin='md'),
                                      ])
                              ]),
             ]),
     )
     message = FlexSendMessage(alt_text="User Information", contents=bubble)
     self.__message_pusher(message)
示例#23
0
def handle_TextMessage(event):
    if event.message.text.startswith('#'):
        flag = DatabaseManager().verify_insurance(event.source.user_id, event.message.text)
        if flag:
            # line_bot_api.push_message(event.source.user_id,TextSendMessage(text='Please choose the type of Insurance Claims.'))
            message = TemplateSendMessage(
                alt_text='Confirm template',
                template=ConfirmTemplate(
                    text='Please choose the type of Insurance Claims.',
                    actions=[
                        PostbackAction(
                            label='Slight',
                            display_text='Slight',
                            data='slight'
                        ),
                        PostbackAction(
                            label='Serious',
                            display_text='Serious',
                            data='serious'
                        )

                    ]
                )
            )
            line_bot_api.reply_message(event.reply_token, message)

            global record
            record.insurance_id = event.message.text
        else:
            line_bot_api.push_message(event.source.user_id,
                                      TextSendMessage(text="Sorry, this insurance ID doesn't exist"))
    elif event.message.text == 'status':
        temp = DatabaseManager().find_record(event.source.user_id)
        receipt = {
            "type": "bubble",
            "hero": {
                "type": "image",
                "url": temp.image,
                "size": "full",
                "aspectRatio": "20:13",
                "aspectMode": "cover",
                "action": {
                    "type": "uri",
                    "uri": "http://linecorp.com/"
                }
            },
            "body": {
                "type": "box",
                "layout": "vertical",
                "spacing": "md",
                "contents": [
                    {
                        "type": "text",
                        "text": "INSURANCE CLAIMS RECORD",
                        "wrap": True,
                        "weight": "bold",
                        "gravity": "center",
                        "size": "xl"
                    },
                    {
                        "type": "box",
                        "layout": "vertical",
                        "margin": "lg",
                        "spacing": "sm",
                        "contents": [
                            {
                                "type": "box",
                                "layout": "baseline",
                                "spacing": "sm",
                                "contents": [
                                    {
                                        "type": "text",
                                        "text": "ID",
                                        "color": "#aaaaaa",
                                        "size": "sm",
                                        "flex": 1
                                    },
                                    {
                                        "type": "text",
                                        "text": temp.insurance_id,
                                        "wrap": True,
                                        "size": "sm",
                                        "color": "#666666",
                                        "flex": 4
                                    }
                                ]
                            },
                            {
                                "type": "box",
                                "layout": "baseline",
                                "spacing": "sm",
                                "contents": [
                                    {
                                        "type": "text",
                                        "text": "Place",
                                        "color": "#aaaaaa",
                                        "size": "sm",
                                        "flex": 1
                                    },
                                    {
                                        "type": "text",
                                        "text": temp.location,
                                        "wrap": True,
                                        "color": "#666666",
                                        "size": "sm",
                                        "flex": 4
                                    }
                                ]
                            },
                            {
                                "type": "box",
                                "layout": "baseline",
                                "spacing": "sm",
                                "contents": [
                                    {
                                        "type": "text",
                                        "text": "Time",
                                        "color": "#aaaaaa",
                                        "size": "sm",
                                        "flex": 1
                                    },
                                    {
                                        "type": "text",
                                        "text": str(temp.create_time),
                                        "wrap": True,
                                        "color": "#666666",
                                        "size": "sm",
                                        "flex": 4
                                    }
                                ]
                            }
                        ]
                    },
                    {
                        "type": "box",
                        "layout": "vertical",
                        "margin": "xxl",
                        "contents": [
                            {
                                "type": "spacer"
                            },
                            {
                                "type": "image",
                                "url": "https://scdn.line-apps.com/n/channel_devcenter/img/fx/linecorp_code_withborder.png",
                                "aspectMode": "cover",
                                "size": "xl"
                            },
                            {
                                "type": "text",
                                "text": "You can check the insurance claims by using this code",
                                "color": "#aaaaaa",
                                "wrap": True,
                                "margin": "xxl",
                                "size": "xs"
                            }
                        ]
                    }
                ]
            }
        }
        flex_message = FlexSendMessage(
            alt_text='hello',
            contents=receipt
        )
        line_bot_api.reply_message(
            event.reply_token,
            flex_message
        )

    elif event.message.text == 'compensation':
        profile = line_bot_api.get_profile(event.source.user_id)
        msg = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url=profile.picture_url,
                title='Compensation',
                text='Please choose compensation way.',
                actions=[
                    PostbackAction(
                        label='check',
                        display_text='check',
                        data='check'
                    ),
                    PostbackAction(
                        label='e-check',
                        display_text='E-check',
                        data='e-check'
                    ),
                    PostbackAction(
                        label='bank transfer',
                        display_text='Bank Transfer',
                        data='bank transfer'
                    )
                ]
            )
        )
        line_bot_api.reply_message(event.reply_token, msg)

    else:
        profile = line_bot_api.get_profile(event.source.user_id)
        greeting = 'Hi, '
        greeting = greeting + profile.display_name
        line_bot_api.push_message(event.source.user_id,
                                  TextSendMessage(text=greeting))
        line_bot_api.push_message(event.source.user_id,
                                  TextSendMessage(text='Welcome to Insurance Claims Chatbot!'))
        user_record = DatabaseManager().find_user(event.source.user_id)
        if not user_record:
            user = User()
            user.id = event.source.user_id
            user.avatar = profile.picture_url
            user.name = profile.display_name
            DatabaseManager().save_user(user)
        create_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        record = Record()
        record.user_id = event.source.user_id
        record.create_time = create_time
        msg = TemplateSendMessage(
            alt_text='Buttons template',
            template=ButtonsTemplate(
                thumbnail_image_url=profile.picture_url,
                title='Terms of Service',
                text='Please read the Terms of Service first.',
                actions=[
                    PostbackAction(
                        label='Terms of Service',
                        display_text='Terms of Service',
                        data='terms'
                    ),
                    PostbackAction(
                        label='Agree',
                        display_text='Agree',
                        data='agree'
                    )
                ]
            )
        )
        line_bot_api.reply_message(
            event.reply_token,
            msg
        )
示例#24
0
def send_line_api(event, contents, alt_text="hello"):
    message = FlexSendMessage(alt_text=alt_text, contents=contents)

    line_bot_api.reply_message(event.reply_token, message)
示例#25
0
def handle_message(event):
    text = event.message.text #simplify for receove message
    sender = event.source.user_id #get user_id
    gid = event.source.sender_id #get group_id
#=====[ LEAVE GROUP OR ROOM ]==========
    if text == 'bye':
        if isinstance(event.source, SourceGroup):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text='Leaving group'))
            line_bot_api.leave_group(event.source.group_id)
        elif isinstance(event.source, SourceRoom):
            line_bot_api.reply_message(
                event.reply_token, TextSendMessage(text='Leaving group'))
            line_bot_api.leave_room(event.source.room_id)
        else:
            line_bot_api.reply_message(
                event.reply_token,
                TextSendMessage(text="Bot can't leave from 1:1 chat"))
#=====[ TEMPLATE MESSAGE ]=============
    elif text == '/template':
        buttons_template = TemplateSendMessage(
            alt_text='template',
            template=ButtonsTemplate(
                title='[ TEMPLATE MSG ]',
                text= 'Tap the Button',
                actions=[
                    MessageTemplateAction(
                        label='Culum 1',
                        text='/aditmadzs'
                    ),
                    MessageTemplateAction(
                        label='CULUM 2',
                        text='/aditmadzs'
                    ),
                    MessageTemplateAction(
                        label='CULUM 3',
                        text='/aditmadzs'
                    )
                ]
            )
        )
        
        line_bot_api.reply_message(event.reply_token, buttons_template)
#=====[ CAROUSEL MESSAGE ]==========
    elif text == '/carousel':
        message = TemplateSendMessage(
            alt_text='OTHER MENU',
            template=CarouselTemplate(
                columns=[
                    CarouselColumn(
                        title='ADD ME',
                        text='Contact Aditmadzs',
                        actions=[
                            URITemplateAction(
                                label='>TAP HERE<',
                                uri='https://line.me/ti/p/~adit_cmct'
                            )
                        ]
                    ),
                    CarouselColumn(
                        title='Instagram',
                        text='FIND ME ON INSTAGRAM',
                        actions=[
                            URITemplateAction(
                                label='>TAP HERE!<',
                                uri='http://line.me/ti/p/~adit_cmct'
                            )
                        ]
                    )
                ]
            )
        )
        line_bot_api.reply_message(event.reply_token, message)
#=====[ FLEX MESSAGE ]==========
    elif text == 'flex':
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(
                url='https://lh5.googleusercontent.com/VoOmR6tVRwKEow0HySsJ_UdrQrqrpwUwSzQnGa0yBeqSex-4Osar2w-JohT6yPu4Vl4qchND78aU2c5a5Bhl=w1366-h641-rw',
                size='full',
                aspect_ratio='20:13',
                aspect_mode='cover',
                action=URIAction(uri='http://line.me/ti/p/~adit_cmct', label='label')
            ),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='Aditmadzs', weight='bold', size='xl'),
                    # review
                    BoxComponent(
                        layout='baseline',
                        margin='md',
                        contents=[
                            IconComponent(size='sm', url='https://example.com/gold_star.png'),
                            IconComponent(size='sm', url='https://example.com/grey_star.png'),
                            IconComponent(size='sm', url='https://example.com/gold_star.png'),
                            IconComponent(size='sm', url='https://example.com/gold_star.png'),
                            IconComponent(size='sm', url='https://example.com/grey_star.png'),
                            TextComponent(text='4.0', size='sm', color='#999999', margin='md',
                                          flex=0)
                        ]
                    ),
                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(
                                        text='Place',
                                        color='#aaaaaa',
                                        size='sm',
                                        flex=1
                                    ),
                                    TextComponent(
                                        text='Tangerang, Indonesia',
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5
                                    )
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(
                                        text='Time',
                                        color='#aaaaaa',
                                        size='sm',
                                        flex=1
                                    ),
                                    TextComponent(
                                        text="10:00 - 23:00",
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # separator
                    SeparatorComponent(),
                    # websiteAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(label='Aditmadzs', uri="https://line.me/ti/p/~adit_cmct")
                    )
                ]
            ),
        )
        message = FlexSendMessage(alt_text="hello", contents=bubble)
        line_bot_api.reply_message(
            event.reply_token,
            message
        )
示例#26
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


#save jpg
    message_content = line_bot_api.get_message_content(event.message.id)
    #save file.jpg
    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)

    message_content = os.path.join('static', 'tmp', dist_name)
    with open(message_content, 'rb') as ff:
        message_content = ff.read()

    print get_prediction(message_content, 'v3-219812', 'ICN7521245635834906')
    abc = get_prediction(message_content, 'v3-219812', 'ICN7521245635834906')
    a1 = str(abc)
    result = re.search('(?<=score: ).*(?=\n)', a1).group()
    result2 = re.search('(?<=display_name: ").*(?="\n)', a1).group()

    b01 = float(result)
    a1 = str(abc)
    a2 = a1[30:50]
    a3 = a1[55:79]
    print type(abc)
    print result

    if (result2 == "tamaki" and b01 >= 0.8):
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://imgur.com/Vsi1nLt.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(
                                    uri='https://imgur.com/Vsi1nLt',
                                    label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='926四葉環', weight='bold', size='xl'),
                    # review

                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='相近',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text=result2,
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='數值',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text=result,
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(
                            label='好微笑看看',
                            uri=
                            'https://www.goodsmile.info/zh/product/7240/%E9%BB%8F%E5%9C%9F%E4%BA%BA+%E5%9B%9B%E8%91%89%E7%92%B0.html'
                        ),
                    ),
                    # separator
                ]),
        )
        message = FlexSendMessage(alt_text="感謝您的使用以下為你分析", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)

    elif (result2 == "sogo" and b01 >= 0.8):
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://imgur.com/oP3mQNC.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(
                                    uri='https://imgur.com/oP3mQNC',
                                    label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='905逢板壯五', weight='bold', size='xl'),
                    # review

                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='相近',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text=result2,
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='數值',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text=result,
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(
                            label='好微笑看看',
                            uri=
                            'https://www.goodsmile.info/zh/product/7175/%E9%BB%8F%E5%9C%9F%E4%BA%BA+%E9%80%A2%E5%9D%82%E5%A3%AF%E4%BA%94.html'
                        ),
                    ),
                    # separator
                ]),
        )
        message = FlexSendMessage(alt_text="感謝您的使用以下為你分析", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)

    elif (result2 == "Kirby"):
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://imgur.com/ec1wSXs.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(
                                    uri='https://imgur.com/ec1wSXs',
                                    label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='544星之卡比', weight='bold', size='xl'),
                    # review

                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='相近',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text=result2,
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='數值',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text=result,
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(
                            label='好微笑看看',
                            uri=
                            'https://www.goodsmile.info/zh/product/5207/%E9%BB%8F%E5%9C%9F%E4%BA%BA+%E5%8D%A1%E6%AF%94.html'
                        ),
                    ),
                    # separator
                ]),
        )
        message = FlexSendMessage(alt_text="感謝您的使用以下為你分析", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)

    elif (result2 == "kirbyPirate" and b01 >= 0.8):
        bubble = BubbleContainer(
            direction='ltr',
            hero=ImageComponent(url='https://imgur.com/Q032z3A.jpg',
                                size='full',
                                aspect_ratio='20:13',
                                aspect_mode='cover',
                                action=URIAction(
                                    uri='https://imgur.com/Q032z3A',
                                    label='label')),
            body=BoxComponent(
                layout='vertical',
                contents=[
                    # title
                    TextComponent(text='此款有盜版嫌疑!!', weight='bold', size='xl'),
                    # review

                    # info
                    BoxComponent(
                        layout='vertical',
                        margin='lg',
                        spacing='sm',
                        contents=[
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='相近',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(text=result2,
                                                  wrap=True,
                                                  color='#666666',
                                                  size='sm',
                                                  flex=5)
                                ],
                            ),
                            BoxComponent(
                                layout='baseline',
                                spacing='sm',
                                contents=[
                                    TextComponent(text='數值',
                                                  color='#aaaaaa',
                                                  size='sm',
                                                  flex=1),
                                    TextComponent(
                                        text=result,
                                        wrap=True,
                                        color='#666666',
                                        size='sm',
                                        flex=5,
                                    ),
                                ],
                            ),
                        ],
                    )
                ],
            ),
            footer=BoxComponent(
                layout='vertical',
                spacing='sm',
                contents=[
                    # callAction, separator, websiteAction
                    SpacerComponent(size='sm'),
                    # callAction
                    ButtonComponent(
                        style='link',
                        height='sm',
                        action=URIAction(
                            label='好微笑看看',
                            uri=
                            'https://www.goodsmile.info/zh/product/7175/%E9%BB%8F%E5%9C%9F%E4%BA%BA+%E9%80%A2%E5%9D%82%E5%A3%AF%E4%BA%94.html'
                        ),
                    ),
                    # separator
                ]),
        )
        message = FlexSendMessage(alt_text="感謝您的使用以下為你分析", contents=bubble)
        line_bot_api.reply_message(event.reply_token, message)

    else:
        line_bot_api.reply_message(event.reply_token,
                                   [TextSendMessage(text='not find')])
示例#27
0
def send_date_picker(reply_token, datepicker):
    line_bot_api = LineBotApi(channel_access_token)
    line_bot_api.reply_message(reply_token, FlexSendMessage("date_picker", datepicker))

    return "OK"
示例#28
0
def sendFlex(event, backdata, user_id):  #彈性配置
    try:
        if not (teamUp.objects.filter(bid=user_id).exists()):  #沒有訂房記錄
            bubble = BubbleContainer(
                direction='ltr',  #項目由左向右排列
                header=BoxComponent(  #標題
                    layout='vertical',
                    contents=[
                        TextComponent(text='可以跑就是Runn-able', weight='bold', size='xl'),
                    ]
                ),
                hero=ImageComponent(  #主圖片
                    url='https://upload.cc/i1/2020/02/23/CrfWMt.png',
                    size='full',
                    aspect_ratio='792:555',  #長寬比例
                    aspect_mode='cover',
                ),
                body=BoxComponent(  #主要內容
                    layout='vertical',
                    contents=[
                        TextComponent(text='按讚、留言,加meToo', size='md'),
                        BoxComponent(
                            layout='baseline',  #水平排列
                            margin='md',
                            contents=[
                                TextComponent(text='按', size='md', color='#999999',flex=0),
                                IconComponent(size='lg',\
                                              url='https://upload.cc/i1/2020/04/19/NLBGdU.png'),
                                TextComponent(text='、 ', size='md', color='#999999',flex=0),
                                IconComponent(size='md',\
                                              url='https://upload.cc/i1/2020/04/19/D7mc9a.png'),
                                TextComponent(text='  ,加me ', size='md', color='#999999', flex=0),
                                IconComponent(size='lg',\
                                              url='https://upload.cc/i1/2020/04/19/DlaV4C.png'),
                            ]
                        ),
                        BoxComponent(
                            layout='vertical',
                            margin='lg',
                            contents=[
                                BoxComponent(
                                    layout='baseline',
                                    contents=[
                                        TextComponent(text='營業地址:', color='#aaaaaa', size='sm', flex=2),
                                        TextComponent(text='320桃園市中壢區中大路300號', color='#666666', size='sm', flex=5)
                                    ],
                                ),
                                SeparatorComponent(color='#0000FF'),
                                BoxComponent(
                                    layout='baseline',
                                    contents=[
                                        TextComponent(text='營業時間:', color='#aaaaaa', size='sm', flex=2),
                                        TextComponent(text="08:30 - 22:30", color='#666666', size='sm', flex=5),
                                    ],
                                ),
                            ],
                        ),
                        BoxComponent(
                            layout='horizontal',
                            margin='xxl',
                            contents=[
                                ButtonComponent(
                                    style='link',
                                    height='sm',
                                    action=URIAction(label='點我查看商城訂單目前狀態',\
                                                     uri="https://liff.line.me/1653880251-yZpK05QY"),
                                )
                            ]
                        ),
                        BoxComponent(
                            layout='horizontal',
                            margin='xxl',
                            contents=[
                                ButtonComponent(
                                    style='secondary',
                                    height='sm',
                                    action=URIAction(label='電話', uri='tel:034257387'),
                                ),
                                ButtonComponent(
                                    style='primary',
                                    height='sm',
                                    action=URIAction(label='揪團',\
                                                     uri="line://app/1653880251-4b2aDNMl")
                                )
                            ]
                        )
                    ],
                ),
                footer=BoxComponent(  #底部版權宣告
                    layout='vertical',
                    contents=[
                        TextComponent(text='Copyright@III DA106 Group5', color='#888888', size='sm', align='center'),
                    ]
                ),
            )
            message = FlexSendMessage(alt_text="準備揪團", contents=bubble)
        else:  #已有訂房記錄
            message = TextSendMessage(text='您目前已有揪團,不能再揪團。')
        line_bot_api.reply_message(event.reply_token, message)
    except:
        line_bot_api.reply_message(event.reply_token,
                                   TextSendMessage(text='sendFlex發生錯誤!'))
示例#29
0
# In[ ]:

#將bubble類型的json 進行轉換變成 Python可理解之類型物件,並將該物件封裝進 Flex Message中
#引用套件
from linebot.models import (
    FlexSendMessage,
    BubbleContainer,
)

import json

#INTRO樣板封裝
bubbleContainer_intro = BubbleContainer.new_from_json_dict(
    json.loads(flexBubbleContainerJsonString_INTRO))
flexBubbleSendMessage_INTRO = FlexSendMessage(alt_text="yourname的個人介紹",
                                              contents=bubbleContainer_intro)

#WORK樣板封裝
bubbleContainer_work = BubbleContainer.new_from_json_dict(
    json.loads(flexBubbleContainerJsonString_WORK))
flexBubbleSendMessage_WORK = FlexSendMessage(alt_text="yourname的工作經歷",
                                             contents=bubbleContainer_work)

#SKILLS樣板封裝
bubbleContainer_skills = BubbleContainer.new_from_json_dict(
    json.loads(flexBubbleContainerJsonString_SKILLS))
flexBubbleSendMessage_SKILLS = FlexSendMessage(alt_text="yourname的專長",
                                               contents=bubbleContainer_skills)

# In[ ]:
示例#30
0
def history_flexMessage(userid,date):
    uri = host + "/nutritionweb/history/" + userid+"/look/0"
    results = userFood.objects.filter(userId=userid,date=date)
    length=len(results)
    def item_loop(length):
        item_list=list()
        iniitem = BoxComponent(

            background_color="#EA8244",
            layout='baseline',
            contents=[
                TextComponent(
                    type="text",
                    text="您於今日還沒有紀錄喔!!!!",
                    color="#FFFFFF",
                    size="xl",
                    wrap=True,
                    align="center",
                ),
            ]
        )
        if length == 0:
            item_list.append(iniitem)
        elif length>10:
            item = BoxComponent(
                background_color="#EA8244",
                layout='baseline',
                contents=[
                    TextComponent(
                        type="text",
                        text="您紀錄太多筆無法喔,可以點擊下方按鈕查看紀錄",
                        color="#FFFFFF",
                        size="xl",
                        wrap=True,
                        align="center",
                    ),
                ]
            )
        else:
            for result in results:
                item = BoxComponent(
                    background_color="#EA8244",
                    layout='baseline',
                        contents=[
                            TextComponent(
                                type="text",
                                text=str(result.food_name),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                            TextComponent(
                                type="text",
                                text=str(result.food_quantity),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                            TextComponent(
                                type="text",
                                text=str(result.food_power),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                            TextComponent(
                                type="text",
                                text=str(result.food_protein),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                            TextComponent(
                                type="text",
                                text=str(result.food_carbohydrate),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                            TextComponent(
                                type="text",
                                text=str(result.food_fat),
                                color="#FFFFFF",
                                size="xs",
                                wrap=True,
                                align="center",
                            ),
                        ]
                    )
                item_list.append(item)

        return item_list

    temp1 = item_loop(length)
    i=0
    temp=[]
    while i < 11:
        if i<len(temp1):
            temp.append(temp1[i])
        else:
            temp.append(BoxComponent(background_color="#EA8244",layout='baseline',contents=[FillerComponent(flex=0)]))
        i+=1
    container = BubbleContainer(
        size='giga',
        body=BoxComponent(
            layout='vertical',
            background_color="#2e2e2e",
            size='sm',
            contents=[
                BoxComponent(
                    layout='vertical',
                    background_color="#2e2e2e",
                    contents=[
                        TextComponent(
                            text='今日飲食紀錄🍽',
                            weight="bold",
                            size="xl",
                            style="normal",
                            decoration="none",
                            gravity="center",
                            align="center",
                            color="#ffffff",
                            offset_bottom="1.25%",
                        ),
                        BoxComponent(
                            layout='baseline',
                            background_color="#EA8244",
                            contents=[
                                TextComponent(
                                    type="text",
                                    text="食物",
                                    size="sm",
                                    align="center",
                                    weight="bold",
                                ),
                                TextComponent(
                                    type='text',
                                    text="數量",
                                    wrap=True,
                                    size="sm",
                                    align="center",
                                    weight="bold",

                                ),
                                TextComponent(
                                    type='text',
                                    text="熱量",
                                    wrap=True,
                                    size="sm",
                                    align="center",
                                    weight="bold",
                                ),
                                TextComponent(
                                    type='text',
                                    text="蛋白質",
                                    wrap=True,
                                    size="sm",
                                    align="center",
                                    weight="bold",
                                ),
                                TextComponent(
                                    type='text',
                                    text="碳水",
                                    wrap=True,
                                    size="sm",
                                    align="center",
                                    weight="bold",
                                ),
                                TextComponent(
                                    type='text',
                                    text="脂肪",
                                    wrap=True,
                                    size="sm",
                                    align="center",
                                    weight="bold",
                                )
                            ]
                        ),
                        temp[0],
                        temp[1],
                        temp[2],
                        temp[3],
                        temp[4],
                        temp[5],
                        temp[6],
                        temp[7],
                        temp[8],
                        temp[9],
                        temp[10],
                    ]
                ),
            ],
        ),
        footer=BoxComponent(
            background_color="#2e2e2e",
            layout='vertical',
            spacing='sm',
            contents=[
                ButtonComponent(
                    style="primary",
                    height="sm",
                    action=URIAction(label="點我查看更多紀錄👀",
                                     uri=uri),
                    color="#EA8244",
                    gravity="center",
                ),
                SpacerComponent(size='sm'),
            ],
            flex=0,
        )
    )



    return FlexSendMessage(alt_text="今日飲食紀錄", contents=container)