def __init__(self): client_id = config['authentication']['client_id'] redirect_uri = 'https://platelminto.eu.pythonanywhere.com/users/registering' scope_list = [ 'user-library-read', 'user-library-modify', 'playlist-modify-public', 'user-modify-playback-state', 'user-read-playback-state', 'playlist-modify-private' ] self.web_api = WebApi(scope_list=scope_list, client_id=client_id, redirect_uri=redirect_uri) if current_os == 'Darwin': self.local_api = AppleScriptApi() elif current_os == 'Windows': self.local_api = MediaKeysApi() self.repeat_states = ['track', 'context', 'off']
def home(): utterance = request.args.get('utterance') user_session_id = request.args.get('user_session_id') key_session_id = "session_id" web_api = WebApi(utterance, new_session) active_module_node = dict() last_active_node = None # check for last active state for a user active_state_nodes, active_bot, active_module_id = web_api.get_user_active_state( key_session_id, user_session_id) if active_state_nodes: if active_module_id in active_state_nodes: last_active_node = active_state_nodes[active_module_id] if not active_bot: bot = initialize_bot() else: bot = active_bot chat = ConsoleChatInterface(bot) if not utterance or user_session_id == "null": if user_session_id == "null": # for new user coming first time session_id = str(uuid.uuid4()) final_api_output = add_user_and_start_chat( web_api, chat, active_state_nodes, key_session_id, session_id, last_active_node, bot, active_module_id, '') logger.info(json.dumps(final_api_output)) else: # if user open new tab while old tab is also open i.e. session exist session_id = user_session_id if not web_api.user_session_exist(key_session_id, session_id): final_api_output = add_user_and_start_chat( web_api, chat, active_state_nodes, key_session_id, session_id, last_active_node, bot, active_module_id, '') logger.info(json.dumps(final_api_output)) else: # for last user utterance as first bot message last_user_utterance = web_api.get_last_user_utterance( key_session_id, user_session_id) if not last_user_utterance: # if user open new tab without any chat in old tab final_api_output = chat.start_chat('', active_state_nodes, last_active_node, active_module_id, new_session, session_id) logger.info(json.dumps(final_api_output)) else: active_node, module_id, final_api_output = chat.start_chat( last_user_utterance, active_state_nodes, last_active_node, active_module_id, new_session, session_id) logger.info(json.dumps(final_api_output)) else: session_id = user_session_id active_node, module_id, final_api_output = chat.start_chat( utterance, active_state_nodes, last_active_node, active_module_id, new_session, session_id) if active_node and module_id and active_bot: last_active_node = active_node active_module_id = module_id active_user_bot = active_bot if web_api.user_session_exist(key_session_id, session_id): web_api.update_last_user_utterance(key_session_id, user_session_id) if active_node and module_id and active_bot: web_api.update_user_active_state(key_session_id, user_session_id, active_node, active_bot, module_id) logger.info(json.dumps(final_api_output)) # if last_active_node: # web_api.print_active_tree(last_active_node) chatbot_output = {"chatbot_output": final_api_output} user_session_id = {str(key_session_id): session_id} final_api_output = web_api.finalize_api_output(chatbot_output, user_session_id) return jsonify(final_api_output)