import logging import requests from homeassistant.core import HomeAssistant, ServiceCall from .const import DOMAIN, CONF_PHONE_NUMBER, CONF_ACCOUNT_NAME _LOGGER = logging.getLogger(__name__) async def async_setup_entry(hass: HomeAssistant, entry): """Setzt ein Profil (Config Entry) aus der UI-Konfiguration um.""" # Falls noch nicht geschehen, registrieren wir den globalen Dienst if not hass.services.has_service(DOMAIN, "send_message"): async def handle_send_message(call: ServiceCall): """Zentraler Dienst zum Senden von Nachrichten.""" message = call.data.get("message") target_account = call.data.get("account") # Optionaler Filter target_number = call.data.get("number") # Manuelle Nummer # Alle installierten Profile durchsuchen entries = hass.config_entries.async_entries(DOMAIN) targets = [] if target_number: # Fall A: Direkte Nummer wurde im Service-Call mitgegeben targets.append(target_number) elif target_account: # Fall B: Ein spezifisches Profil wurde gewählt for e in entries: if e.title.lower() == target_account.lower(): targets.append(e.data.get(CONF_PHONE_NUMBER)) else: # Fall C: Gar kein Ziel? Dann an ALLE Profile senden for e in entries: targets.append(e.data.get(CONF_PHONE_NUMBER)) # Senden an alle ermittelten Ziele for num in targets: url = "http://866fd2eb-whatsapp-bridge:3000/send" try: # Wir nutzen hass.async_add_executor_job für synchrone Requests await hass.async_add_executor_job( lambda: requests.post(url, json={ "number": num, "message": message }, timeout=10) ) _LOGGER.info("WhatsApp an %s gesendet: %s", num, message) except Exception as e: _LOGGER.error("Fehler beim Senden an %s: %s", num, str(e)) hass.services.async_register(DOMAIN, "send_message", handle_send_message) return True async def async_unload_entry(hass, entry): """Profil wieder entfernen.""" return True