Exemplo n.º 1
0
    def handle(self, handler_input):
        logger.info("HAN    RepeatHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        if 'recent_response' in attr:
            return RepeatUtils.get_recent_response(handler_input)


        ms_help = HelpUtils.get_ms_corresponding_help(handler_input)
        ms_prompt, reprompt = (
            HelpUtils.get_ms_corresponding_help(handler_input) for _ in range(2))
                
        speech_list.append( fallback.data.MS_FALLBACK)
        speech_list.append( Pauser.get_p_level(1))

        ## NOTE: This will need refinement if there are callbacks. 
        ## Develop relevant methods from FallbackUtils.
        speech_list.append( ms_help)
        speech_list.append( ms_prompt)

        speech = ' '.join(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (
            handler_input.response_builder
                .speak( speech)
                .ask( reprompt)
                .set_card( SimpleCard(
                    card_title, card_text))
                .response)
Exemplo n.º 2
0
    def handle(self, handler_input):
        logger.info("HAN    NoHandler")

        ms_confirmation = ConfirmUtils.get_confirmation(punct=True)
        prompt = HelpUtils.get_q_what_todo()

        reprompt = HelpUtils.get_ms_help_overview()

        speech_list = (ms_confirmation, 1, prompt)
        speech = get_linear_nlg(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 3
0
    def handle(self, handler_input):
        logger.info("HAN    CreateUserProfileHandler")

        user_name = SlotUtils.get_first_slot_value(handler_input)
        if not user_name:
            logger.info("HAN    RetryUserName")
            ms_welcome = UserProfileUtils.get_ms_welcome(handler_input)
            ms_retry_name = UserProfileUtils.get_ms_did_not_hear_name()

            prompt, reprompt = (
                UserProfileUtils.get_q_retry_name() for _ in range(2))
            prompt = CardFuncs.format_prompt(prompt)

            speech_list = (
                ms_welcome, 
                0.5,
                ms_retry_name,
                1.75,
                prompt
            )
        else:
            logger.info("HAN    CreatedProfile")
            UserProfileUtils.set_sesh_attr(handler_input, user_name)
            PlayerDict.create_new_player(handler_input, user_name)
            
            ms_confirm = ConfirmUtils.get_player_confirmation(handler_input)
            ms_created_first_profile = UserProfileUtils.get_ms_created_first_profile(handler_input)
        
            ms_overview = HelpUtils.get_ms_act_descript()
            prompt, reprompt = (
                HelpUtils.get_q_what_todo() for _ in range(2))
            prompt = CardFuncs.format_prompt(prompt)

            speech_list = (
                ms_confirm, 
                1,
                ms_created_first_profile,
                3,
                ms_overview,
                2.25,
                prompt
            )
        
        speech = get_linear_nlg(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (
            handler_input.response_builder
                .speak(speech)
                .ask(reprompt)
                .set_card( SimpleCard( card_title, card_text))
                .response)
Exemplo n.º 4
0
    def handle(self, handler_input):
        logger.info("HAN  FP_AnsweredRequestedQuestionsHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        correct = QuestionChecker.check_answer(handler_input)
        UserStats.update_player_stats(handler_input, correct)

        ms_congrats = CongratUtils.get_player_congrats(handler_input, 2)

        num_questions = attr.get('num_questions', '')
        ms_answered_all_questions = FPSpeech.get_ms_answered_all_questions(
            num_questions)

        prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2))
        prompt = CardFuncs.format_prompt(prompt)

        speech_list += Pauser.make_ms_pause_level_list(
            ms_congrats, 1, ms_answered_all_questions, 3, prompt)

        SessionStats.update_consecutive_correct(handler_input, correct)
        ModeStats.update_mode_stats(handler_input, correct)
        ModeStats.translate_mode_stats_to_sesh(handler_input)
        FreePlayAttr.set_attr_end_fp(handler_input)

        speech = ' '.join(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)

        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 5
0
    def get_q_fp_setup_reprompt(handler_input) -> str:
        """Returns reprompt for freeplay setup handlers."""
        attr = handler_input.attributes_manager.session_attributes
        if (attr.get('mode', None) == "free_play"
                and attr.get('times_tables', None) not in (None, [])):
            prompt = GenQuestions.get_same_question(handler_input)
        else:
            prompt = HelpUtils.get_q_what_todo()

        return CardFuncs.format_prompt(prompt)
Exemplo n.º 6
0
    def get_last_prompt(handler_input) -> str:
        """Returns the prompt used in the previous response.
        
        first checks if existing question to be asked. If so, asks the question.

        If function saved, uses function.
        Elif str prompt saved, uses cached from response interceptor.
        Else, uses HelpUtils.get_corresponding_message.
        """
        attr = handler_input.attributes_manager.session_attributes

        ## Free Play Questions
        question = attr.get('question', None)
        flag_in_game = attr.get(
            'mode', None) in aux_data.skill_data.MODE_ACT_DICT.keys()
        log_all(question, flag_in_game)
        if (question and flag_in_game):
            prompt_user = GenQuestions.get_same_question(handler_input)

        ## Don't repeat help
        elif is_intent_name("AMAZON.HelpIntent")(handler_input):
            prompt_user = HelpUtils.get_q_what_todo()

        ## Standard questions
        ## NOTE: May like to save function references in the future.
        # saving functions may create more variety.
        # elif attr.get('prompt_func', False):
        #     prompt_user = attr['prompt_func']
        #     attr['prompt_func'] = None
        # elif attr.get('prompt_ms', False):
        #     prompt_user = attr['prompt_ms']
        #     attr['prompt_ms'] = None
        # else:
        #     prompt_user = HelpUtils.get_ms_corresponding_help(handler_input)

        else:
            prompt_user = HelpUtils.get_q_what_todo()

        return CardFuncs.format_prompt(prompt_user)
Exemplo n.º 7
0
    def handle(self, handler_input):
        logger.info("HAN    SM_WrongAnswerHandler")
        player_obj = PlayerDict.load_player_obj(handler_input)
        UserStats.update_player_stats(
            handler_input, correct = False, player_obj= player_obj)
        
        WrongAnswer.record_wrong_question(handler_input)

        ms_incorrect = IncorrectAnsUtils.get_buzz_and_incorrect()
        ms_correct_ans = GetAnswerSpeech.get_ms_answer(handler_input)
        ms_score = SMEndGame.get_ms_game_score(handler_input)

        ms_congrats = CongratUtils.get_player_congrats(handler_input, 1)
        ms_results = SMEndGame.get_ms_score_results(
            handler_input, player_obj= player_obj)
        ms_thanks = get_ms_thanks(handler_input, mode = True, excite=True)

        prompt, reprompt = (
            HelpUtils.get_q_what_todo() for _ in range(2))

        speech_list = (
            ms_incorrect,
            1,
            ms_correct_ans,
            2,
            ms_congrats,
            0.75,
            ms_score,            
            1.25,
            ms_results,
            1.75,
            ms_thanks,
            4.5,
            prompt,
        )
        
        SM_Attr.log_stats(handler_input)
        SessionStats.update_consecutive_correct(handler_input, correct= False)
        ModeStats.update_mode_stats(handler_input, correct= False)
        UserStats.update_player_sm_stats(handler_input, player_obj= player_obj)     #before translating mode stats
        SM_Attr.set_attr_end_survival_mode(handler_input)
        ModeStats.translate_mode_stats_to_sesh(handler_input)
        
        speech = get_linear_nlg(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)   
        return (
            handler_input.response_builder
                .speak(speech)
                .ask(reprompt)
                .set_card( SimpleCard( card_title, card_text))
                .response)
Exemplo n.º 8
0
    def handle(self, handler_input):
        logger.info("HAN    CP_StartHandler")
        player_obj = PlayerDict.load_player_obj(handler_input)

        ## Check Sufficient Data
        ## NOTE: make like to refacor this into a method that returns response object
        ## That will remove the nested loop below.
        answered_questions = player_obj.get_answered_questions()
        if answered_questions < custom_practice.data.MIN_DATA_REQUIRED:
            prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2))

            speech_list = (
                CP_Welcome.get_ms_need_more_data(answered_questions),
                2,
                prompt,
            )

        else:
            CP_Attr.set_attr_start_cp(handler_input)
            CP_Attr.set_tbl_mean_err_list_attr(
                handler_input, player_obj)  # used in practice type

            ms_welcome = CP_Welcome.get_ms_welcome(handler_input, player_obj)

            practice_type = CP_PracticeType.get_practice_type(
                handler_input, allow_incorrect_problems=True)
            CP_Attr.save_practice_type(handler_input, practice_type)
            CP_Attr.set_pract_type_attr(handler_input, player_obj,
                                        practice_type)
            CP_Attr.update_last_question_attr(handler_input, correct=True)

            ms_practice_intro = CP_PractIntro.get_ms_practice_type_intro(
                handler_input, practice_type)
            question = CP_Questions.get_question(handler_input,
                                                 player_obj,
                                                 practice_type,
                                                 first_question=True)
            reprompt = GenQuestions.get_same_question(handler_input)
            speech_list = (
                ms_welcome,
                2.5,
                ms_practice_intro,
                2,
                question,
            )

        speech = get_linear_nlg(speech_list)
        reprompt = GenQuestions.get_same_question(handler_input)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 9
0
    def handle(self, handler_input):
        logger.info("HAN    SC_FinishedChallengeHandler")
        speech_list = []

        SC_Attr.save_end_time(handler_input)
        sc_score_time = SC_Attr.get_sc_total_time(handler_input)

        player_obj = PlayerDict.load_player_obj(handler_input)

        SessionStats.update_consecutive_correct(handler_input, correct=True)
        ModeStats.update_mode_stats(handler_input, correct=True)
        UserStats.update_player_stats(handler_input,
                                      correct=True,
                                      player_obj=player_obj)

        ms_congrats = CongratUtils.get_player_congrats(handler_input, 2)
        ms_complete_time = SC_EndGame.get_ms_game_score(
            handler_input, sc_score_time)
        ms_score_results = SC_EndGame.get_ms_score_results(
            handler_input, sc_score_time=sc_score_time, player_obj=player_obj)
        ms_thanks = get_ms_thanks(handler_input, mode=True, excite=True)
        prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2))

        speech_list = (
            ms_congrats,
            1,
            ms_complete_time,
            1.5,
            ms_score_results,
            1.75,
            ms_thanks,
            4,
            prompt,
        )

        SC_Attr.log_sc_stats(handler_input)
        ModeStats.translate_mode_stats_to_sesh(handler_input)
        UserStats.update_player_sc_stats(handler_input,
                                         sc_score_time=sc_score_time,
                                         player_obj=player_obj)
        SC_Attr.set_attr_end_sc(handler_input)
        PlayerDict.save_player_obj(handler_input, player_obj)

        speech = get_linear_nlg(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 10
0
    def get_q_play_activity(activity: str = None) -> str:
        """Returns prompt asking user if they want to play activity.
        
        If no activity, returns prompt what to do."""
        if not activity:
            return HelpUtils.get_q_what_todo()

        ms_want_to_play = get_linear_nlg(data.MMT_WANT_TO_PLAY)
        activity = aux_data.skill_data.MODE_ACT_DICT[activity]

        speech_list = (
            ms_want_to_play,
            " ",
            activity,
            "?",
        )
        return ''.join(speech_list)
Exemplo n.º 11
0
    def handle(self, handler_input):
        logger.info("HAN    ModeStatsHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []
        player_obj = PlayerDict.load_player_obj(handler_input)

        mode = attr.get('mode', None)
        activity = SlotUtils.get_resolved_value(handler_input, 'activity')
        activity = activity if activity else mode
        difficulty = True

        if activity == 'survival':
            speech_list += ModeSpeech.get_ms_sm_stats(player_obj, activity)

        elif activity == 'speed':
            difficulty = SlotUtils.get_resolved_value(handler_input,
                                                      'difficulty')
            sc_difficulty = difficulty if difficulty else attr.get(
                'sc_difficulty', None)

            if (difficulty in speed_challenge.data.SC_DIFFICULTIES):
                speech_list += ModeSpeech.get_ms_sc_stats(
                    player_obj, sc_difficulty, activity)
            else:
                reprompt = ModeSpeech.get_ms_sc_what_difficulty()
                speech_list += reprompt
                reprompt = get_linear_nlg(reprompt)

        else:
            ms_can_tell_record = ModeSpeech.get_ms_can_tell_record()
            ms_example_saying = ModeSpeech.get_example_hear_records()
            speech_list = [ms_can_tell_record, 2, ms_example_saying]

            reprompt = HelpUtils.get_q_what_todo()

        if activity in ('survival', 'speed') and (difficulty):
            prompt, reprompt = (LastPrompt.get_last_prompt(handler_input)
                                for _ in range(2))
            speech_list += Pauser.make_ms_pause_level_list(3, prompt)

        speech = get_linear_nlg(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 12
0
    def handle(self, handler_input):
        speech_list = []

        ms_confirm = ConfirmUtils.get_random_confirmation(handler_input)
        prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2))

        speech_list += Pauser.make_ms_pause_level_list(ms_confirm, 2, prompt)

        ModeStats.translate_mode_stats_to_sesh(handler_input)

        ## Set end all attr
        FreePlayAttr.set_attr_end_fp(handler_input)
        SM_Attr.set_attr_end_survival_mode(handler_input)
        SC_Attr.set_attr_end_sc(handler_input)

        speech = ' '.join(speech_list)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)
Exemplo n.º 13
0
    def handle(self, handler_input):
        # type (HandlerInput) -> Response
        logger.info("HAN    HelpHandler")
        speech_list = []

        ms_help = HelpUtils.get_ms_corresponding_help(handler_input)
        prompt, reprompt = (
            LastPrompt.get_last_prompt(handler_input) for _ in range(2))

        speech_list += Pauser.make_ms_pause_level_list( ms_help, 3, prompt)

        speech = ' '.join(speech_list)
        
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (
            handler_input.response_builder
                .speak(speech)
                .ask(reprompt)
                .set_card( SimpleCard(
                    card_title, card_text))
                .response)
Exemplo n.º 14
0
    def handle(self, handler_input):
        logger.info("HAN    CP_NextPracticeHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        player_obj = PlayerDict.load_player_obj(handler_input)
        UserStats.update_player_stats(handler_input,
                                      correct=True,
                                      player_obj=player_obj)

        CP_Attr.set_attr_new_practice(handler_input)
        CP_Attr.set_tbl_mean_err_list_attr(handler_input, player_obj)

        practice_type = attr['practice_type']
        ms_end_pract_type = CP_PractEnd.get_ms_practice_type_end(
            handler_input, practice_type=practice_type)

        if practice_type == custom_practice.data.PRACT_TYPES[0]:
            CP_Attr.remove_question_from_incorrect_questions(handler_input)

        ms_congrats = CongratUtils.get_player_congrats(handler_input)

        if practice_type != custom_practice.data.PRACT_TYPES[-1]:

            practice_type = CP_PracticeType.get_practice_type(
                handler_input, allow_incorrect_problems=False)
            CP_Attr.save_practice_type(handler_input, practice_type)
            CP_Attr.set_pract_type_attr(handler_input, player_obj,
                                        practice_type)
            CP_Attr.update_last_question_attr(handler_input, correct=True)

            ms_practice_intro = CP_PractIntro.get_ms_practice_type_intro(
                handler_input, practice_type=practice_type)
            question = CP_Questions.get_question(handler_input,
                                                 player_obj,
                                                 practice_type,
                                                 first_question=True)
            reprompt = GenQuestions.get_same_question(handler_input)

            speech_list = (
                ms_congrats,
                0.5,
                ms_end_pract_type,
                2.5,
                ms_practice_intro,
                2,
                question,
            )
        else:
            UserStats.update_player_cp_stats(handler_input, player_obj)
            prompt, reprompt = (HelpUtils.get_q_what_todo() for _ in range(2))

            speech_list = (ms_congrats, 0.5, ms_end_pract_type, 2, prompt)

        SessionStats.update_consecutive_correct(handler_input, True)
        ModeStats.update_mode_stats(handler_input, True)
        PlayerDict.save_player_obj(handler_input, player_obj)

        speech = get_linear_nlg(speech_list)
        reprompt = GenQuestions.get_same_question(handler_input)
        card_title, card_text = CardFuncs.get_card_info(handler_input, speech)
        return (handler_input.response_builder.speak(speech).ask(
            reprompt).set_card(SimpleCard(card_title, card_text)).response)