def print_bot_output( message: Dict[Text, Any], is_latest_message: bool = False, color=cli_utils.bcolors.OKBLUE, ) -> Optional[questionary.Question]: if "buttons" in message: question = print_buttons(message, is_latest_message, color) if question: return question if "text" in message: cli_utils.print_color(message.get("text"), color=color) if "image" in message: cli_utils.print_color("Image: " + message.get("image"), color=color) if "attachment" in message: cli_utils.print_color("Attachment: " + message.get("attachment"), color=color) if "elements" in message: cli_utils.print_color("Elements:", color=color) for idx, element in enumerate(message.get("elements")): cli_utils.print_color( cli_utils.element_to_string(element, idx), color=color ) if "quick_replies" in message: cli_utils.print_color("Quick Replies:", color=color) for idx, element in enumerate(message.get("quick_replies")): cli_utils.print_color(cli_utils.button_to_string(element, idx), color=color) if "custom" in message: cli_utils.print_color("Custom json:", color=color) cli_utils.print_color(json.dumps(message.get("custom"), indent=2), color=color)
async def send_text_with_buttons(self, recipient_id: Text, text: Text, buttons: List[Dict[Text, Any]], **kwargs: Any) -> None: """Sends buttons to the output. Default implementation will just post the buttons as a string.""" await self.send_text_message(recipient_id, text) for idx, button in enumerate(buttons): button_msg = cli_utils.button_to_string(button, idx) await self.send_text_message(recipient_id, button_msg)
def _bot_output( message: Dict[Text, Any], color=cli_utils.bcolors.OKBLUE) -> Optional[questionary.Question]: from sagas.nlu.tts_utils import say_lang # from sagas.kit.analysis_kit import AnalysisKit if ("text" in message) and not ("buttons" in message): text = message.get("text") cli_utils.print_color(text, color=color) say_lang(text, sett.lang, False) # AnalysisKit().console_vis(text, sett.lang) if "image" in message: cli_utils.print_color("Image: " + message.get("image"), color=color) if "attachment" in message: cli_utils.print_color("Attachment: " + message.get("attachment"), color=color) if "buttons" in message: choices = cli_utils.button_choices_from_message_data( message, allow_free_text_input=True) question = questionary.select( message.get("text"), choices, style=Style([("qmark", "#6d91d3"), ("", "#6d91d3"), ("answer", "#b373d6")]), ) return question if "elements" in message: cli_utils.print_color("Elements:", color=color) for idx, element in enumerate(message.get("elements")): cli_utils.print_color(cli_utils.element_to_string(element, idx), color=color) if "quick_replies" in message: cli_utils.print_color("Quick Replies:", color=color) for idx, element in enumerate(message.get("quick_replies")): cli_utils.print_color(cli_utils.button_to_string(element, idx), color=color) if "custom" in message: cli_utils.print_color("Custom json:", color=color) cli_utils.print_color(json.dumps(message.get("custom"), indent=2), color=color)
async def replay_events(tracker: DialogueStateTracker, agent: "Agent") -> None: """Take a tracker and replay the logged user utterances against an agent. During replaying of the user utterances, the executed actions and events created by the agent are compared to the logged ones of the tracker that is getting replayed. If they differ, a warning is logged. At the end, the tracker stored in the agent's tracker store for the same sender id will have quite the same state as the one that got replayed.""" actions_between_utterances = [] last_prediction = [ACTION_LISTEN_NAME] for i, event in enumerate(tracker.events_after_latest_restart()): if isinstance(event, UserUttered): _check_prediction_aligns_with_story(last_prediction, actions_between_utterances) actions_between_utterances = [] cli_utils.print_success(event.text) out = CollectingOutputChannel() await agent.handle_text(event.text, sender_id=tracker.sender_id, output_channel=out) for m in out.messages: buttons = m.pop("buttons", None) # for non-terminal stdin console.print_bot_output(m) if buttons is not None: color = rasa.shared.utils.io.bcolors.OKBLUE rasa.cli.utils.print_color("Buttons:", color=color) for idx, button in enumerate(buttons): rasa.cli.utils.print_color(cli_utils.button_to_string( button, idx), color=color) tracker = agent.tracker_store.retrieve(tracker.sender_id) last_prediction = actions_since_last_utterance(tracker) elif isinstance(event, ActionExecuted): actions_between_utterances.append(event.action_name) _check_prediction_aligns_with_story(last_prediction, actions_between_utterances)
def _print_bot_output( message: Dict[Text, Any], is_latest_message: bool = False, color: Text = rasa.shared.utils.io.bcolors.OKBLUE, ) -> Optional[questionary.Question]: if "buttons" in message: question = print_buttons(message, is_latest_message, color) if question: return question if "text" in message: rasa.shared.utils.cli.print_color(message["text"], color=color) if "image" in message: rasa.shared.utils.cli.print_color("Image: " + message["image"], color=color) if "attachment" in message: rasa.shared.utils.cli.print_color("Attachment: " + message["attachment"], color=color) if "elements" in message: rasa.shared.utils.cli.print_color("Elements:", color=color) for idx, element in enumerate(message["elements"]): rasa.shared.utils.cli.print_color(cli_utils.element_to_string( element, idx), color=color) if "quick_replies" in message: rasa.shared.utils.cli.print_color("Quick Replies:", color=color) for idx, element in enumerate(message["quick_replies"]): rasa.shared.utils.cli.print_color(cli_utils.button_to_string( element, idx), color=color) if "custom" in message: rasa.shared.utils.cli.print_color("Custom json:", color=color) rasa.shared.utils.cli.print_color(json.dumps(message["custom"], indent=2), color=color) return None
def print_buttons( message: Dict[Text, Any], is_latest_message: bool = False, color=cli_utils.bcolors.OKBLUE, ) -> Optional[questionary.Question]: if is_latest_message: choices = cli_utils.button_choices_from_message_data( message, allow_free_text_input=True ) question = questionary.select( message.get("text"), choices, style=Style([("qmark", "#6d91d3"), ("", "#6d91d3"), ("answer", "#b373d6")]), ) return question else: cli_utils.print_color("Buttons:", color=color) for idx, button in enumerate(message.get("buttons")): cli_utils.print_color(cli_utils.button_to_string(button, idx), color=color)
def print_bot_output( message: Dict[Text, Any], color=cli_utils.bcolors.OKBLUE) -> Optional[questionary.Question]: if ("text" in message) and not ("buttons" in message): cli_utils.print_color(message.get("text"), color=color) if "image" in message: cli_utils.print_color("Image: " + message.get("image"), color=color) if "attachment" in message: cli_utils.print_color("Attachment: " + message.get("attachment"), color=color) if "buttons" in message: choices = cli_utils.button_choices_from_message_data( message, allow_free_text_input=True) question = questionary.select( message.get("text"), choices, style=Style([("qmark", "#6d91d3"), ("", "#6d91d3"), ("answer", "#b373d6")]), ) return question if "elements" in message: cli_utils.print_color("Elements:", color=color) for idx, element in enumerate(message.get("elements")): cli_utils.print_color(cli_utils.element_to_string(element, idx), color=color) if "quick_replies" in message: cli_utils.print_color("Quick Replies:", color=color) for idx, element in enumerate(message.get("quick_replies")): cli_utils.print_color(cli_utils.button_to_string(element, idx), color=color) if "custom" in message: cli_utils.print_color("Custom json:", color=color) cli_utils.print_color(json.dumps(message.get("custom"), indent=2), color=color)