def webhook_handler(): body = request.json goto_list = ['state_init', 'oneweek_state4', 'ask_temp_state5', 'ask_rain_state6', 'ask_pheno_state7'] if body['object'] == "page": event = body['entry'][0]['messaging'][0] sender_id = event['sender']['id'] if sender_id in global_config.id_list[0]: machine.state = global_config.get_state(sender_id) print('\nFSM STATE: ' + machine.state) if machine.state in goto_list: machine.go_to(event) elif machine.state == 'finish_state9': machine.go_back(event) else: machine.advance(event) else: global_config.set_id(sender_id) print('\nNew user: '******'state_init') print('\nFSM STATE: ' + machine.state) machine.state = 'state_init' machine.go_to(event) return 'OK'
def on_enter_oneweek_state4(self, event): print("I'm entering state4") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'oneweek_state4') send.forecast_1week(sender_id, global_config.get_zone(sender_id)) self.go_to(event)
def on_enter_ask_pheno_state7(self, event): print("I'm entering state7") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'ask_pheno_state7') send.forecast_3day(sender_id, global_config.get_zone(sender_id), 'Wx') self.go_to(event)
def on_enter_ask_temp_state5(self, event): print("I'm entering state5") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'ask_temp_state5') send.forecast_3day_temp(sender_id, global_config.get_zone(sender_id)) self.go_to(event)
def on_enter_realtime_state3(self, event): print("I'm entering state3") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'realtime_state3') send.send_quick_replies(sender_id, "你想知道\"溫度\"還是\"降雨機率\"還是\"天氣狀態\"?", "state3")
def on_enter_finish_state9(self, event): print("I'm entering state9") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'finish_state9') send.send_start(sender_id, "歡迎下次再來詢問天氣~") send.send_button_message(sender_id, "氣象開放資料平台") self.go_back(event)
def on_enter_ask_rain_state6(self, event): print("I'm entering state6") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'ask_rain_state6') send.forecast_3day(sender_id, global_config.get_zone(sender_id), 'PoP6h') self.go_to(event)
def on_enter_ask_interval_state2(self, event): print("I'm entering state2") sender_id = event['sender']['id'] user_zone = global_config.get_zone(sender_id) send.send_start(sender_id, "你選的是 {0}".format(user_zone)) global_config.set_state(sender_id, 'ask_interval_state2') send.send_quick_replies(sender_id, "你想問\"現在\"還是未來\"一週\"的天氣?", "state2")
def on_enter_ask_oneweek_state8(self, event): print("I'm entering state8") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'ask_oneweek_state8') send.send_start(sender_id, "你還想知道未來一週的天氣嗎?")
def on_enter_ask_zone_state1(self, event): print("I'm entering state1") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'ask_zone_state1') send.send_start(sender_id, "你想知道台南的哪個地區呢?\n")
def on_enter_start_state0(self, event): print("I'm entering state0") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'start_state0') send.send_start(sender_id, "嗨~\n有什麼想問的嗎?")
def on_enter_state_init(self, event): print("I'm entering state init") sender_id = event['sender']['id'] global_config.set_state(sender_id, 'state_init')