Esempio n. 1
0
    def get_clause(tup_data) -> str:
        """Helper func: returns clause from tup_data using recursion."""
        if not tup_data:
            return ''

        elif isinstance(tup_data, str):
            return tup_data

        elif isinstance(tup_data, (int, float)):
            return Pauser.get_p_level(tup_data)

        elif isinstance(tup_data, (tuple, list)):

            if isinstance(tup_data[0], str):
                ## List of strings, return choice.
                return random.choice(tup_data)

            else:
                # Use Tuples in tuple to create message
                speech_list = []
                for clause_list in tup_data:
                    clause = get_clause(clause_list)
                    speech_list.append(clause)

                return str_joiner.join(speech_list)
        else:
            logger.warning(f"get_clause: Unrecognized data type {tup_data}")
    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)
Esempio n. 3
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)
    def get_q_times_tables_input() -> str:
        """Returns prompt asking what times tables to practice.
        
        NOTE: Should add handler_input so can change example b/w prompt & reprompt,
        and depending on num logins, etc.
        """
        q_what_tables = get_linear_nlg(free_play.data.MMT_WHAT_TABLES_PRACTICE)
        if random.random() < 0.0:  ## TODO: Change chance of prompt.
            ms_example = FPTimesTables.get_example_tables_query()
        else:
            ms_example = FPTimesTables.get_example_table_range()

        speech_list = (q_what_tables,
                       Pauser.get_p_level(2), get_ms_try_saying(),
                       Pauser.get_p_level(0.75), ms_example)
        speech = ' '.join(speech_list)
        return MW_SLOW1.format(speech)
    def get_ms_fp_table_input() -> str:
        """Returns helps message for providing freeplay table parameters."""
        speech_list = [
            helper.data.MS_FP_TIMES_TABLES,
            Pauser.get_p_level(1),
            get_ms_try_saying(),
        ]
        if random.random() < 0.25:
            speech_list.append(FPTimesTables.get_example_tables_query())
        else:
            speech_list.append(FPTimesTables.get_example_table_range())

        return ' '.join(speech_list)
    def get_ms_use_query_times_tables(times_tables: list) -> str:
        """Returns message that will use queried times tables."""
        ms_use_problems = FPTimesTables.get_ms_use_problems_start()
        times_tables = get_str_from_list(times_tables)

        speech_list = (
            ms_use_problems,
            free_play.data.MS_FROM,
            free_play.data.MT_USE_TABLES,
            Pauser.get_p_level(1),
            times_tables,
        )
        return get_linear_nlg(speech_list)
Esempio n. 7
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)
 def get_ms_free_play() -> str:
     """Returns helps message for freeplay game mode."""
     speech_list = (helper.data.MS_FP_OVERVIEW, Pauser.get_p_level(0.5),
                    helper.data.MS_FP_STD_PARAMS, Pauser.get_p_level(1.5),
                    FPUpperLowerBounds.get_ms_can_change_table_bounds())
     return ' '.join(speech_list)