def callback(): signature = request.headers['X-Line-Signature'] # get request body as text body = request.get_data(as_text=True) app.logger.info("Request body: " + body) # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) # if event is MessageEvent and message is TextMessage, then reply for event in events: if not isinstance(event, MessageEvent): continue if not isinstance(event.message, TextMessage): continue if not isinstance(event.message.text, str): continue # create FMS machine for user user_id = str(event.source.user_id) if (user_id not in user_machine.keys()): user_machine[user_id] = TocMachine(id=user_id, **chatbot_states_config) machine = user_machine[user_id] print(f"\nFSM STATE: {machine.state}") print(f"REQUEST BODY: \n{body}") response = machine.advance(event) # if response == False: # content = '輸入錯誤!\n請參考:\n1.輸入"me or Me", 回傳自己的id\n2.輸入data20190130, 日期格式為4位數年2位數月2位數日期,得到那日的開高低收\n3.輸入fig20190130, 日期格式同上, 得到那天的分k圖表資料' return 'OK'
def webhook_handler(): signature = request.headers["X-Line-Signature"] # get request body as text body = request.get_data(as_text=True) app.logger.info(f"Request body: {body}") # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) # if event is MessageEvent and message is TextMessage, then echo text for event in events: if not isinstance(event, MessageEvent): continue if not isinstance(event.message, TextMessage): continue if not isinstance(event.message.text, str): continue user_id = event.source.user_id if user_id not in machine: machine[user_id] = TocMachine() print(f"\nFSM STATE: {machine[user_id].state}") print(f"REQUEST BODY: \n{body}") response = machine[user_id].advance(event) if response == False: send_go_to_menu_button(event.reply_token) #send_IP12_carousel(event.reply_token) return "OK"
def makeTocMachine(N): return TocMachine( states=["user"] + Gen1A2B.genStates(N), transitions=[] + Gen1A2B.genTransitions("user", N), initial="user", auto_transitions=False, show_conditions=True, )
def show_fsm(): if "graph" not in machine: machine["graph"] = TocMachine( states=machineData["states"], transitions=machineData["transitions"], initial=machineData["initial"], auto_transitions=machineData["auto_transitions"], show_conditions=machineData["show_conditions"]) machine["graph"].get_graph().draw("fsm.png", prog="dot", format="png") return send_file("fsm.png", mimetype="image/png")
def check_user_exsist(uid): for i in range(len(userOnline)): if (userOnline[i]["uid"] == uid): return i tmp_machine = TocMachine(states=states, transitions=transitions, initial="init", auto_transitions=False, show_conditions=True) userOnline.append({"uid": uid, "state": tmp_machine}) return len(userOnline) - 1
def __init__(self, bot): super(ScheduleActor, self).__init__() self.bot = bot self.scheduler = Scheduler() self.machine = TocMachine( states=[ 'instruction', 'schedule', 'add', 'interval', 'cancel', 'num', 'list', ], transitions=[['schedule', 'instruction', 'schedule'], ['add', 'schedule', 'add'], ['input', 'add', 'interval'], ['go_back', 'interval', 'schedule'], ['cancel', 'schedule', 'cancel'], ['input', 'cancel', 'num'], ['go_back', 'num', 'schedule'], ['list', 'schedule', 'list'], ['go_back', 'list', 'schedule'], ['restart', 'schedule', 'instruction']], initial='instruction', auto_transitions=False, show_conditions=True, ) self.bot.send_text('Welcome to Scheduler,\n' + 'type the following commands -- \n' + 'add: to add a task\n' + 'cancel: to cancel a task\n' + 'list: list tasks\n' + 'restart: to restart the scheduler\n' + 'fsm: to show the fsm picture\n' + '(Note -- add / before command in the group)') self.state = 'schedule' self.machine.schedule()
def callback(): signature = request.headers["X-Line-Signature"] # get request body as text body = request.get_data(as_text=True) app.logger.info("Request body: " + body) # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) for event in events: if event.source.user_id not in machine: machine[event.source.user_id] = TocMachine( states=machineData["states"], transitions=machineData["transitions"], initial=machineData["initial"], auto_transitions=machineData["auto_transitions"], show_conditions=machineData["show_conditions"]) if event.source.user_id not in favorite_movies: favorite_movies[event.source.user_id] = [] if event.source.user_id not in favorite_animates: favorite_animates[event.source.user_id] = [] if event.source.user_id not in win_game: win_game[event.source.user_id] = 0 if isinstance(event, MessageEvent): if isinstance(event.message, TextMessage) and isinstance( event.message.text, str): response = machine[event.source.user_id].advance(event) elif isinstance(event, PostbackEvent): if isinstance(event.postback.data, str): response = machine[event.source.user_id].advance_postback( event) print(f"\nFSM STATE: {machine[event.source.user_id].state}") print(f"REQUEST BODY: \n{body}") #if response == False: #send_text_message(event.reply_token, "Not Entering any State") return "OK"
def webhook_handler(): signature = request.headers["X-Line-Signature"] # get request body as text body = request.get_data(as_text=True) # app.logger.info(f"Request body: {body}") # parse webhook body try: events = parser.parse(body, signature) except InvalidSignatureError: abort(400) # if event is MessageEvent and message is TextMessage, then echo text for event in events: if event.source.user_id not in machine: machine[event.source.user_id] = TocMachine( states=machine_diagram_states, transitions=machine_diagram_transitions, initial="user", auto_transitions=False, show_conditions=True, ) if not isinstance(event, MessageEvent) and not isinstance( event, PostbackEvent): continue # if not isinstance(event.message, TextMessage): # continue # if not isinstance(event.message.text, str): # continue # print(f"\nFSM STATE: {machine.state}") machine[event.source.user_id].state = read_state(event.source.user_id) response = machine[event.source.user_id].advance(event) if not response: send_text_message(event.reply_token, "Not Entering any State") else: update_state(event.source.user_id, machine[event.source.user_id].state) return "OK"
from bottle import route, run, request, abort, static_file from fsm import TocMachine VERIFY_TOKEN = "Your Webhook Verify Token" machine = TocMachine( states=['user', 'state1', 'state2'], transitions=[{ 'trigger': 'advance', 'source': 'user', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'state2', 'conditions': 'is_going_to_state2' }, { 'trigger': 'go_back', 'source': ['state1', 'state2'], 'dest': 'user' }], initial='user', auto_transitions=False, show_conditions=True, ) @route("/webhook", method="GET") def setup_webhook(): mode = request.GET.get("hub.mode")
machine = TocMachine( states=[ 'user', 'state1', 'state2', 'state3', 'state4', 'state5', 'state6', 'state7', 'state8', 'state9', 'state10', 'state11', 'state12', 'state13', 'state14' ], transitions=[{ 'trigger': 'advance', 'source': 'user', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'state2', 'conditions': 'is_going_to_state2' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'state3', 'conditions': 'is_going_to_state3' }, { 'trigger': 'advance', 'source': 'state3', 'dest': 'state4', 'conditions': 'is_going_to_state4' }, { 'trigger': 'advance', 'source': 'state3', 'dest': 'state12', 'conditions': 'is_going_to_state12' }, { 'trigger': 'advance', 'source': 'state4', 'dest': 'state5', 'conditions': 'is_going_to_state5' }, { 'trigger': 'advance', 'source': 'state4', 'dest': 'state13', 'conditions': 'is_going_to_state13' }, { 'trigger': 'advance', 'source': 'state5', 'dest': 'state6', 'conditions': 'is_going_to_state6' }, { 'trigger': 'advance', 'source': 'state5', 'dest': 'state14', 'conditions': 'is_going_to_state14' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'state7', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'state8', 'conditions': 'is_going_to_state8' }, { 'trigger': 'advance', 'source': 'state8', 'dest': 'state9', 'conditions': 'is_going_to_state9' }, { 'trigger': 'advance', 'source': 'state8', 'dest': 'state10', 'conditions': 'is_going_to_state10' }, { 'trigger': 'advance', 'source': 'state8', 'dest': 'state11', 'conditions': 'is_going_to_state11' }, { 'trigger': 'go_back', 'source': [ 'state1', 'state2', 'state6', 'state7', 'state9', 'state10', 'state11', 'state12', 'state13', 'state14' ], 'dest': 'user' }], initial='user', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=["user", "state1", "state2","state3","state4","state5","state6","start","chat","question1","one1","one2","one3","one4","two1","two2","two3","two4","question2"], transitions=[ {"trigger": "advance","source": "start","dest": "state1","conditions": "is_going_to_state1",}, {"trigger": "advance","source": "user","dest": "start","conditions": "is_going_to_start",}, {"trigger": "advance","source": "start","dest": "state2","conditions": "is_going_to_state2",}, {"trigger": "advance","source": "state1","dest": "state3","conditions": "is_going_to_state3",}, {"trigger": "advance","source": "state1","dest": "state4","conditions": "is_going_to_state4",}, {"trigger": "advance","source": "state1","dest": "state5","conditions": "is_going_to_state5",}, {"trigger": "advance","source": "state1","dest": "state6","conditions": "is_going_to_state6",}, {"trigger": "advance","source": "start","dest": "chat","conditions": "is_going_to_chat",}, {"trigger": "advance","source": "chat","dest": "question1","conditions": "is_going_to_question1",}, {"trigger": "advance","source": "chat","dest": "question2","conditions": "is_going_to_question2",}, {"trigger": "advance","source": "question1","dest": "one1","conditions": "is_going_to_one1",}, {"trigger": "advance","source": "question1","dest": "one2","conditions": "is_going_to_one2",}, {"trigger": "advance","source": "question1","dest": "one3","conditions": "is_going_to_one3",}, {"trigger": "advance","source": "question1","dest": "one4","conditions": "is_going_to_one4",}, {"trigger": "advance","source": "question2","dest": "two1","conditions": "is_going_to_two1",}, {"trigger": "advance","source": "question2","dest": "two2","conditions": "is_going_to_two2",}, {"trigger": "advance","source": "question2","dest": "two3","conditions": "is_going_to_two3",}, {"trigger": "advance","source": "question2","dest": "two4","conditions": "is_going_to_two4",}, {"trigger": "go_back2","source": ["one1","one2","one3","one4"],"dest": "start"}, {"trigger": "go_back", "source": ["state1", "state2", "state3","state4","state5","state6","one1","question1","chat"], "dest": "user"}, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "enter_player", "add_player", "success_player", "enter_number", "statistic", "twopt", "threept", "freept", "Rebound", "twoptmade", "twoptmiss", "threeptmade", "threeptmiss", "freeptmade", "freeptmiss", "ORebound", "DRebound", "show", ], transitions=[ { "trigger": "advance", "source": "user", "dest": "enter_player", "conditions": "is_going_to_enter_player", }, { "trigger": "advance", "source": "enter_player", "dest": "add_player", "conditions": "is_going_to_add_player", }, { "trigger": "advance", "source": "add_player", "dest": "success_player", "conditions": "is_going_to_success_player" }, { "trigger": "advance", "source": "success_player", "dest": "enter_player", "conditions": "is_going_to_enter_player2", }, { "trigger": "advance", "source": "enter_player", "dest": "enter_number", "conditions": "is_going_to_enter_number", }, { "trigger": "advance", "source": "enter_number", "dest": "statistic", "conditions": "is_going_to_statistic", }, { "trigger": "advance", "source": "statistic", "dest": "twopt", "conditions": "is_going_to_twopt", }, { "trigger": "advance", "source": "twopt", "dest": "twoptmade", "conditions": "is_going_to_twoptmade", }, { "trigger": "advance", "source": "twopt", "dest": "twoptmiss", "conditions": "is_going_to_twoptmiss", }, { "trigger": "advance", "source": "statistic", "dest": "threept", "conditions": "is_going_to_threept", }, { "trigger": "advance", "source": "threept", "dest": "threeptmade", "conditions": "is_going_to_threeptmade", }, { "trigger": "advance", "source": "threept", "dest": "threeptmiss", "conditions": "is_going_to_threeptmiss", }, { "trigger": "advance", "source": "statistic", "dest": "freept", "conditions": "is_going_to_freept", }, { "trigger": "advance", "source": "freept", "dest": "freeptmade", "conditions": "is_going_to_freeptmade", }, { "trigger": "advance", "source": "freept", "dest": "freeptmiss", "conditions": "is_going_to_freeptmiss", }, { "trigger": "advance", "source": "statistic", "dest": "Rebound", "conditions": "is_going_to_Rebound", }, { "trigger": "advance", "source": "Rebound", "dest": "ORebound", "conditions": "is_going_to_ORebound", }, { "trigger": "advance", "source": "Rebound", "dest": "DRebound", "conditions": "is_going_to_DRebound", }, { "trigger": "advance", "source": "statistic", "dest": "show", "conditions": "is_going_to_show", }, { "trigger": "advance", "source": [ "statistic", "twopt", "threept", "freept", "Rebound", "twoptmade", "twoptmiss", "threeptmade", "threeptmiss", "freeptmade", "freeptmiss", "ORebound", "DRebound", "show" ], "dest": "enter_player", "conditions": "gotit", }, { "trigger": "advance", "source": [ "statistic", "twopt", "threept", "freept", "Rebound", "twoptmade", "twoptmiss", "threeptmade", "threeptmiss", "freeptmade", "freeptmiss", "ORebound", "DRebound", "show" ], "dest": "enter_player", "conditions": "clear", }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'user', 'rabbit', 'rabbit_1', 'rabbit_2', 'rabbit_3', 'cat', 'cat_1', 'cat_2', 'cat_3', 'dog', 'dog_1', 'dog_2', 'dog_3' ], transitions=[{ 'trigger': 'advance', 'source': 'user', 'dest': 'user', 'conditions': 'is_going_to_user' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'rabbit', 'conditions': 'is_going_to_rabbit' }, { 'trigger': 'advance', 'source': 'rabbit', 'dest': 'rabbit', 'conditions': 'is_return_to_rabbit' }, { 'trigger': 'advance', 'source': 'rabbit', 'dest': 'rabbit_1', 'conditions': 'is_going_to_1' }, { 'trigger': 'advance', 'source': 'rabbit', 'dest': 'rabbit_2', 'conditions': 'is_going_to_2' }, { 'trigger': 'advance', 'source': 'rabbit', 'dest': 'rabbit_3', 'conditions': 'is_going_to_3' }, { 'trigger': 'advance', 'source': ['rabbit_1', 'rabbit_2', 'rabbit_3'], 'dest': 'rabbit', 'conditions': 'is_return' }, { 'trigger': 'advance', 'source': ['rabbit_1', 'rabbit_2'], 'dest': 'rabbit_3', 'conditions': 'is_more' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'cat', 'conditions': 'is_going_to_cat' }, { 'trigger': 'advance', 'source': 'cat', 'dest': 'cat', 'conditions': 'is_return_to_cat' }, { 'trigger': 'advance', 'source': 'cat', 'dest': 'cat_1', 'conditions': 'is_going_to_1' }, { 'trigger': 'advance', 'source': 'cat', 'dest': 'cat_2', 'conditions': 'is_going_to_2' }, { 'trigger': 'advance', 'source': 'cat', 'dest': 'cat_3', 'conditions': 'is_going_to_3' }, { 'trigger': 'advance', 'source': ['cat_1', 'cat_2', 'cat_3'], 'dest': 'cat', 'conditions': 'is_return' }, { 'trigger': 'advance', 'source': ['cat_1', 'cat_2'], 'dest': 'cat_3', 'conditions': 'is_more' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'dog', 'conditions': 'is_going_to_dog' }, { 'trigger': 'advance', 'source': 'dog', 'dest': 'dog', 'conditions': 'is_return_to_dog' }, { 'trigger': 'advance', 'source': 'dog', 'dest': 'dog_1', 'conditions': 'is_going_to_1' }, { 'trigger': 'advance', 'source': 'dog', 'dest': 'dog_2', 'conditions': 'is_going_to_2' }, { 'trigger': 'advance', 'source': 'dog', 'dest': 'dog_3', 'conditions': 'is_going_to_3' }, { 'trigger': 'advance', 'source': ['dog_1', 'dog_2', 'dog_3'], 'dest': 'dog', 'conditions': 'is_return' }, { 'trigger': 'advance', 'source': ['dog_1', 'dog_2'], 'dest': 'dog_3', 'conditions': 'is_more' }, { 'trigger': 'advance', 'source': [ 'rabbit', 'rabbit_1', 'rabbit_2', 'rabbit_3', 'cat', 'cat_1', 'cat_2', 'cat_3', 'dog', 'dog_1', 'dog_2', 'dog_3' ], 'dest': 'user', 'conditions': 'is_exit' }, { 'trigger': 'go_back', 'source': ['user', 'rabbit', 'cat', 'dog'], 'dest': 'user', 'conditions': 'is_going_to_user' }], initial='user', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'user', 'greeting', 'rank', 'player', 'showEast', 'showWest', 'showPlayer', 'trap', 'trap2', 'trap3' ], transitions=[{ 'trigger': 'advance', 'source': 'user', 'dest': 'greeting', 'conditions': 'is_going_to_greeting' }, { 'trigger': 'advance', 'source': 'greeting', 'dest': 'rank', 'conditions': 'is_going_to_rank' }, { 'trigger': 'advance', 'source': 'greeting', 'dest': 'player', 'conditions': 'is_going_to_player' }, { 'trigger': 'advance', 'source': 'player', 'dest': 'showPlayer', 'conditions': 'is_going_to_showPlayer' }, { 'trigger': 'advance', 'source': 'player', 'dest': 'trap3', 'conditions': 'is_going_to_trap3' }, { 'trigger': 'advance', 'source': 'greeting', 'dest': 'trap', 'conditions': 'is_going_to_trap' }, { 'trigger': 'advance', 'source': 'rank', 'dest': 'showWest', 'conditions': 'is_going_to_showWest' }, { 'trigger': 'advance', 'source': 'rank', 'dest': 'showEast', 'conditions': 'is_going_to_showEast' }, { 'trigger': 'advance', 'source': 'rank', 'dest': 'trap2', 'conditions': 'is_going_to_trap2' }, { 'trigger': 'go_back', 'source': ['trap', 'showEast', 'showWest', 'showPlayer'], 'dest': 'greeting' }, { 'trigger': 'go_back', 'source': 'trap2', 'dest': 'rank' }, { 'trigger': 'go_back', 'source': 'trap3', 'dest': 'player' }], initial='user', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=["user", "start", "bus_start", "bus_by_stop", "bus_by_stop2", "bus_by_route", "bus_by_route2", "bus_direction", "bus_end", "train_start", "train_start_station", "train_end_station", "train_time", "hsr_start", "hsr_start_station", "hsr_end_station", "hsr_time" ], transitions=[ { "trigger": "advance", "source": "user", "dest": "start", "conditions": "is_going_to_start", }, { "trigger": "advance", "source": "start", "dest": "bus_start", "conditions": "is_going_to_bus_start", }, { "trigger": "advance", "source": "bus_start", "dest": "bus_by_stop", "conditions": "going_bus_by_stop", }, { "trigger": "advance", "source": "bus_by_stop", "dest": "bus_by_stop2", "conditions": "going_bus_by_stop2", }, { "trigger": "advance", "source": "bus_start", "dest": "bus_by_route", "conditions": "goint_bus_by_route", }, { "trigger": "advance", "source": "bus_by_route", "dest": "bus_by_route2", "conditions": "goint_bus_by_route2", }, { "trigger": "advance", "source": ["bus_by_route2", "bus_by_stop2"], "dest": "bus_direction", "conditions": "going_bus_direction", }, { "trigger": "advance", "source": "bus_direction", "dest": "bus_end", "conditions": "is_going_to_bus_end", }, { "trigger": "advance", "source": "start", "dest": "train_start", "conditions": "is_going_to_train", }, { "trigger": "advance", "source": "train_start", "dest": "train_start_station", "conditions": "going_train_start_station", }, { "trigger": "advance", "source": "train_start_station", "dest": "train_end_station", "conditions": "going_train_end_station", }, { "trigger": "advance", "source": "train_end_station", "dest": "train_time", "conditions": "going_train_time", }, { "trigger": "advance", "source": "start", "dest": "hsr_start", "conditions": "is_going_to_hsr", }, { "trigger": "advance", "source": "hsr_start", "dest": "hsr_start_station", "conditions": "going_hsr_start_station", }, { "trigger": "advance", "source": "hsr_start_station", "dest": "hsr_end_station", "conditions": "going_hsr_end_station", }, { "trigger": "advance", "source": "hsr_end_station", "dest": "hsr_time", "conditions": "going_hsr_time", }, { "trigger": "reset", "source": "*", "dest": "user", }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'init', 'say', 'help', 'setup', 'setup_finish', 'search', 'search_self', 'search_choose', 'search_error', 'search_output', 'search_set' ], transitions=[{ 'trigger': 'advance', 'source': 'init', 'dest': 'setup', 'conditions': 'is_going_to_setup' }, { 'trigger': 'advance', 'source': 'setup', 'dest': 'setup_finish', 'conditions': 'is_going_to_setup_finish' }, { 'trigger': 'advance', 'source': 'setup_finish', 'dest': 'say', 'conditions': 'is_going_to_say' }, { 'trigger': 'advance', 'source': 'init', 'dest': 'search', 'conditions': 'is_going_to_search' }, { 'trigger': 'advance', 'source': 'search', 'dest': 'search_self', 'conditions': 'is_going_to_search_self' }, { 'trigger': 'advance', 'source': 'search_self', 'dest': 'search_error', 'conditions': 'is_going_to_search_error' }, { 'trigger': 'advance', 'source': 'search_error', 'dest': 'setup', 'conditions': 'is_going_to_setup' }, { 'trigger': 'advance', 'source': 'search_self', 'dest': 'search_output', 'conditions': 'is_going_to_search_output' }, { 'trigger': 'advance', 'source': 'search_output', 'dest': 'say', 'conditions': 'is_going_to_say' }, { 'trigger': 'advance', 'source': 'search', 'dest': 'search_choose', 'conditions': 'is_going_to_search_choose' }, { 'trigger': 'advance', 'source': 'search_choose', 'dest': 'search_set', 'conditions': 'is_going_to_search_set' }, { 'trigger': 'advance', 'source': 'search_set', 'dest': 'search_output', 'conditions': 'is_going_to_search_output' }, { 'trigger': 'advance', 'source': 'init', 'dest': 'say', 'conditions': 'is_going_to_say' }, { 'trigger': 'advance', 'source': 'init', 'dest': 'help', 'conditions': 'is_going_to_help' }, { 'trigger': 'go_back', 'source': ['say', 'help'], 'dest': 'init' }], initial='init', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "choose", "wellbehave", "cute", "princess", "bad", "princessfinish" ], transitions=[ { "trigger": "advance", "source": "user", "dest": "choose", "conditions": "is_going_to_choose" }, { "trigger": "advance", "source": "choose", "dest": "wellbehave", "conditions": "is_going_to_wellbehave" }, { "trigger": "advance", "source": "choose", "dest": "cute", "conditions": "is_going_to_cute" }, { "trigger": "advance", "source": "choose", "dest": "princess", "conditions": "is_going_to_princess" }, { "trigger": "advance", "source": "princess", "dest": "bad", "conditions": "is_going_to_bad" }, { "trigger": "advance", "source": "princess", "dest": "wellbehave", "conditions": "is_going_to_wellbehave" }, { "trigger": "advance", "source": "princess", "dest": "princessfinish", "conditions": "is_going_to_princessfinish" }, { "trigger": "go_back", "source": [ "choose", "wellbehave", "cute", "princess", "bad", "princessfinish" ], "dest": "user" }, ], initial="user", auto_transitions=False, show_conditions=True, )
def show_fsm(): machine = TocMachine().machine machine.get_graph().draw("fsm.png", prog="dot", format="png") return send_file("fsm.png", mimetype="image/png")
machine = TocMachine( states=[ "user", "state1", "state2", "state3", "state4", "state5", "state6", "state7", "state8" ], transitions=[{ "trigger": "advance", "source": "user", "dest": "state1", "conditions": "is_going_to_state1", }, { "trigger": "advance", "source": "user", "dest": "state2", "conditions": "is_going_to_state2", }, { "trigger": "advance", "source": "user", "dest": "state3", "conditions": "is_going_to_state3", }, { "trigger": "advance", "source": "state3", "dest": "state4", "conditions": "is_going_to_state4", }, { "trigger": "advance", "source": "user", "dest": "state5", "conditions": "is_going_to_state5", }, { "trigger": "advance", "source": "state5", "dest": "state6", "conditions": "is_going_to_state6", }, { "trigger": "advance", "source": "state5", "dest": "state7", "conditions": "is_going_to_state7", }, { "trigger": "advance", "source": "state7", "dest": "state8", "conditions": "is_going_to_state8", }, { "trigger": "go_back", "source": ["state1", "state2", "state3", "state4", "state6"], "dest": "user" }, { "trigger": "go_back5", "source": ["state6", "state7", "state8"], "dest": "state5" }], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'user', 'drink', 'food', 'play', 'drinkname1', 'drinkname2', 'drinkname3', 'drinkname4', 'drinkname5', 'foodname1', 'foodname2', 'foodname3', 'foodname4', 'foodname5', 'zero', 'mid', 'high' ], transitions=[{ 'trigger': 'advance', 'source': 'user', 'dest': 'drink', 'conditions': 'is_going_to_drink' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'food', 'conditions': 'is_going_to_food' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'play', 'conditions': 'is_going_to_play' }, { 'trigger': 'advance', 'source': 'drink', 'dest': 'drinkname1', 'conditions': 'is_going_to_drinkname1' }, { 'trigger': 'advance', 'source': 'drink', 'dest': 'drinkname2', 'conditions': 'is_going_to_drinkname2' }, { 'trigger': 'advance', 'source': 'drink', 'dest': 'drinkname3', 'conditions': 'is_going_to_drinkname3' }, { 'trigger': 'advance', 'source': 'drink', 'dest': 'drinkname4', 'conditions': 'is_going_to_drinkname4' }, { 'trigger': 'advance', 'source': 'drink', 'dest': 'drinkname5', 'conditions': 'is_going_to_drinkname5' }, { 'trigger': 'advance', 'source': 'food', 'dest': 'foodname1', 'conditions': 'is_going_to_foodname1' }, { 'trigger': 'advance', 'source': 'food', 'dest': 'foodname2', 'conditions': 'is_going_to_foodname2' }, { 'trigger': 'advance', 'source': 'food', 'dest': 'foodname3', 'conditions': 'is_going_to_foodname3' }, { 'trigger': 'advance', 'source': 'food', 'dest': 'foodname4', 'conditions': 'is_going_to_foodname4' }, { 'trigger': 'advance', 'source': 'food', 'dest': 'foodname5', 'conditions': 'is_going_to_foodname5' }, { 'trigger': 'advance', 'source': 'play', 'dest': 'zero', 'conditions': 'is_going_to_zero' }, { 'trigger': 'advance', 'source': 'play', 'dest': 'mid', 'conditions': 'is_going_to_mid' }, { 'trigger': 'advance', 'source': 'play', 'dest': 'high', 'conditions': 'is_going_to_high' }, { 'trigger': 'go_back', 'source': [ 'drink', 'food', 'play', 'drinkname1', 'drinkname2', 'drinkname3', 'drinkname4', 'drinkname5', 'foodname1', 'foodname2', 'foodname3', 'foodname4', 'foodname5', 'zero', 'mid', 'high' ], 'dest': 'user' }], initial='user', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'user', 'store', 'borrow', 'stock', 'lie', 'num', 'die1', 'die21', 'die22', 'die31', 'die32', ], transitions=[ { 'trigger': 'advance', 'source': 'user', 'dest': 'store', 'conditions': 'is_going_to_store' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'borrow', 'conditions': 'is_going_to_borrow' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'stock', 'conditions': 'is_going_to_stock' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'lie', 'conditions': 'is_going_to_lie' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'num', 'conditions': 'is_going_to_num' }, { 'trigger': 'advance', 'source': 'user', 'dest': 'die1', 'conditions': 'is_going_to_die1' }, { 'trigger': 'advance', 'source': 'die1', 'dest': 'die21', 'conditions': 'is_going_to_die21' }, { 'trigger': 'advance', 'source': 'die1', 'dest': 'die22', 'conditions': 'is_going_to_die22' }, { 'trigger': 'advance', 'source': 'die21', 'dest': 'die31', 'conditions': 'is_going_to_die31' }, { 'trigger': 'advance', 'source': 'die21', 'dest': 'die32', 'conditions': 'is_going_to_die32' }, { 'trigger': 'go_back', 'source': [ 'store', 'borrow', 'stock', 'lie', 'num', 'die22', 'die31', 'die32' ], 'dest': 'user' } ], initial='user', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "state1", "state2", "show_fsm", "equal", "larger", "smaller" ], transitions=[ { "trigger": "advance", "source": "user", "dest": "state1", "conditions": "is_going_to_state1", }, { "trigger": "advance", "source": "state1", "dest": "state2", "conditions": "is_going_to_state2", }, { "trigger": "advance", "source": "user", "dest": "show_fsm", "conditions": "is_going_to_show_fsm", }, { "trigger": "advance", "source": "state1", "dest": "user", "conditions": "is_going_to_user", }, { "trigger": "advance", "source": "show_fsm", "dest": "smaller", "conditions": "is_going_to_smaller", }, { "trigger": "advance", "source": "show_fsm", "dest": "equal", "conditions": "is_going_to_equal", }, { "trigger": "advance", "source": "show_fsm", "dest": "larger", "conditions": "is_going_to_larger", }, { "trigger": "advance", "source": "smaller", "dest": "smaller", "conditions": "is_going_to_smaller", }, { "trigger": "advance", "source": "smaller", "dest": "larger", "conditions": "is_going_to_larger", }, { "trigger": "advance", "source": "smaller", "dest": "equal", "conditions": "is_going_to_equal", }, { "trigger": "advance", "source": "larger", "dest": "larger", "conditions": "is_going_to_larger", }, { "trigger": "advance", "source": "larger", "dest": "equal", "conditions": "is_going_to_equal", }, { "trigger": "advance", "source": "larger", "dest": "smaller", "conditions": "is_going_to_smaller", }, { "trigger": "advance", "source": "larger", "dest": "user", "conditions": "restart", }, { "trigger": "advance", "source": "smaller", "dest": "user", "conditions": "restart", }, { "trigger": "advance", "source": "show_fsm", "dest": "user", "conditions": "restart", }, { "trigger": "advance", "source": "user", "dest": "user", "conditions": "restart", }, { "trigger": "go_back", "source": "state1", "dest": "user" }, { "trigger": "go_back_state1", "source": "state2", "dest": "state1" }, { "trigger": "go_back_user", "source": "equal", "dest": "user" }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "menu", "show_fsm", "water", "input_weight", "water_volume", "precautions", "feed", "input_location", "pet_shop", "input_age", "feed_amount", "grass", "grass_amount", "about_rabbit", "diet", "body_language", "trivia", "ptt" ], transitions=[ { 'trigger': 'advance', 'source': 'user', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'ptt', 'conditions': 'is_going_to_ptt' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'show_fsm', 'conditions': 'is_going_to_show_fsm' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'water', 'conditions': 'is_going_to_water' }, { 'trigger': 'advance', 'source': 'water', 'dest': 'input_weight', 'conditions': 'is_going_to_input_weight' }, { 'trigger': 'advance', 'source': 'input_weight', 'dest': 'water_volume', 'conditions': 'is_going_to_water_volume' }, { 'trigger': 'advance', 'source': 'water', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'water_volume', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'feed', 'conditions': 'is_going_to_feed' }, { 'trigger': 'advance', 'source': 'feed', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'feed', 'dest': 'input_age', 'conditions': 'is_going_to_input_age' }, { 'trigger': 'advance', 'source': 'input_age', 'dest': 'input_weight', 'conditions': 'is_going_to_input_weight' }, { 'trigger': 'advance', 'source': 'input_weight', 'dest': 'feed_amount', 'conditions': 'is_going_to_feed_amount' }, { 'trigger': 'advance', 'source': 'feed_amount', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'feed', 'dest': 'input_location', 'conditions': 'is_going_to_input_location' }, { 'trigger': 'advance', 'source': 'input_location', 'dest': 'pet_shop', 'conditions': 'is_going_to_pet_shop' }, { 'trigger': 'advance', 'source': 'pet_shop', 'dest': 'input_location', 'conditions': 'is_going_to_input_location' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'grass', 'conditions': 'is_going_to_grass' }, { 'trigger': 'advance', 'source': 'grass', 'dest': 'input_age', 'conditions': 'is_going_to_input_age' }, { 'trigger': 'advance', 'source': 'input_age', 'dest': 'grass_amount', 'conditions': 'is_going_to_grass_amount' }, { 'trigger': 'advance', 'source': 'grass', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'grass_amount', 'dest': 'precautions', 'conditions': 'is_going_to_precautions' }, { 'trigger': 'advance', 'source': 'menu', 'dest': 'about_rabbit', 'conditions': 'is_going_to_about_rabbit' }, { 'trigger': 'advance', 'source': 'about_rabbit', 'dest': 'diet', 'conditions': 'is_going_to_diet' }, { 'trigger': 'advance', 'source': 'diet', 'dest': 'about_rabbit', 'conditions': 'is_going_to_about_rabbit' }, { 'trigger': 'advance', 'source': 'about_rabbit', 'dest': 'body_language', 'conditions': 'is_going_to_body_language' }, { 'trigger': 'advance', 'source': 'body_language', 'dest': 'about_rabbit', 'conditions': 'is_going_to_about_rabbit' }, { 'trigger': 'advance', 'source': 'about_rabbit', 'dest': 'trivia', 'conditions': 'is_going_to_trivia' }, { 'trigger': 'advance', 'source': 'trivia', 'dest': 'about_rabbit', 'conditions': 'is_going_to_about_rabbit' }, { 'trigger': 'advance', 'source': 'diet', 'dest': 'body_language', 'conditions': 'is_going_to_body_language' }, { 'trigger': 'advance', 'source': 'diet', 'dest': 'trivia', 'conditions': 'is_going_to_trivia' }, { 'trigger': 'advance', 'source': 'body_language', 'dest': 'diet', 'conditions': 'is_going_to_diet' }, { 'trigger': 'advance', 'source': 'body_language', 'dest': 'trivia', 'conditions': 'is_going_to_trivia' }, { 'trigger': 'advance', 'source': 'trivia', 'dest': 'diet', 'conditions': 'is_going_to_diet' }, { 'trigger': 'advance', 'source': 'trivia', 'dest': 'body_language', 'conditions': 'is_going_to_body_language' }, { 'trigger': 'advance', 'source': 'trivia', 'dest': 'trivia', 'conditions': 'is_going_to_trivia' }, { 'trigger': 'advance', 'source': 'body_language', 'dest': 'body_language', 'conditions': 'is_going_to_body_language' }, { 'trigger': 'advance', 'source': 'diet', 'dest': 'diet', 'conditions': 'is_going_to_diet' }, { 'trigger': 'advance', 'source': 'diet', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'body_language', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'trivia', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'water_volume', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'feed_amount', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'grass_amount', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'show_fsm', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'water', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'feed', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'grass', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'pet_shop', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { 'trigger': 'advance', 'source': 'about_rabbit', 'dest': 'menu', 'conditions': 'is_going_to_menu' }, { "trigger": "go_back", "source": ["menu", "show_fsm", "precautions", "ptt"], "dest": "user" }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "choose", "hulu", "Miaow", "ke", "ss", "ho", "ou", "y", "kitty1", "flighty1", "nervous1", "watch1", "act1", "enemy1", "new1", "threat1", "protect1", "bloom1", "kitty2", "flighty2", "nervous2", "enemy2", "new2" ], transitions=[ { "trigger": "advance", "source": "user", "dest": "choose", "conditions": "is_going_to_choose", }, { "trigger": "advance", "source": "choose", "dest": "hulu", "conditions": "is_going_to_hulu", }, { "trigger": "advance", "source": "choose", "dest": "Miaow", "conditions": "is_going_to_Miaow", }, { "trigger": "advance", "source": "choose", "dest": "ke", "conditions": "is_going_to_ke", }, { "trigger": "advance", "source": "choose", "dest": "ss", "conditions": "is_going_to_ss", }, { "trigger": "advance", "source": "choose", "dest": "ho", "conditions": "is_going_to_ho", }, { "trigger": "advance", "source": "choose", "dest": "ou", "conditions": "is_going_to_ou", }, { "trigger": "advance", "source": "choose", "dest": "y", "conditions": "is_going_to_y", }, { "trigger": "advance", "source": "hulu", "dest": "kitty1", "conditions": "is_going_to_kitty1", }, { "trigger": "advance", "source": "hulu", "dest": "flighty1", "conditions": "is_going_to_flighty1", }, { "trigger": "advance", "source": "hulu", "dest": "nervous1", "conditions": "is_going_to_nervous1", }, { "trigger": "advance", "source": "Miaow", "dest": "watch1", "conditions": "is_going_to_watch1", }, { "trigger": "advance", "source": "ke", "dest": "act1", "conditions": "is_going_to_act1", }, { "trigger": "advance", "source": "ss", "dest": "enemy1", "conditions": "is_going_to_enemy1", }, { "trigger": "advance", "source": "ss", "dest": "new1", "conditions": "is_going_to_new1", }, { "trigger": "advance", "source": "ho", "dest": "threat1", "conditions": "is_going_to_threat1", }, { "trigger": "advance", "source": "ou", "dest": "protect1", "conditions": "is_going_to_protect1", }, { "trigger": "advance", "source": "y", "dest": "bloom1", "conditions": "is_going_to_bloom1", }, { "trigger": "advance", "source": "kitty1", "dest": "kitty2", "conditions": "is_going_to_kitty2", }, { "trigger": "advance", "source": "flighty1", "dest": "flighty2", "conditions": "is_going_to_flighty2", }, { "trigger": "advance", "source": "nervous1", "dest": "nervous2", "conditions": "is_going_to_nervous2", }, { "trigger": "advance", "source": "enemy1", "dest": "enemy2", "conditions": "is_going_to_enemy2", }, { "trigger": "advance", "source": "new1", "dest": "new2", "conditions": "is_going_to_new2", }, { "trigger": "go_back", "source": [ "watch1", "act1", "threat1", "protect1", "bloom1", "kitty2", "flighty2", "nervous2", "enemy2", "new2" ], "dest": "user" }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "HD_Rader", "set_location", "search", "forcast", "weather", "location", "menu" ], transitions=[{ "trigger": "advance", "source": "user", "dest": "HD_Rader", "conditions": "is_going_to_HD_Rader", }, { "trigger": "advance", "source": "user", "dest": "menu", "conditions": "is_going_to_menu", }, { "trigger": "advance", "source": "user", "dest": "search", "conditions": "is_going_to_search", }, { "trigger": "advance", "source": "user", "dest": "set_location", "conditions": "is_going_to_set_location", }, { "trigger": "advance", "source": "search", "dest": "location", "conditions": "is_going_to_location", }, { "trigger": "advance", "source": "location", "dest": "forcast", "conditions": "is_going_to_forcast", }, { "trigger": "advance", "source": "location", "dest": "weather", "conditions": "is_going_to_weather", }, { "trigger": "go_back", "source": ["forcast", "HD_Rader", "weather", "set_location", "menu"], "dest": "user" }], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ "user", "excited", "chill", "sad", "little_excited", "very_excited", "wine", "travel", "little_sad", "very_sad", "Pop", "HipHop", "EDM", "Rock", "Rap", "Metal", "Fusion", "Classic", "Jazz", "Soul", "mood", "fsm" ], transitions=[ { "trigger": "advance", "source": "*", "dest": "mood", "conditions": "is_going_to_mood", }, { "trigger": "advance", "source": "*", "dest": "fsm", "conditions": "is_going_to_fsm", }, { "trigger": "advance", "source": "mood", "dest": "excited", "conditions": "is_going_to_excited", }, { "trigger": "advance", "source": "mood", "dest": "chill", "conditions": "is_going_to_chill", }, { "trigger": "advance", "source": "mood", "dest": "sad", "conditions": "is_going_to_sad", }, { "trigger": "advance", "source": "excited", "dest": "little_excited", "conditions": "is_going_to_little_excited", }, { "trigger": "advance", "source": "excited", "dest": "very_excited", "conditions": "is_going_to_very_excited", }, { "trigger": "advance", "source": "chill", "dest": "wine", "conditions": "is_going_to_wine", }, { "trigger": "advance", "source": "chill", "dest": "travel", "conditions": "is_going_to_travel", }, { "trigger": "advance", "source": "sad", "dest": "little_sad", "conditions": "is_going_to_little_sad", }, { "trigger": "advance", "source": "sad", "dest": "very_sad", "conditions": "is_going_to_very_sad", }, { "trigger": "advance", "source": "little_excited", "dest": "Pop", "conditions": "is_going_to_Pop", }, { "trigger": "advance", "source": "little_excited", "dest": "HipHop", "conditions": "is_going_to_HipHop", }, { "trigger": "advance", "source": "very_excited", "dest": "EDM", "conditions": "is_going_to_EDM", }, { "trigger": "advance", "source": "very_excited", "dest": "Rock", "conditions": "is_going_to_Rock", }, { "trigger": "advance", "source": "very_excited", "dest": "Rap", "conditions": "is_going_to_Rap", }, { "trigger": "advance", "source": "very_excited", "dest": "Metal", "conditions": "is_going_to_Metal", }, { "trigger": "advance", "source": "wine", "dest": "Fusion", "conditions": "is_going_to_Fusion", }, { "trigger": "advance", "source": "wine", "dest": "Classic", "conditions": "is_going_to_Classic", }, { "trigger": "advance", "source": "wine", "dest": "Jazz", "conditions": "is_going_to_Jazz", }, { "trigger": "advance", "source": "wine", "dest": "Soul", "conditions": "is_going_to_Soul", }, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=['init', 'start', 'order', 'tea', 'add', 'coffee', 'pay', 'end'], transitions=[ { 'trigger': 'advance', 'source': 'init', 'dest': 'start', 'conditions': 'is_going_to_start' }, { 'trigger': 'advance', 'source': 'start', 'dest': 'order', 'conditions': 'is_going_to_order' }, { 'trigger': 'advance', 'source': 'start', 'dest': 'end', 'conditions': 'is_going_to_leave' }, { 'trigger': 'advance', 'source': 'order', 'dest': 'tea', 'conditions': 'is_going_to_tea' }, { 'trigger': 'advance', 'source': 'order', 'dest': 'coffee', 'conditions': 'is_going_to_coffee' }, { 'trigger': 'advance', 'source': 'tea', 'dest': 'add', 'conditions': 'is_going_to_greentea' }, { 'trigger': 'advance', 'source': 'tea', 'dest': 'add', 'conditions': 'is_going_to_blacktea' }, { 'trigger': 'advance', 'source': 'tea', 'dest': 'add', 'conditions': 'is_going_to_milktea' }, { 'trigger': 'advance', 'source': 'tea', 'dest': 'pay', 'conditions': 'is_going_to_matcha' }, { 'trigger': 'advance', 'source': 'add', 'dest': 'pay', 'conditions': 'is_going_to_add' }, { 'trigger': 'advance', 'source': 'add', 'dest': 'pay', 'conditions': 'is_going_to_noadd' }, { 'trigger': 'advance', 'source': 'coffee', 'dest': 'pay', 'conditions': 'is_going_to_blackcoffee' }, { 'trigger': 'advance', 'source': 'coffee', 'dest': 'pay', 'conditions': 'is_going_to_latte' }, { 'trigger': 'advance', 'source': 'coffee', 'dest': 'pay', 'conditions': 'is_going_to_cappuccino' }, { 'trigger': 'advance', 'source': 'pay', 'dest': 'order', 'conditions': 'is_going_to_order2' }, { 'trigger': 'advance', 'source': 'pay', 'dest': 'order', 'conditions': 'is_going_to_reorder' }, { 'trigger': 'advance', 'source': 'pay', 'dest': 'end', 'conditions': 'is_going_to_end' }, { 'trigger': 'go_back', 'source': ['end'], 'dest': 'init' }, ], initial='init', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=["user", "picture","west_team","east_team","northwest_divition","pacific_divition","southwest_divition","atalantic_divition","central_divition","southeast_divition","jazz","nuggets","thunders","timberwolves","trail_blazers","clippers","kings","lakers","suns","warriors","mavericks","grizzles","pelicans","rockets","spurs","raptors","celtics","76ers","nets","knics","bucks","pacers","pistons","bulls","caveliers","heats","magic","hornets","wizards","hawks","highlight"], transitions=[ {#user->picture "trigger": "advance", "source": "user", "dest": "picture", "conditions": "is_going_to_picture", }, {#picture->west_team "trigger": "advance", "source": "picture", "dest": "west_team", "conditions": "is_going_to_west_team", }, {#west_team->northwest_divition "trigger": "advance", "source": "west_team", "dest": "northwest_divition", "conditions": "is_going_to_northwest_divition", }, {#northwest_divition->jazz "trigger": "advance", "source": "northwest_divition", "dest": "jazz", "conditions": "is_going_to_jazz", }, {#northwest_divition->nuggets "trigger": "advance", "source": "northwest_divition", "dest": "nuggets", "conditions": "is_going_to_nuggets", }, {#northwest_divition->thunders "trigger": "advance", "source": "northwest_divition", "dest": "thunders", "conditions": "is_going_to_thunders", }, {#northwest_divition->timberwolves "trigger": "advance", "source": "northwest_divition", "dest": "timberwolves", "conditions": "is_going_to_timberwolves", }, {#northwest_divition->trail_blazers "trigger": "advance", "source": "northwest_divition", "dest": "trail_blazers", "conditions": "is_going_to_trail_blazers", }, {#west_team->pacific_divition "trigger": "advance", "source": "west_team", "dest": "pacific_divition", "conditions": "is_going_to_pacific_divition", }, {#pacific_divition->clippers "trigger": "advance", "source": "pacific_divition", "dest": "clippers", "conditions": "is_going_to_clippers", }, {#pacific_divition->kings "trigger": "advance", "source": "pacific_divition", "dest": "kings", "conditions": "is_going_to_kings", }, {#pacific_divition->lakers "trigger": "advance", "source": "pacific_divition", "dest": "lakers", "conditions": "is_going_to_lakers", }, {#pacific_divition->suns "trigger": "advance", "source": "pacific_divition", "dest": "suns", "conditions": "is_going_to_suns", }, {#pacific_divition->warriors "trigger": "advance", "source": "pacific_divition", "dest": "warriors", "conditions": "is_going_to_warriors", }, {#west_team->southeast_divition "trigger": "advance", "source": "west_team", "dest": "southwest_divition", "conditions": "is_going_to_southwest_divition", }, {#southwest_divition->mavericks "trigger": "advance", "source": "southwest_divition", "dest": "mavericks", "conditions": "is_going_to_mavericks", }, {#southwest_divition->grizzles "trigger": "advance", "source": "southwest_divition", "dest": "grizzles", "conditions": "is_going_to_grizzles", }, {#southwest_divition->pelicans "trigger": "advance", "source": "southwest_divition", "dest": "pelicans", "conditions": "is_going_to_pelicans", }, {#southwest_divition->rockets "trigger": "advance", "source": "southwest_divition", "dest": "rockets", "conditions": "is_going_to_rockets", }, {#southwest_divition->spurs "trigger": "advance", "source": "southwest_divition", "dest": "spurs", "conditions": "is_going_to_spurs", }, {#picture->east_team "trigger": "advance", "source": "picture", "dest": "east_team", "conditions": "is_going_to_east_team", }, {#east_team->atalantic_divition "trigger": "advance", "source": "east_team", "dest": "atalantic_divition", "conditions": "is_going_to_atalantic_divition", }, {#atalantic_divition->raptors "trigger": "advance", "source": "atalantic_divition", "dest": "raptors", "conditions": "is_going_to_raptors", }, {#atalantic_divition->celtics "trigger": "advance", "source": "atalantic_divition", "dest": "celtics", "conditions": "is_going_to_celtics", }, {#atalantic_divition->76ers "trigger": "advance", "source": "atalantic_divition", "dest": "76ers", "conditions": "is_going_to_76ers", }, {#atalantic_divition->nets "trigger": "advance", "source": "atalantic_divition", "dest": "nets", "conditions": "is_going_to_nets", }, {#atalantic_divition->knics "trigger": "advance", "source": "atalantic_divition", "dest": "knics", "conditions": "is_going_to_knics", }, {#east_team->central_divition "trigger": "advance", "source": "east_team", "dest": "central_divition", "conditions": "is_going_to_central_divition", }, {#central_divition->bucks "trigger": "advance", "source": "central_divition", "dest": "bucks", "conditions": "is_going_to_bucks", }, {#central_divition->pacers "trigger": "advance", "source": "central_divition", "dest": "pacers", "conditions": "is_going_to_pacers", }, {#central_divition->pistons "trigger": "advance", "source": "central_divition", "dest": "pistons", "conditions": "is_going_to_pistons", }, {#central_divition->bulls "trigger": "advance", "source": "central_divition", "dest": "bulls", "conditions": "is_going_to_bulls", }, {#central_divition->caveliers "trigger": "advance", "source": "central_divition", "dest": "caveliers", "conditions": "is_going_to_caveliers", }, {#east_team->southeast_divition "trigger": "advance", "source": "east_team", "dest": "southeast_divition", "conditions": "is_going_to_southeast_divition", }, {#southeast_divition->heats "trigger": "advance", "source": "southeast_divition", "dest": "heats", "conditions": "is_going_to_heats", }, {#southeast_divition->magic "trigger": "advance", "source": "southeast_divition", "dest": "magic", "conditions": "is_going_to_magic", }, {#southeast_divition->hornets "trigger": "advance", "source": "southeast_divition", "dest": "hornets", "conditions": "is_going_to_hornets", }, {#southeast_divition->wizards "trigger": "advance", "source": "southeast_divition", "dest": "wizards", "conditions": "is_going_to_wizards", }, {#southeast_divition->hawks "trigger": "advance", "source": "southeast_divition", "dest": "hawks", "conditions": "is_going_to_hawks", }, { "trigger": "advance", "source": "user", "dest": "highlight", "conditions": "is_going_to_highlight", }, { "trigger": "advance", "source": ["user", "team","west_team","east_team","northwest_divition","pacific_divition","souththwest_divition","atalantic_divition","central_divition","southeast_divition","jazz","nuggets","thunders","timberwolves","trail_blazers","clippers","kings","lakers","suns","warriors","mavericks","grizzles","pelicans","rockets","spurs","raptors","celtics","76ers","nets","knics","bucks","pacers","pistons","bulls","caveliers","heats","magic","hornets","wizards","hawks"], "dest": "user", "conditions": "restart", }, {"trigger": "go_back", "source": "highlight", "dest": "user"}, ], initial="user", auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'init', 'start', 'best', 'bestRes', 'all', 'all_bank', 'allRes', 'calc', 'calc_best_sell', 'calc_best_buy', 'calc_best_sellRes', 'calc_best_buyRes', 'calc_spec_sell', 'calc_spec_buy', 'calc_spec_sell_bank', 'calc_spec_buy_bank', 'calc_spec_sellRes', 'calc_spec_buyRes', 'about', 'help', 'explain', 'info' ], transitions=[ { # * -> start 'trigger': 'advance', 'source': '*', 'dest': 'start', 'conditions': 'is_going_to_start' }, { # start -> best 'trigger': 'advance', 'source': 'start', 'dest': 'best', 'conditions': 'is_going_to_best' }, { 'trigger': 'advance', 'source': 'best', 'dest': 'bestRes', 'conditions': 'is_going_to_bestRes' }, { # start -> all 'trigger': 'advance', 'source': 'start', 'dest': 'all', 'conditions': 'is_going_to_all' }, { 'trigger': 'advance', 'source': 'all', 'dest': 'all_bank', 'conditions': 'is_going_to_all_bank' }, { 'trigger': 'advance', 'source': 'all_bank', 'dest': 'allRes', 'conditions': 'is_going_to_allRes' }, { # start -> calc 'trigger': 'advance', 'source': 'start', 'dest': 'calc', 'conditions': 'is_going_to_calc' }, { # best calc 'trigger': 'advance', 'source': 'calc', 'dest': 'calc_best_sell', 'conditions': 'is_going_to_best_sell' }, { 'trigger': 'advance', 'source': 'calc', 'dest': 'calc_best_buy', 'conditions': 'is_going_to_best_buy' }, { 'trigger': 'advance', 'source': 'calc_best_sell', 'dest': 'calc_best_sellRes', 'conditions': 'is_going_to_best_sellRes' }, { 'trigger': 'advance', 'source': 'calc_best_buy', 'dest': 'calc_best_buyRes', 'conditions': 'is_going_to_best_buyRes' }, { # spec calc 'trigger': 'advance', 'source': 'calc', 'dest': 'calc_spec_sell', 'conditions': 'is_going_to_spec_sell' }, { 'trigger': 'advance', 'source': 'calc', 'dest': 'calc_spec_buy', 'conditions': 'is_going_to_spec_buy' }, { 'trigger': 'advance', 'source': 'calc_spec_sell', 'dest': 'calc_spec_sell_bank', 'conditions': 'is_going_to_spec_sell_bank' }, { 'trigger': 'advance', 'source': 'calc_spec_buy', 'dest': 'calc_spec_buy_bank', 'conditions': 'is_going_to_spec_buy_bank' }, { 'trigger': 'advance', 'source': 'calc_spec_sell_bank', 'dest': 'calc_spec_sellRes', 'conditions': 'is_going_to_spec_sellRes' }, { 'trigger': 'advance', 'source': 'calc_spec_buy_bank', 'dest': 'calc_spec_buyRes', 'conditions': 'is_going_to_spec_buyRes' }, { # start -> about 'trigger': 'advance', 'source': 'start', 'dest': 'about', 'conditions': 'is_going_to_about' }, { 'trigger': 'advance', 'source': 'about', 'dest': 'help', 'conditions': 'is_going_to_help' }, { 'trigger': 'advance', 'source': 'about', 'dest': 'explain', 'conditions': 'is_going_to_explain' }, { 'trigger': 'advance', 'source': 'about', 'dest': 'info', 'conditions': 'is_going_to_info' }, { # go back transitions 'trigger': 'go_about', 'source': [ 'help', 'explain', 'info' ], 'dest': 'about' }, { 'trigger': 'go_calc', 'source': [ 'calc_best_sellRes', 'calc_best_buyRes', 'calc_spec_sellRes', 'calc_spec_buyRes' ], 'dest': 'calc' }, { 'trigger': 'go_back', 'source': [ 'bestRes', 'allRes', 'calc' ], 'dest': 'start' } ], initial='init', auto_transitions=False, show_conditions=True, )
machine = TocMachine( states=[ 'user', 'state1000', 'state1', 'state2', 'state3', 'state5', 'state25', 'state45', 'state65', 'state6', 'state7', 'state17', 'state27', 'state171', 'state172', 'state271', 'state272', 'state77', 'state78', 'state9', 'state29', 'state49', 'state69', 'state10', 'state11', 'state13', 'state23', 'state33', 'state43', 'state15', 'state100' ], transitions=[ { 'trigger': 'advance', 'source': 'user', 'dest': 'state1000', 'conditions': 'is_going_to_state1000' }, { 'trigger': 'advance', 'source': 'state1000', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, { 'trigger': 'advance', 'source': 'state1000', 'dest': 'state2', 'conditions': 'is_going_to_state2' }, { 'trigger': 'advance', 'source': 'state1000', 'dest': 'state3', 'conditions': 'is_going_to_state3' }, #******food********************************** # 1->food, 9->yes, 19->no, 102->back # 5->breakfast, 25->lunch, 45->dinner, 65->lunch { 'trigger': 'advance', 'source': 'user', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #********************************************* #breakfast { 'trigger': 'advance', 'source': 'state1', 'dest': 'state5', 'conditions': 'is_going_to_state5' }, #breakfast_back { 'trigger': 'advance', 'source': 'state5', 'dest': 'state1', 'conditions': 'is_going_to_state102' }, #lunch { 'trigger': 'advance', 'source': 'state1', 'dest': 'state25', 'conditions': 'is_going_to_state25' }, #lunch_back { 'trigger': 'advance', 'source': 'state25', 'dest': 'state1', 'conditions': 'is_going_to_state102' }, #dinner { 'trigger': 'advance', 'source': 'state1', 'dest': 'state45', 'conditions': 'is_going_to_state45' }, #dinner_back { 'trigger': 'advance', 'source': 'state45', 'dest': 'state1', 'conditions': 'is_going_to_state102' }, #late-night supper { 'trigger': 'advance', 'source': 'state1', 'dest': 'state65', 'conditions': 'is_going_to_state65' }, #late-night supper_back { 'trigger': 'advance', 'source': 'state65', 'dest': 'state1', 'conditions': 'is_going_to_state102' }, #********************************************* #********************************************* #breakfast_menu { 'trigger': 'advance', 'source': 'state5', 'dest': 'state9', 'conditions': 'is_going_to_state9' }, #breakfast_not_menu { 'trigger': 'advance', 'source': 'state5', 'dest': 'state5', 'conditions': 'is_going_to_state19' }, #breakfast_back { 'trigger': 'advance', 'source': 'state9', 'dest': 'state5', 'conditions': 'is_going_to_state102' }, #breakfast_back_food { 'trigger': 'advance', 'source': 'state9', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #lunch_menu { 'trigger': 'advance', 'source': 'state25', 'dest': 'state29', 'conditions': 'is_going_to_state9' }, #lunch_not_menu { 'trigger': 'advance', 'source': 'state25', 'dest': 'state25', 'conditions': 'is_going_to_state19' }, #lunch_back { 'trigger': 'advance', 'source': 'state29', 'dest': 'state25', 'conditions': 'is_going_to_state102' }, #lunch_back_food { 'trigger': 'advance', 'source': 'state29', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #dinner_menu { 'trigger': 'advance', 'source': 'state45', 'dest': 'state49', 'conditions': 'is_going_to_state9' }, #dinner_not_menu { 'trigger': 'advance', 'source': 'state45', 'dest': 'state45', 'conditions': 'is_going_to_state19' }, #dinner_back { 'trigger': 'advance', 'source': 'state49', 'dest': 'state45', 'conditions': 'is_going_to_state102' }, #dinner_back_food { 'trigger': 'advance', 'source': 'state49', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #late-night supper_menu { 'trigger': 'advance', 'source': 'state65', 'dest': 'state69', 'conditions': 'is_going_to_state9' }, #late-night supper_not_menu { 'trigger': 'advance', 'source': 'state65', 'dest': 'state65', 'conditions': 'is_going_to_state19' }, #late-night supper_back { 'trigger': 'advance', 'source': 'state69', 'dest': 'state65', 'conditions': 'is_going_to_state102' }, #late-night supper_back_food { 'trigger': 'advance', 'source': 'state69', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #********************************************* #********************************************* #breakfast_information { 'trigger': 'advance', 'source': 'state9', 'dest': 'state13', 'conditions': 'is_going_to_state9' }, #breakfast_back { 'trigger': 'advance', 'source': 'state13', 'dest': 'state9', 'conditions': 'is_going_to_state102' }, #lunch_information { 'trigger': 'advance', 'source': 'state29', 'dest': 'state23', 'conditions': 'is_going_to_state9' }, #lunch_back { 'trigger': 'advance', 'source': 'state23', 'dest': 'state29', 'conditions': 'is_going_to_state102' }, #dinner_information { 'trigger': 'advance', 'source': 'state49', 'dest': 'state33', 'conditions': 'is_going_to_state9' }, #dinner_back { 'trigger': 'advance', 'source': 'state33', 'dest': 'state49', 'conditions': 'is_going_to_state102' }, #late-night supper_information { 'trigger': 'advance', 'source': 'state69', 'dest': 'state43', 'conditions': 'is_going_to_state9' }, #late-night supper_back { 'trigger': 'advance', 'source': 'state43', 'dest': 'state69', 'conditions': 'is_going_to_state102' }, #********************************************* #********************************************* #breakfast_food { 'trigger': 'advance', 'source': 'state13', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #lunch_food { 'trigger': 'advance', 'source': 'state23', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #dinner_food { 'trigger': 'advance', 'source': 'state33', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #late-night supper_food { 'trigger': 'advance', 'source': 'state43', 'dest': 'state1', 'conditions': 'is_going_to_state1' }, #********************************************* #********************************************* #breakfast_together { 'trigger': 'advance', 'source': 'state13', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, #lunch_together { 'trigger': 'advance', 'source': 'state23', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, #dinner_together { 'trigger': 'advance', 'source': 'state33', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, #late-night supper_together { 'trigger': 'advance', 'source': 'state43', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, #********************************************* #breakfast,lunch,dinner,late-night supper back to finish { 'trigger': 'go_back', 'source': 'state100', 'dest': 'user', }, #********************************************* #********************************************* #music { 'trigger': 'advance', 'source': 'user', 'dest': 'state2', 'conditions': 'is_going_to_state2' }, #********************************************* #music_information_yes { 'trigger': 'advance', 'source': 'state2', 'dest': 'state6', 'conditions': 'is_going_to_state9' }, #music_information_no { 'trigger': 'advance', 'source': 'state2', 'dest': 'user', 'conditions': 'is_going_to_state19' }, #********************************************* #music_play_yes { 'trigger': 'advance', 'source': 'state6', 'dest': 'state10', 'conditions': 'is_going_to_state9' }, #music_play_no { 'trigger': 'advance', 'source': 'state6', 'dest': 'state6', 'conditions': 'is_going_to_state19' }, #********************************************* #music_replay_yes { 'trigger': 'advance', 'source': 'state10', 'dest': 'state6', 'conditions': 'is_going_to_state9' }, #music_replay_no { 'trigger': 'advance', 'source': 'state10', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, #********************************************* #********************************************* #chat { 'trigger': 'advance', 'source': 'user', 'dest': 'state3', 'conditions': 'is_going_to_state3' }, #********************************************* #chat_hw { 'trigger': 'advance', 'source': 'state3', 'dest': 'state7', 'conditions': 'is_going_to_state7' }, #********************************************* #chat_hw_1 { 'trigger': 'advance', 'source': 'state7', 'dest': 'state11', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state7', 'dest': 'state171', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state7', 'dest': 'state271', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_hw_2 { 'trigger': 'advance', 'source': 'state11', 'dest': 'state15', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state11', 'dest': 'state172', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state11', 'dest': 'state272', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_other { 'trigger': 'advance', 'source': 'state3', 'dest': 'state17', 'conditions': 'is_going_to_state17' }, #********************************************* #chat_other_1 { 'trigger': 'advance', 'source': 'state17', 'dest': 'state15', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state17', 'dest': 'state171', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state17', 'dest': 'state271', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_other_2 { 'trigger': 'advance', 'source': 'state171', 'dest': 'state15', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state171', 'dest': 'state172', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state171', 'dest': 'state272', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_freind { 'trigger': 'advance', 'source': 'state3', 'dest': 'state27', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_freind_1 { 'trigger': 'advance', 'source': 'state27', 'dest': 'state11', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state27', 'dest': 'state171', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state27', 'dest': 'state271', 'conditions': 'is_going_to_state27' }, #********************************************* #chat_freind_2 { 'trigger': 'advance', 'source': 'state271', 'dest': 'state15', 'conditions': 'is_going_to_state7' }, { 'trigger': 'advance', 'source': 'state271', 'dest': 'state172', 'conditions': 'is_going_to_state17' }, { 'trigger': 'advance', 'source': 'state271', 'dest': 'state272', 'conditions': 'is_going_to_state27' }, #********************************************* #********************************************* #chat_last { 'trigger': 'advance', 'source': 'state15', 'dest': 'state77', 'conditions': 'is_going_to_state78' }, { 'trigger': 'advance', 'source': 'state172', 'dest': 'state77', 'conditions': 'is_going_to_state78' }, { 'trigger': 'advance', 'source': 'state272', 'dest': 'state77', 'conditions': 'is_going_to_state78' }, #********************************************* #********************************************* #chat_last_last { 'trigger': 'advance', 'source': 'state77', 'dest': 'state78', 'conditions': 'is_going_to_state78' }, #********************************************* #chat_last_last_last { 'trigger': 'advance', 'source': 'state78', 'dest': 'state100', 'conditions': 'is_going_to_state19' }, { 'trigger': 'advance', 'source': 'state78', 'dest': 'state3', 'conditions': 'is_going_to_state9' }, #********************************************* ], initial='user', auto_transitions=False, show_conditions=True, )