Exemple #1
0
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'
Exemple #2
0
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"
Exemple #3
0
def makeTocMachine(N):
    return TocMachine(
        states=["user"] + Gen1A2B.genStates(N),
        transitions=[] + Gen1A2B.genTransitions("user", N),
        initial="user",
        auto_transitions=False,
        show_conditions=True,
    )
Exemple #4
0
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")
Exemple #5
0
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
Exemple #6
0
 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()
Exemple #7
0
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"
Exemple #9
0
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")
Exemple #10
0
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,
)
Exemple #11
0
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,
)
Exemple #12
0
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,
)
Exemple #13
0
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,
)
Exemple #14
0
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,
)
Exemple #15
0
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,
)
Exemple #16
0
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,
)
Exemple #17
0
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,
)
Exemple #18
0
def show_fsm():
    machine = TocMachine().machine
    machine.get_graph().draw("fsm.png", prog="dot", format="png")
    return send_file("fsm.png", mimetype="image/png")
Exemple #19
0
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,
)
Exemple #20
0
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,
)
Exemple #21
0
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,
)
Exemple #23
0
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,
)
Exemple #24
0
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,
)
Exemple #25
0
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,
)
Exemple #26
0
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,
)
Exemple #27
0
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,
)
Exemple #28
0
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,
)
Exemple #29
0
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,
)
Exemple #30
0
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,
)