def record_messages( endpoint, # type: EndpointConfig sender_id=UserMessage.DEFAULT_SENDER_ID, # type: Text max_message_limit=None, # type: Optional[int] on_finish=None, # type: Optional[Callable[[], None]] finetune=False # type: bool ): """Read messages from the command line and print bot responses.""" try: exit_text = INTENT_MESSAGE_PREFIX + 'stop' utils.print_color( "Bot loaded. Type a message and press enter " "(use '{}' to exit). ".format(exit_text), utils.bcolors.OKGREEN) try: domain = retrieve_domain(endpoint) except requests.exceptions.ConnectionError: logger.exception("Failed to connect to rasa core server at '{}'. " "Is the server running?".format(endpoint.url)) return intents = [next(iter(i)) for i in (domain.get("intents") or [])] num_messages = 0 while not utils.is_limit_reached(num_messages, max_message_limit): try: if is_listening_for_message(sender_id, endpoint): _enter_user_message(sender_id, endpoint, exit_text) _validate_nlu(intents, endpoint, sender_id) _predict_till_next_listen(endpoint, sender_id, finetune=finetune) num_messages += 1 except RestartConversation: send_event(endpoint, sender_id, {"event": "restart"}) send_event(endpoint, sender_id, { "event": "action", "name": ACTION_LISTEN_NAME }) logger.info("Restarted conversation, starting a new one.") except UndoLastStep: _undo_latest(sender_id, endpoint) _print_history(sender_id, endpoint) except Exception: logger.exception("An exception occurred while recording messages.") raise finally: if on_finish: on_finish()
def record_messages(endpoint, sender_id=UserMessage.DEFAULT_SENDER_ID, max_message_limit=None, on_finish=None, get_next_message=None): """Read messages from the command line and print bot responses.""" try: exit_text = INTENT_MESSAGE_PREFIX + 'stop' if not get_next_message: # default to reading messages from the command line get_next_message = console.get_cmd_input utils.print_color("Bot loaded. Type a message and press enter " "(use '{}' to exit). ".format(exit_text), utils.bcolors.OKGREEN) try: domain = retrieve_domain(endpoint) except requests.exceptions.ConnectionError: logger.exception("Failed to connect to rasa core server at '{}'. " "Is the server running?".format(endpoint.url)) return intents = [next(iter(i)) for i in (domain.get("intents") or [])] num_messages = 0 finished = False while (not finished and not utils.is_limit_reached(num_messages, max_message_limit)): print("Next user input:") text = get_next_message() if text == exit_text: break send_message(endpoint, sender_id, text) finished = predict_till_next_listen(endpoint, intents, sender_id) num_messages += 1 except Exception: logger.exception("An exception occurred while recording messages.") raise finally: if on_finish: on_finish()
def record_messages(server_url=DEFAULT_SERVER_URL, auth_token=None, sender_id=UserMessage.DEFAULT_SENDER_ID, max_message_limit=None, use_response_stream=True, on_finish=None): """Read messages from the command line and print bot responses.""" auth_token = auth_token if auth_token else "" exit_text = INTENT_MESSAGE_PREFIX + 'stop' utils.print_color("Bot loaded. Type a message and press enter " "(use '{}' to exit): ".format(exit_text), utils.bcolors.OKGREEN) num_messages = 0 while not utils.is_limit_reached(num_messages, max_message_limit): text = get_cmd_input() if text == exit_text: break if use_response_stream: bot_responses = send_message_receive_stream(server_url, auth_token, sender_id, text) else: bot_responses = send_message_receive_block(server_url, auth_token, sender_id, text) for response in bot_responses: print_bot_output(response) num_messages += 1 if on_finish: on_finish()
def record_messages(server_url=DEFAULT_SERVER_URL, auth_token=None, sender_id=UserMessage.DEFAULT_SENDER_ID, max_message_limit=None, use_response_stream=True, on_finish=None): """Read messages from the command line and print bot responses.""" auth_token = auth_token if auth_token else "" exit_text = INTENT_MESSAGE_PREFIX + 'stop' utils.print_color("Bot loaded. Type a message and press enter " "(use '{}' to exit): ".format(exit_text), utils.bcolors.OKGREEN) num_messages = 0 while not utils.is_limit_reached(num_messages, max_message_limit): text = get_cmd_input() if text == exit_text: break if use_response_stream: bot_responses = send_message_receive_stream(server_url, auth_token, sender_id, text) else: bot_responses = send_message_receive_block(server_url, auth_token, sender_id, text) for response in bot_responses: print_bot_output(response) num_messages += 1 if on_finish: on_finish()
def record_messages( endpoint, # type: EndpointConfig sender_id=UserMessage.DEFAULT_SENDER_ID, # type: Text max_message_limit=None, # type: Optional[int] on_finish=None, # type: Optional[Callable[[], None]] finetune=False, # type: bool stories=None, # type: Optional[Text] skip_visualization=False # type: bool ): """Read messages from the command line and print bot responses.""" from rasa_core import training try: _print_help(skip_visualization) try: domain = retrieve_domain(endpoint) except requests.exceptions.ConnectionError: logger.exception("Failed to connect to rasa core server at '{}'. " "Is the server running?".format(endpoint.url)) return trackers = training.load_data( stories, Domain.from_dict(domain), augmentation_factor=0, use_story_concatenation=False, ) intents = [next(iter(i)) for i in (domain.get("intents") or [])] num_messages = 0 sender_ids = [t.events for t in trackers] + [sender_id] if not skip_visualization: plot_file = "story_graph.dot" _plot_trackers(sender_ids, plot_file, endpoint) else: plot_file = None while not utils.is_limit_reached(num_messages, max_message_limit): try: if is_listening_for_message(sender_id, endpoint): _enter_user_message(sender_id, endpoint) _validate_nlu(intents, endpoint, sender_id) _predict_till_next_listen(endpoint, sender_id, finetune, sender_ids, plot_file) num_messages += 1 except RestartConversation: send_event(endpoint, sender_id, {"event": "restart"}) send_event(endpoint, sender_id, { "event": "action", "name": ACTION_LISTEN_NAME }) logger.info("Restarted conversation, starting a new one.") except UndoLastStep: _undo_latest(sender_id, endpoint) _print_history(sender_id, endpoint) except ForkTracker: _print_history(sender_id, endpoint) evts = _request_fork_from_user(sender_id, endpoint) sender_id = uuid.uuid4().hex if evts is not None: replace_events(endpoint, sender_id, evts) sender_ids.append(sender_id) _print_history(sender_id, endpoint) _plot_trackers(sender_ids, plot_file, endpoint) except Exception: logger.exception("An exception occurred while recording messages.") raise finally: if on_finish: on_finish()