def handle(self, handler_input):
        logger.info("HAN    SM_CorrectQuestionHandler")
        speech_list = []

        player_obj = PlayerDict.load_player_obj(handler_input)
        UserStats.update_player_stats(handler_input, correct = True, player_obj= player_obj)
        SM_Attr.increment_sm_upper(handler_input)
        
        ms_congrats = CongratUtils.get_answer_congrats(
            handler_input, player_obj= player_obj, survival_mode=True)

        logger.debug(ms_congrats)

        ms_question = SMQuestions.get_question(
            handler_input, first_question= False, player_obj= player_obj)
        reprompt = GenQuestions.get_same_question(handler_input)
        
        if len(ms_congrats):
            sm_pause = Pauser.get_sm_pause_length(handler_input)
            speech_list += Pauser.make_ms_pause_level_list(ms_congrats, sm_pause)
        speech_list.append( ms_question)
        
        SessionStats.update_consecutive_correct(handler_input, True)
        ModeStats.update_mode_stats(handler_input, True)

        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)
Exemple #2
0
    def handle(self, handler_input):
        logger.info("HAN  FP_CorrectAnswerHandler")
        speech_list = []

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

        ms_congrats = CongratUtils.get_answer_congrats(handler_input,
                                                       player_obj=player_obj)
        ms_question = FPQuestions.get_question(handler_input)
        reprompt = FPQuestions.get_rephrased_question(handler_input)

        logger.debug(ms_congrats)

        if ms_congrats != "":
            speech_list += Pauser.make_ms_pause_level_list(
                ms_congrats, 1, ms_question)
        else:
            speech_list.append(ms_question)

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

        logger.debug(speech_list)
        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)
    def handle(self, handler_input):
        logger.info("HAN    ActDescriptHandler")
        speech_list = []

        activity = SlotUtils.get_resolved_value( handler_input, "activity")

        if not activity:
            logger.info("ActDescriptHandler: Non-resolved activity.")
            ms_overall_descript = DescriptUtils.get_ms_overall_act_descript()
            speech_list.append( ms_overall_descript)
        
        else:
            DescriptUtils.set_attr(handler_input, activity)
            ms_act_descript = DescriptUtils.get_ms_corresponding_descript(activity)
            speech_list.append( ms_act_descript)
        
        prompt, reprompt = (
            DescriptUtils.get_q_play_activity(activity) for _ in range(2))
        prompt = CardFuncs.format_prompt(prompt)
        speech_list.append( Pauser.get_p_level(4))
        speech_list.append(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)
Exemple #4
0
    def handle(self, handler_input):
        logger.info("HAN  FP_WrongAnswerHandler")
        speech_list = []

        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_retry_question = AllQuestionIntros.get_retry_question(handler_input)
        reprompt = GenQuestions.get_same_question(handler_input)

        speech_list += Pauser.make_ms_pause_level_list(ms_incorrect, 1,
                                                       ms_retry_question)

        SessionStats.update_consecutive_correct(handler_input, correct=False)
        ModeStats.update_mode_stats(handler_input, correct=False)

        logger.debug(speech_list)
        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)
Exemple #5
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)
Exemple #6
0
    def handle(self, handler_input):
        logger.info("HAN  FP_SetNumberQuestionsHandler")
        speech_list = []

        FreePlayAttr.set_attr_free_play(
            handler_input)  # reset questions asked.
        num_questions = SlotUtils.get_slot_val_by_name(handler_input,
                                                       'num_questions')

        if num_questions is None:
            ms_can_set_questions = FPNumQuestions.get_ms_can_set_num_questions(
            )
            prompt, reprompt = (FPNumQuestions.get_q_num_questions()
                                for _ in range(2))
            speech_list += Pauser.make_ms_pause_level_list(
                ms_can_set_questions, 2, prompt)

        else:
            FreePlayAttr.set_attr_num_questions(handler_input, num_questions)

            ms_confirm = ConfirmUtils.get_random_confirmation(handler_input)
            ms_ask_num_questions = FPNumQuestions.get_ms_ask_num_questions(
                handler_input)
            prompt = FPPrompts.get_q_fp_setup_prompt(handler_input)
            reprompt = FPPrompts.get_q_fp_setup_reprompt(handler_input)

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

        ModeStats.translate_mode_stats_to_sesh(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)
    def handle(self, handler_input):
        logger.info("HAN    CP_WrongAnswerHandler")
        speech_list = []

        player_obj = PlayerDict.load_player_obj(handler_input)

        CP_Attr.update_last_question_attr(handler_input, correct=False)
        UserStats.update_player_stats(handler_input,
                                      correct=False,
                                      player_obj=player_obj)

        ms_wrong = IncorrectAnsUtils.get_ms_incorrect()
        question = GenQuestions.get_same_question(handler_input)
        reprompt = question
        speech_list = (
            ms_wrong,
            1,
            question,
        )

        SessionStats.update_consecutive_correct(handler_input, correct=False)
        ModeStats.update_mode_stats(handler_input, correct=False)
        WrongAnswer.record_wrong_question(handler_input)
        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)
    def handle(self, handler_input):
        logger.info("HAN    CP_CorrectAnswerHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        practice_type = attr['practice_type']
        if practice_type == custom_practice.data.PRACT_TYPES[0]:
            CP_Attr.remove_question_from_incorrect_questions(
                handler_input)  ## Before updating last question
        CP_Attr.update_last_question_attr(handler_input, correct=True)

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

        ms_congrats = CongratUtils.get_answer_congrats(handler_input,
                                                       player_obj=player_obj)
        ms_question = CP_Questions.get_question(handler_input,
                                                player_object=player_obj,
                                                practice_type=practice_type,
                                                first_question=False)
        reprompt = GenQuestions.get_same_question(handler_input)

        speech_list = (ms_congrats, 1, ms_question)

        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)
Exemple #9
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)
Exemple #10
0
    def handle(self, handler_input):
        # type (HandlerInput) -> Response
        logger.info("HAN    ExitIntentHandler")
        speech_list = []

        player_obj = PlayerDict.load_player_obj(handler_input)

        ## TODO: Implement sesh performance func.
        ms_session_performance = ExitUtils.get_ms_session_performance(
            handler_input)
        ms_exit = ExitUtils.get_ms_exit_game()

        speech_list.append(ms_session_performance)
        speech_list.append(ms_exit)

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

        ## Attr management @ very end.
        ExitUtils.update_player_mode_statistics(handler_input, player_obj)
        PlayerDict.save_player_obj(handler_input, player_obj)

        ExitUtils.exit_skill_attr_management(handler_input)
        return (handler_input.response_builder.speak(speech).set_card(
            SimpleCard(card_title,
                       card_text)).set_should_end_session(True).response)
Exemple #11
0
    def handle(self, handler_input):
        logger.info("HAN  FP_SetTimesTablesHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        ## Get & Set slots
        lower_table, upper_table, tables_query = (
            FreePlayAttr.get_times_table_input_slots(handler_input))

        ## Logic checks
        retry_query = attr.get('inform_query_tables_format', False)
        tables_provided = FreePlayLogic.check_tables_provided(
            lower_table, upper_table, tables_query)

        if tables_provided:
            FreePlayAttr.set_attr_free_play(handler_input)
            FreePlayAttr.set_attr_times_tables(handler_input, lower_table,
                                               upper_table, tables_query)

            if retry_query:
                ms_potential_mistake = FPTimesTables.get_ms_potential_mistake_parsing_query(
                )
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_potential_mistake, 2)
            else:
                ms_confirm = ConfirmUtils.get_random_confirmation(
                    handler_input)
                speech_list.append(ms_confirm)

            ms_using_tables = (FPTimesTables.get_ms_using_tables_from_input(
                lower_table, upper_table, tables_query))
            speech_list += Pauser.make_ms_pause_level_list(ms_using_tables, 2)

            if retry_query:
                ms_retry_query = FPTimesTables.get_ms_can_retry_query_format()
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_retry_query, 3.5)
                FreePlayAttr.reset_attr_query_format(handler_input)

            prompt = FPPrompts.get_q_fp_setup_prompt(handler_input)
            reprompt = FPPrompts.get_q_fp_setup_reprompt(handler_input)
            speech_list.append(prompt)

        ## Ask for times_tables slots
        else:
            q_times_tables, reprompt = (
                FPTimesTables.get_q_times_tables_input() for _ in range(2))
            q_times_tables = CardFuncs.format_prompt(q_times_tables)
            speech_list.append(q_times_tables)
            reprompt = LastPrompt.get_last_prompt(handler_input)

        ModeStats.translate_mode_stats_to_sesh(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)
Exemple #12
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)
Exemple #13
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)
    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)
    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)
Exemple #16
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)
Exemple #17
0
    def handle(self, handler_input):
        logger.info("HAN  FP_ParametersIntent")
        speech_list = []

        ms_confirm = ConfirmUtils.get_confirmation(True)
        ms_fp_params = FPSpeech.get_ms_fp_parameters(handler_input)

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

        speech_list += Pauser.make_ms_pause_level_list(ms_confirm, 1,
                                                       ms_fp_params, 2.5,
                                                       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)
    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)
Exemple #19
0
    def handle(self, handler_input):
        logger.info("HAN  FP_AddTimesTablesHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        lower_table, upper_table, tables_query = (
            FreePlayAttr.get_times_table_input_slots(handler_input))
        retry_query = attr.get('inform_query_tables_format', False)

        if not tables_query:
            ms_can_add = FPTimesTables.get_ms_can_add_tables()
            speech_list += Pauser.make_ms_pause_level_list(ms_can_add, 2.5)

        else:
            FreePlayAttr.add_to_attr_times_tables(handler_input, lower_table,
                                                  upper_table, tables_query)

            if retry_query:
                ms_potential_mistake = FPTimesTables.get_ms_potential_mistake_parsing_query(
                )
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_potential_mistake, 2)

            ms_added_tables = FPTimesTables.get_ms_added_tables(tables_query)
            speech_list += Pauser.make_ms_pause_level_list(
                ms_added_tables, 1.5)

            if retry_query:
                ms_retry_query = FPTimesTables.get_ms_can_retry_query_format()
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_retry_query, 3.5)
                FreePlayAttr.reset_attr_query_format(handler_input)

        ## May like to add only if tables query??
        prompt = FPPrompts.get_q_fp_setup_prompt(handler_input)
        reprompt = FPPrompts.get_q_fp_setup_reprompt(handler_input)
        speech_list.append(prompt)

        ModeStats.translate_mode_stats_to_sesh(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)
    def handle(self, handler_input):
        logger.info("HAN    GetAnswerHandler")
        speech_list = []

        ms_answer = GetAnswerSpeech.get_ms_answer(handler_input)
        next_question = FPQuestions.get_question(handler_input)
        QuestionAttr.increment_questions_answered(handler_input,
                                                  False)  # undo increment.
        ## NOTE: would not need to de-increment with better modulation.

        speech_list += Pauser.make_ms_pause_level_list(ms_answer, 2,
                                                       next_question)

        reprompt = next_question

        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)
Exemple #21
0
    def handle(self, handler_input):
        logger.info("HAN    SC_CorrectAnswerHandler")

        ## TODO: Check sc attr and if anything needs to be incremented??
        player_obj = PlayerDict.load_player_obj(handler_input)
        UserStats.update_player_stats(handler_input,
                                      correct=True,
                                      player_obj=player_obj)

        question = SC_Questions.get_question(handler_input)
        reprompt = question

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

        speech = question
        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)
Exemple #22
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)
    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)
Exemple #24
0
    def handle(self, handler_input):
        logger.info("HAN    FallbackHandler")
        FallbackUtils.log_fallback_intent(handler_input)
        speech_list = []

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

        speech_list.append(data.MS_FALLBACK)
        speech_list.append(Pauser.get_p_level(1))

        ## NOTE: ms_help needs refinement if help after fallback handler.
        ## 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)
Exemple #25
0
    def handle(self, handler_input):
        logger.info("HAN    NumQuestionsAnsweredHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        questions_answered = attr.get('questions_answered', 0)
        ms_confirm = ConfirmUtils.get_player_confirmation(handler_input)

        ms_ans_questions = random.choice(
            mult_questions.data.MT_NUM_QUESTIONS_ANS).format(
                questions_answered)

        prompt, reprompt = (LastPrompt.get_last_prompt(handler_input)
                            for _ in range(2))
        speech_list += Pauser.make_ms_pause_level_list(ms_confirm, 1,
                                                       ms_ans_questions, 2,
                                                       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)
    def handle(self, handler_input):
        logger.info("HAN    SM_StartHandler")
        speech_list = []

        SM_Attr.set_attr_start_survival_mode(handler_input)
        ModeStats.translate_mode_stats_to_sesh(handler_input)

        ms_welcome = SM_WelcomeUtils.get_ms_welcome(handler_input)
        ms_question = SMQuestions.get_question(handler_input, first_question= True)
        reprompt = GenQuestions.get_same_question(handler_input)
        
        speech_list += Pauser.make_ms_pause_level_list( 
            ms_welcome, 2, ms_question)

        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)
Exemple #27
0
    def handle(self, handler_input):
        logger.info("HAN    SC_StartHandler")
        speech_list = []

        SC_Attr.set_attr_start_sc(handler_input)
        player_obj = PlayerDict.load_player_obj(handler_input)
        difficulty = SlotUtils.get_resolved_value(handler_input, 'difficulty')

        if not difficulty:
            ms_welcome = SC_WelcomeUtils.get_ms_welcome(player_obj)
            q_difficulty, reprompt = (
                SC_Difficulty.get_q_sc_difficulty(player_obj)
                for _ in range(2))

            speech_list += Pauser.make_ms_pause_level_list(
                ms_welcome, 2, q_difficulty)

        elif difficulty:
            SC_Attr.set_sc_diff(handler_input, difficulty)
            ms_confirmation = ConfirmUtils.get_confirmation(True)
            ms_use_difficulty = SC_Difficulty.get_ms_using_difficulty(
                difficulty)

            SC_Questions.load_sc_questions(handler_input)
            ms_start_timer = SC_WelcomeUtils.get_ms_starting_time()
            question = SC_Questions.get_question(handler_input,
                                                 first_question=True)
            reprompt = question

            speech_list += Pauser.make_ms_pause_level_list(
                ms_confirmation, 0.5, ms_use_difficulty, 2, ms_start_timer,
                question)

            SC_Attr.save_start_time(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)
Exemple #28
0
    def handle(self, handler_input):
        logger.info("HAN  FP_SetTableBoundsHandler")
        speech_list = []

        lower_bound, upper_bound = FreePlayAttr.get_table_bound_slots(
            handler_input)
        FreePlayAttr.set_table_bounds(handler_input, lower_bound, upper_bound)
        bounds_provided = FreePlayLogic.check_table_bounds_provided(
            lower_bound, upper_bound)

        if bounds_provided:
            confirm = ConfirmUtils.get_random_confirmation(handler_input)
            ms_adjusted_table_bounds = FPUpperLowerBounds.get_ms_set_table_bounds(
                lower_bound, upper_bound)
            prompt = FPPrompts.get_q_fp_setup_prompt(handler_input)
            reprompt = FPPrompts.get_q_fp_setup_reprompt(handler_input)

            # QuestionAttr.increment_questions_answered(handler_input, increase=False)
            ## New question, but not counted as answered.

            speech_list += Pauser.make_ms_pause_level_list(
                confirm, 1, ms_adjusted_table_bounds, 2, prompt)

        else:
            ms_can_change_bounds = FPUpperLowerBounds.get_ms_can_change_table_bounds(
            )
            prompt, reprompt = (FPUpperLowerBounds.get_q_change_bounds()
                                for _ in range(2))
            speech_list += Pauser.make_ms_pause_level_list(
                ms_can_change_bounds, 2.5, prompt)

        ModeStats.translate_mode_stats_to_sesh(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)
    def return_unknown_slot_response(handler_input) -> object:
        """If cannot find answer slot, returns same response prompt.
        
        NOTE: Can probably just return last response object.
        """
        speech_list = []
        attr = handler_input.attributes_manager.session_attributes

        ms_not_understand = get_linear_nlg(fallback.data.MMT_NOT_UNDERSTAND)

        if attr.get('mode', None) == 'free_play':
            prompt, reprompt = (GenQuestions.get_same_question(handler_input)
                                for _ in range(2))
        else:
            prompt, reprompt = (LastPrompt.get_last_prompt(handler_input)
                                for _ in range(2))

        speech_list += Pauser.make_ms_pause_level_list(ms_not_understand, 2,
                                                       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)
Exemple #30
0
    def handle(self, handler_input):
        logger.info("HAN  FP_StartHandler")
        attr = handler_input.attributes_manager.session_attributes
        speech_list = []

        ## Set attr & get slots
        FreePlayAttr.set_attr_free_play(handler_input)

        ## Get table_input to start game.
        lower_table, upper_table, tables_query = (
            FreePlayAttr.get_times_table_input_slots(handler_input))
        FreePlayAttr.set_attr_times_tables(handler_input, lower_table,
                                           upper_table, tables_query)

        ## Logic check
        retry_query = attr.get('inform_query_tables_format', False)
        tables_provided = FreePlayLogic.check_tables_provided(
            lower_table, upper_table, tables_query)
        tables_exist = FreePlayLogic.check_tables_exist(handler_input)

        log_all(retry_query, tables_exist)

        ## Confirmation
        if tables_provided or tables_exist:

            if retry_query:
                ms_potential_mistake = FPTimesTables.get_ms_potential_mistake_parsing_query(
                )
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_potential_mistake, 2)
            else:
                ms_confirm = ConfirmUtils.get_confirmation(punct=True)
                speech_list += Pauser.make_ms_pause_level_list(ms_confirm, 1)

            if tables_provided:
                ms_using_tables = (
                    FPTimesTables.get_ms_using_tables_from_input(
                        lower_table, upper_table, tables_query))
            elif tables_exist:
                ms_using_tables = None  # Create method to use existing tables.
            speech_list += Pauser.make_ms_pause_level_list(ms_using_tables, 2)

            if retry_query:
                ms_retry_query = FPTimesTables.get_ms_can_retry_query_format()
                speech_list += Pauser.make_ms_pause_level_list(
                    ms_retry_query, 3.5)
                FreePlayAttr.reset_attr_query_format(handler_input)

            ms_first_problem = FPQuestions.get_question(handler_input,
                                                        first_question=True)
            speech_list.append(ms_first_problem)

            reprompt = FPQuestions.get_rephrased_question(handler_input)

        if not tables_provided:
            ms_welcome = FPSpeech.get_ms_welcome(handler_input)
            q_times_tables, reprompt = (
                FPTimesTables.get_q_times_tables_input() for _ in range(2))
            q_times_tables = CardFuncs.format_prompt(q_times_tables)

            speech_list += Pauser.make_ms_pause_level_list(
                ms_welcome, 1.5, q_times_tables)

        ModeStats.translate_mode_stats_to_sesh(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)