コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)
コード例 #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)