diff --git a/custom_components/whatsapp_bridge_integration/__init__.py b/custom_components/whatsapp_bridge_integration/__init__.py index 3805b30..8db37c1 100644 --- a/custom_components/whatsapp_bridge_integration/__init__.py +++ b/custom_components/whatsapp_bridge_integration/__init__.py @@ -6,54 +6,45 @@ 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.""" + """Set up a profile from a config entry.""" - # 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 + target_account = call.data.get("account") + target_number = call.data.get("number") + all_accounts = call.data.get("all_accounts", False) - # Alle installierten Profile durchsuchen entries = hass.config_entries.async_entries(DOMAIN) - targets = [] - if target_number: - # Fall A: Direkte Nummer wurde im Service-Call mitgegeben + if all_accounts: + for e in entries: + targets.append(e.data.get(CONF_PHONE_NUMBER)) + elif target_number: 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) + _LOGGER.info("WhatsApp sent to %s", num) except Exception as e: - _LOGGER.error("Fehler beim Senden an %s: %s", num, str(e)) + _LOGGER.error("Failed to send to %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 \ No newline at end of file