import yaml from pathlib import Path from ..config import Config from ..responses.responses import Responses from ..hassil.util import merge_dict from .response_handler import ResponseHandler from .libnotify import LibNotify class ResponseManager: def __init__(self, config: Config): response_dict = {"responses": {}} response_yaml_path = Path(config.responses_dir) response_yaml_file_paths = response_yaml_path.glob("*.yaml") for yaml_file_path in response_yaml_file_paths: with open(yaml_file_path, "r", encoding="utf-8") as yaml_file: merge_dict(response_dict, yaml.safe_load(yaml_file)) self.responses = Responses.from_dict(response_dict) self.respond_handlers: list[ResponseHandler] = [LibNotify(config)] def respond(self, response: str, intent_name: str): response_key = intent_name if response == "default" else response if response_key not in self.responses.responses: print(f"No response found for: {response_key}") return response_text = self.responses.responses[response_key].sentence_texts[0] for handler in self.respond_handlers: handler.respond(response_text)