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)
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)
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)