# Buggy code
async def _write_domain_to_file(
    domain_path: Text, events: List[Dict[Text, Any]], endpoint: EndpointConfig
) -> None:
    """Write an updated domain file to the file path."""

    create_path(domain_path)

    domain = await retrieve_domain(endpoint)
    old_domain = Domain.from_dict(domain)

    messages = _collect_messages(events)
    actions = _collect_actions(events)
    templates = NEW_TEMPLATES

    # TODO for now there is no way to distinguish between action and form
    collected_actions = list(
        {e["name"] for e in actions if e["name"] not in default_action_names()}
    )

    new_domain = Domain(
        intents=_intents_from_messages(messages),
        entities=_entities_from_messages(messages),
        slots=[],
        templates=templates,
        action_names=collected_actions,
        form_names=[],
    )

    old_domain.merge(new_domain).persist_clean(domain_path)


# Traceback (FileNotFoundError)
? Export stories to (if file exists, this will append the stories)
? Export NLU data to (if file exists, this will merge learned data with previous training examples)
? Export domain file to (if file exists, this will be overwritten) domain.yml
2019-06-18 08:16:35 ERROR    rasa.core.training.interactive  - An exception occurred while recording messages.
Traceback (most recent call last):
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 1367, in record_messages
endpoint, sender_id, sender_ids, plot_file
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 885, in _predict_till_next_listen
action_name, policy, confidence, predictions, endpoint, sender_id
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 1024, in _validate_action
is_correct = await _ask_questions(question, sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 312, in _ask_questions
should_retry = await _ask_if_quit(sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 591, in _ask_if_quit
await _write_data_to_file(sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 566, in _write_data_to_file
await _write_stories_to_file(story_path, events)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 764, in _write_stories_to_file
with open(export_story_path, append_write, encoding="utf-8") as f:
FileNotFoundError: [Errno 2] No such file or directory: ''
2019-06-18 08:16:35 ERROR    asyncio  - Task exception was never retrieved
future: <Task finished coro=<_serve_application.<locals>.run_interactive_io() done, defined at /Users/erohmensing/rasa/rasa/core/training/interactive.py:1409> exception=FileNotFoundError(2, 'No such file or directory')>
Traceback (most recent call last):
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 1416, in run_interactive_io
sender_id=uuid.uuid4().hex,
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 1367, in record_messages
endpoint, sender_id, sender_ids, plot_file
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 885, in _predict_till_next_listen
action_name, policy, confidence, predictions, endpoint, sender_id
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 1024, in _validate_action
is_correct = await _ask_questions(question, sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 312, in _ask_questions
should_retry = await _ask_if_quit(sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 591, in _ask_if_quit
await _write_data_to_file(sender_id, endpoint)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 566, in _write_data_to_file
await _write_stories_to_file(story_path, events)
File "/Users/erohmensing/rasa/rasa/core/training/interactive.py", line 764, in _write_stories_to_file
with open(export_story_path, append_write, encoding="utf-8") as f:
FileNotFoundError: [Errno 2] No such file or directory: ''

# Fixed code
async def _write_domain_to_file(
    domain_path: Text, events: List[Dict[Text, Any]], endpoint: EndpointConfig
) -> None:
    """Write an updated domain file to the file path."""

    io_utils.create_path(domain_path)

    domain = await retrieve_domain(endpoint)
    old_domain = Domain.from_dict(domain)

    messages = _collect_messages(events)
    actions = _collect_actions(events)
    templates = NEW_TEMPLATES

    # TODO for now there is no way to distinguish between action and form
    collected_actions = list(
        {e["name"] for e in actions if e["name"] not in default_action_names()}
    )

    new_domain = Domain(
        intents=_intents_from_messages(messages),
        entities=_entities_from_messages(messages),
        slots=[],
        templates=templates,
        action_names=collected_actions,
        form_names=[],
    )

    old_domain.merge(new_domain).persist_clean(domain_path)