def confirm_birth_time(event, line_bot_api): line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='請確認出生時間', template=ConfirmTemplate( text='您的出生時間為 ' + event.message.text + ' 嗎?', actions=[ PostbackAction( label='是', display_text='是', data='action=confirm_birth_time&reply=yes&birth_time=' + event.message.text), PostbackAction(label='否', display_text='否', data='action=confirm_birth_time&reply=no') ])))
def send_ensure_correctIfLine_message(self, reply_token, venue, status): quickReply_message = TextSendMessage( text='你想將' + venue + '的狀態改為目前' + status + ',你確定嗎?', quick_reply=QuickReply(items=[ QuickReplyButton( action=PostbackAction(label='是', data="ensure-ifLine-yes_" + status + "_" + venue, text='我確定')), QuickReplyButton( action=PostbackAction(label='否', data="ensure-ifLine-no_" + venue, text='我不改了,幫我跳回管理表單吧!')) ])) self.line_bot_api.reply_message(reply_token, quickReply_message)
def button(choice, button_color): button = ButtonComponent( style='primary', color=button_color, height='sm', action=PostbackAction(label=choice, data=choice, text=choice), ) return button
def __getSourceCarouselColumn(self): sourceCarouselColumn = CarouselColumn( thumbnail_image_url=self.__sourceColumn.imageUrl, title='來源影像', text='時間:{}'.format(self.__sourceColumn.imageCaptureTime), actions=[PostbackAction(label=' ', data='doNothing')]) return sourceCarouselColumn
def handle_message(event): _id = event.source.user_id profile = line_bot_api.get_profile(_id) UserName = profile.display_name keyWord = ['Taipei', 'New Taipei'] mesg = TextSendMessage(text=event.message.text) if 'Heartbeat' == mesg.text: buttons_template = ButtonsTemplate( text='Hi {} ! Please select the location where you want to query.'. format(str(UserName)), actions=[ PostbackAction( label='Taipei', data='HB_Taipei', text= 'Please wait while your report(Taipei) is being queried.'), PostbackAction( label='New Taipei part A', data='HB_NewTaipei_A', text= 'Please wait while your report(New Taipei part A) is being queried' ), PostbackAction( label='New Taipei part B', data='HB_NewTaipei_B', text= 'Please wait while your report(New Taipei part B) is being queried' ), PostbackAction( label='New Taipei part C', data='HB_NewTaipei_C', text= 'Please wait while your report(New Taipei part C) is being queried' ) ]) template_mesg = TemplateSendMessage(alt_text='the Menu button', template=buttons_template) line_bot_api.reply_message(event.reply_token, template_mesg) if 'Outlier' == mesg.text: replyTXT = "Hi {} ! It is under construction.".format(str(UserName)) mesg = TextSendMessage(text=replyTXT) line_bot_api.reply_message(event.reply_token, mesg)
def send_ensure_correctCurrent_message(self, reply_token, venue): confirm_template = ConfirmTemplate( text=venue + '最新的照片即將上傳,你確定嗎?', actions=[ PostbackAction(label='是', data="ensure-currentSituation-yes", text='我確定'), PostbackAction(label='否', data="ensure-currentSituation-no", text='我不改了,幫我跳回管理表單吧!') ]) template_message = TemplateSendMessage(alt_text='確認拍照是否上傳', template=confirm_template) self.line_bot_api.reply_message(reply_token, template_message)
def confirm_phone(event, line_bot_api): line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='請確認電話號碼', template=ConfirmTemplate( text='您的電話號碼是 ' + event.message.text + ' 嗎?', actions=[ PostbackAction( label='是', display_text='是', data='action=confirm_phone&reply=yes&phone=' + event.message.text), PostbackAction(label='否', display_text='否', data='action=confirm_phone&reply=no') ])))
def quick_reply_festival(): textQuickReplyButton_moon = QuickReplyButton(action=PostbackAction( label="中秋節", data="keyword=中秋料理", text="中秋節相關食譜")) textQuickReplyButton_dragon = QuickReplyButton(action=PostbackAction( label="端午節", data="keyword=端午包粽", text="端午節相關食譜")) textQuickReplyButton_halloween = QuickReplyButton( action=PostbackAction( label="萬聖節", data="keyword=萬聖節", text="萬聖節相關食譜")) textQuickReplyButton_Merry = QuickReplyButton(action=PostbackAction( label="聖誕節", data="keyword=聖誕大餐", text="聖誕節相關食譜")) textQuickReplyButton_love = QuickReplyButton(action=PostbackAction( label="情人節", data="keyword=情人節", text="情人節相關食譜")) textQuickReplyButton_Lantern = QuickReplyButton(action=PostbackAction( label="元宵節", data="keyword=元宵湯圓", text="元宵節相關食譜")) textQuickReplyButton_newyear = QuickReplyButton(action=PostbackAction( label="過年年菜", data="keyword=年菜", text="過年年菜相關食譜")) ## 設計節慶 QuickReplyButton的List quickReplyList_Festival = QuickReply(items=[ textQuickReplyButton_moon, textQuickReplyButton_dragon, textQuickReplyButton_halloween, textQuickReplyButton_Merry, textQuickReplyButton_love, textQuickReplyButton_Lantern, textQuickReplyButton_newyear ]) return TextSendMessage(text='發送問題給用戶,請用戶回答', quick_reply=quickReplyList_Festival)
def lambda_handler(event, context): today = datetime.date.today() if is_holiday(today): return { 'statusCode': 200, 'body': json.dumps('ok', ensure_ascii=False) } try: print(event) line_bot_api = LineBotApi(channel_access_token=os.environ['ACCESS_TOKEN']) buttons_tmplate_messages = TemplateSendMessage( alt_text='Buttons template', template=ButtonsTemplate( title='ぶぶチェック', text='水のんだ?', actions=[ PostbackAction( label='のんだ!', display_text='のんだ!', data='status=ok' ), PostbackAction( label='のんでない!', display_text='のんでない!', data='status=ng' ) ] ) ) line_bot_api.push_message(os.environ['GROUP_ID'], buttons_tmplate_messages) return { 'statusCode': 200, 'body': json.dumps('ok', ensure_ascii=False) } except: traceback.print_exc() return { 'statusCode': 200, 'body': json.dumps('ok', ensure_ascii=False) }
def activationMsg(self): # Lineビーコンが接続された場合、もし0:未設定なら設定プロセスを起動する if self.__user_data.json_data['use_line_beacon'] is 0: confirm_template = ConfirmTemplate( text= "LINE beacon が接続されたようです。Beacon Ecoを使用しますか?\nこれを用いることでスマホがビーコンから遠くにあるときはセンサを省エネ化し、センサ寿命を延ばすことができます。\nbeacon と話しかけると設定を変更できます。", actions=[ PostbackAction(label='Yes', data='set_beacon_on', displayText='はい!'), PostbackAction(label='No', data='set_beacon_off', displayText='いいえ'), ]) template_message = TemplateSendMessage(alt_text='Confirm alt text', template=confirm_template) self.__line_bot_api.reply_message(self.__reply_token, template_message)
def what_would_you_like_to_learn(event): """ Ask user what they would like to learn and redirect with postback messages. :param event <event>: the message """ learning_choices = TemplateSendMessage( alt_text='Buttons template', template=ButtonsTemplate( thumbnail_image_url='https://i.imgur.com/xHzymxe.gif', title='今天想學些什麼?', text='抱歉,你能選的只有:', actions=[ PostbackAction(label='Python', data='action=register_user&' + str(event.source.user_id) + '&Python'), PostbackAction(label='想學其他東西點這邊', data='demande=learn_sth_else') ])) return learning_choices
def confirm_user_info(event, line_bot_api, user_name, user_gender, user_birth_day, user_birth_time): line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='確認所有資料', template=ConfirmTemplate( text='您是 [' + user_name + '], ' + user_gender + '性, 生日為 ' + user_birth_day[:4] + '/' + user_birth_day[4:6] + '/' + user_birth_day[-2:] + ' ' + user_birth_time + ' ?', actions=[ PostbackAction(label='是', display_text='是', data='action=confirm_user_info&reply=yes'), PostbackAction(label='否', display_text='否', data='action=confirm_user_info&reply=no') ])))
def handle_FollowEvent(event): button_template_message = ButtonsTemplate( thumbnail_image_url= "https://obs.line-scdn.net/0h_TFUioZ5AHt7LCh0KO1_LFpxCxlITh5wWUpIGVwkXE1RHEBDExhPHg0sWhwBT0AuT0gbHjAsVh5XFUQrQA9OTg4pV09fGw/f256x256", title='Module List', text='Welcome to follow, click one to get the module instruction:', image_size="contain", actions=[ PostbackAction(label='Publish & Search', data='#Module 1 Instruction'), PostbackAction(label='News Summaries', data='#Module 2 Instruction'), PostbackAction(label='Anti-Coronavirus', data='#Module 3 Instruction'), ]) line_bot_api.reply_message( event.reply_token, TemplateSendMessage(alt_text="The Module Instruction", template=button_template_message))
def after_preference2(event=None, line_bot_api=None): user_id = event.source.user_id postback = getattr(event, "postback", None) if postback is not None: _place_sports = postback.data.split("&")[1] repo.update_users(user_id, "place_sports", _place_sports) _text = "それじゃあ、どうやって目標を達成しようか?" _h = MODE.AFTER_PREFERENCE3.hash Session_interface.set_waiting_mode(user_id, MODE.AFTER_PREFERENCE3) line_bot_api.push_message(user_id, TextSendMessage(text=_text, quick_reply=QuickReply( items=[ QuickReplyButton(action=PostbackAction(label="食事中心", data=_h+"&食事中心", text="食事中心")), QuickReplyButton(action=PostbackAction(label="運動中心", data=_h+"&運動中心", text="運動中心")), QuickReplyButton(action=PostbackAction(label="どっちも", data=_h+"&どっちも", text="どっちも")) ] )))
def test_image_carousel_column(self): arg = { 'image_url': 'https://example.com/bot/images/item1.jpg', 'action': PostbackAction(label='Buy', data='action=buy&itemid=555') } self.assertEqual( self.serialize_as_dict(arg), ImageCarouselColumn(**arg).as_json_dict() )
def send_ensureIfLine_message(self, reply_token, venue): confirm_template = ConfirmTemplate( title='你確定要開啟' + venue + '的排隊提醒嗎?', text='我們會在排隊時間小於15分鐘時提醒你', actions=[ PostbackAction(label='好', data="remind-ifLine_" + venue, text='好!'), PostbackAction(label='先不要', data="remind-ifLine-no", text='先不要!') ]) confirm_template_message = TemplateSendMessage( alt_text='註冊提醒', template=confirm_template) self.line_bot_api.reply_message(reply_token, confirm_template_message)
def menu_buttons(words): quick_buttons = [] for option in ["absence", "tardiness", "leave_early", "contactQuestion", "answerSubmit", "others"]: quick_buttons.append(QuickReplyButton( action=PostbackAction( label=words[option], data="menu_" + option, display_text=words[option]) )) return quick_buttons
def makeQuickReplyButton(self, result): item = [] for key, value in result.items(): item.append( QuickReplyButton(action=PostbackAction( label=value, data=key, ))) return item
def get_rich_menu(): result = False width = 2500 height = 1686 try: # define a new richmenu rich_menu_to_create = RichMenu( size=RichMenuSize(width=width, height=height), selected=True, name='richmenu', chat_bar_text='メニュー', areas=[ RichMenuArea(bounds=RichMenuBounds(x=0, y=0, width=height, height=height), action=PostbackAction(label='ストーリーをすすめる', data='next_step')), RichMenuArea(bounds=RichMenuBounds(x=height, y=0, width=width - height, height=height / 2), action=PostbackAction(label='中止', data='stop')), RichMenuArea(bounds=RichMenuBounds(x=height, y=height / 2, width=width - height, height=height / 2), action=PostbackAction(label='投票', data='vote')) ]) richMenuId = line_bot_api.create_rich_menu( rich_menu=rich_menu_to_create) # upload an image for rich menu path = settings.STATIC_ROOT + 'images/richmenu.jpeg' with open(path, 'rb') as f: line_bot_api.set_rich_menu_image(richMenuId, "image/jpeg", f) result = True except Exception: result = False print(richMenuId, 'richmenu-id result: ' + str(result))
def insert(): thanks = [ '嬉しいわ。', 'お金はまだあるわよね?', '明日もがんばりなさいよ。', '今日はもうおしまいかしら?', 'まだ物足りないわね。', ] value = request.form['value']#大括弧なのに注意。 insert_column(value) #DBにアクセスして最新の貯金1件を取得 sql = "SELECT id FROM users;" with conn.cursor() as cur: cur.execute(sql) userID = cur.fetchall() IDs = [] for user in userID: IDs.append(user[0]) for id in IDs: line_bot_api.push_message( id,[ TextSendMessage( text = f'{value}円貯金してくれてありがとうね、{random.choice(thanks)}', quick_reply = QuickReply( items = [ QuickReplyButton( action = PostbackAction(label = "1週間分の貯金額",data = "1週間") ), QuickReplyButton( action = PostbackAction(label = "1ヶ月分の貯金額",data = "1ヶ月") ), QuickReplyButton( action = PostbackAction(label = "1年分の貯金額",data = "1年") ) ] ) ) ] ) return "Insert done." #Noneを返すとstatus code が500になる。
def handle_message(event): user_message = event.message.text if user_message in city_list: city_id = city_dict[user_message] text_message = get_weather_info(city_id) confirm_template_message = TemplateSendMessage( alt_text='Confirm template', template=ConfirmTemplate(text=user_message + 'を登録しますか?', actions=[ PostbackAction(label='はい', display_text='はい', data=city_id), PostbackAction(label='いいえ', display_text='いいえ', data='no') ])) messages = [ TextSendMessage(text=text_message), confirm_template_message ] elif '一覧' in user_message: text_message = '以下、対応地域一覧です。\n' + '\n'.join(city_list) messages = [TextSendMessage(text=text_message)] else: my_city = db.session.query(MyCity).filter( MyCity.user_id == event.source.user_id).first() if my_city: text_message1 = get_weather_info(my_city.city_id) text_message2 = '対応地域を知りたい場合は、「一覧」と話しかけてください。' messages = [ TextSendMessage(text=text_message1), TextSendMessage(text=text_message2) ] else: text_message1 = '久留米' text_message2 = '上記、入力例です。以下、対応地域一覧です。\n' + '\n'.join(city_list) messages = [ TextSendMessage(text=text_message1), TextSendMessage(text=text_message2) ] line_bot_api.reply_message(event.reply_token, messages)
def phase_intermediate(event): color_dict = { 'red': '紅', 'orange': '橙', 'yellow': '黃', 'green': '綠', 'blue': '藍', 'purple': '紫' } reply_dict = { 'mode': '[2/4] 今晚,繼續來點雙色打光!\n請選擇色彩變化梯度:', 'gradient_factor': '[3/4] 今晚,還想來點雙色打光!\n請選擇第一道色彩:', 'first_tone': '[4/4] 今晚,最後來點雙色打光!\n請選擇第二道色彩:' } quick_button_dict = { 'mode': [ QuickReplyButton(action=PostbackAction( label=i, display_text=f'變化梯度:{i}', data=f'gradient_factor={i}')) for i in (5, 10, 50, 100) ], 'gradient_factor': [ QuickReplyButton(action=PostbackAction( label=j, display_text=f'第一道色彩:{j}', data=f'first_tone={i}')) for i, j in color_dict.items() ], 'first_tone': [ QuickReplyButton(action=PostbackAction( label=j, display_text=f'第二道色彩:{j}', data=f'second_tone={i}')) for i, j in color_dict.items() ] } user_id = event.source.user_id postback_data = event.postback.data current_phase = postback_data.split('=')[0] CallDatabase.update_record(user_id, current_phase, postback_data.split('=')[1]) line_bot_api.reply_message( event.reply_token, TextSendMessage( text=reply_dict[current_phase], quick_reply=QuickReply(items=quick_button_dict[current_phase])))
def postbackevent(event): answer = db.session.query(Answer).all() print(event.postback.data) print(answer[-1].answer) if event.postback.data == "retry": instruments = db.session.query(Instruments).filter(Instruments.userid == event.source.user_id).first() instruments.status = "registing" db.session.add(instruments) db.session.commit() line_bot_api.reply_message( event.reply_token, TextSendMessage(text="もう一度自己紹介を入力してね") ) elif event.postback.data == "ok": instruments = db.session.query(Instruments).filter(Instruments.userid == event.source.user_id).first() instruments.status = "registed" db.session.add(instruments) db.session.commit() line_bot_api.reply_message( event.reply_token, TextSendMessage(text="登録しました") ) elif event.postback.data == answer[-1].answer: line_bot_api.reply_message( event.reply_token, TextSendMessage(text="正解!!!") ) elif event.postback.data != answer[-1].answer: line_bot_api.reply_message( event.reply_token, TextSendMessage(text="違うよ!!") ) instruments = db.session.query(Instruments).filter(Instruments.status == "registed").all() quizmember = db.session.query(Instruments.userid).filter(Instruments.status == "registed").all() quizmembericon = db.session.query(Instruments.icon).filter(Instruments.status == "registed").all() count = len(instruments) memberinstruments = db.session.query(Instruments).filter(Instruments.userid == quizmember[num].userid).first() contents = [] for i in range(count): profile = line_bot_api.get_profile(quizmember[i].userid) quizmembername = profile.display_name item = QuickReplyButton(action=PostbackAction(imageUrl = quizmembericon[i].icon, label = quizmembername, display_text = quizmembername + "さん", data = quizmember[i].userid)) contents.append(item) message = TextSendMessage(text = memberinstruments.message, quick_reply=QuickReply(items = contents)) line_bot_api.reply_message( event.reply_token, message )
def _generate_dist_venues(self, dist_venues): actions = [] columns = [] if (len(dist_venues) / 4) <= 1.0: for venue in dist_venues: actions.append( MessageAction(label=venue['title'], text=venue['title'])) template_message = TemplateSendMessage( alt_text='請問你是要問' + dist_venues[0]['dist'] + '的哪個館呢?', template=ButtonsTemplate(title=dist_venues[0]['dist'], text='以下是' + dist_venues[0]['dist'] + '有提供資訊的展館', actions=actions)) return template_message else: empty_action = PostbackAction(label='空白按鈕', data='empty') for venue in dist_venues: actions.append( MessageAction(label=venue['title'], text=venue['title'])) if (len(actions) % 3 == 0): column = CarouselColumn(title=venue['dist'], text='以下是' + venue['dist'] + '有提供資訊的展館', actions=actions) columns.append(column) actions = [] while len(actions) % 3 != 0: actions.append(empty_action) column = CarouselColumn(title=venue['dist'], text='以下是' + venue['dist'] + '有提供資訊的展館', actions=actions) columns.append(column) carousel_template = CarouselTemplate(columns=columns) template_message = TemplateSendMessage( alt_text='請問你是要問' + dist_venues[0]['dist'] + '的哪個館呢?', template=carousel_template) return template_message
def handle_follow_event(event=None, line_bot_api=None): user_id = event.source.user_id dur() _text = "数あるダイエットサービスの中から選んでもらえてくれしいです。" line_bot_api.push_message(user_id, TextSendMessage(text=_text)) dur() _text = "あなたの最適なパートナーになれるように頑張ります♪これからよろしくお願いします♪" line_bot_api.push_message(user_id, TextSendMessage(text=_text)) dur() _text = "まずは、あなたのことを知りたいです!性別を教えてください!" Session_interface.set_waiting_mode(user_id=user_id, mode=MODE.AFTER_SEX) line_bot_api.push_message(user_id, TextSendMessage(text=_text, quick_reply=QuickReply( items=[ QuickReplyButton(action=PostbackAction(label="男性", data=MODE.AFTER_SEX.hash+"&男性", text="男性")), QuickReplyButton(action=PostbackAction(label="女性", data=MODE.AFTER_SEX.hash+"&女性", text="女性")), QuickReplyButton(action=PostbackAction(label="その他", data=MODE.AFTER_SEX.hash+"&その他", text="その他")) ] )))
def test_postback(self): arg = { 'label': 'Buy', 'data': 'action=buy&id=1', 'display_text': 'buy' } self.assertEqual( self.serialize_as_dict(arg, type=self.POSTBACK), PostbackAction(**arg).as_json_dict() )
def test_postback(self): arg = { 'label': 'Buy', 'data': 'action=buy&id=1', 'display_text': 'buy', 'input_option': PostbackInputOption.OPEN_KEYBOARD, 'fill_in_text': 'fill in text', } self.assertEqual(self.serialize_as_dict(arg, type=self.POSTBACK), PostbackAction(**arg).as_json_dict())
def on_follow(display_name): return TemplateSendMessage( alt_text='Hi {0}, nice to meet you :)'.format(display_name), template=ConfirmTemplate( text='Hi {0}, nice to meet you! \n\nMy name is Jeff and this chatbot is made by me.\n\nWould you like to know more about me?'.format(display_name), actions=[ PostbackAction( label='Sure', text='Sure', data='action=WTKM' # Want to know me. ), PostbackAction( label='No', text='No', data='action=DWTKM' # Dont wnt to know me. ) ] ) )
def number_buttons(maxNumber, grade_classroom): quick_buttons = [] number = 1 while number <= maxNumber: quick_buttons.append(QuickReplyButton( action=PostbackAction( label=number, data=f"{grade_classroom}_" + str(number), display_text=number) )) number += 1 return quick_buttons
def confirm_birth_day(event, line_bot_api): line_bot_api.reply_message( event.reply_token, TemplateSendMessage( alt_text='請確認國曆生日', template=ConfirmTemplate( text='您的國曆生日為 ' + event.message.text[:4] + '年' + event.message.text[4:6] + '月' + event.message.text[-2:] + '日 嗎?', actions=[ PostbackAction( label='是', display_text='是', data='action=confirm_birth_day&reply=yes&birth_day=' + event.message.text), PostbackAction(label='否', display_text='否', data='action=confirm_birth_day&reply=no') ])))