diff --git a/custom_components/whatsapp_bridge_integration/services.py b/custom_components/whatsapp_bridge_integration/services.py index b0854b8..e52b2dc 100644 --- a/custom_components/whatsapp_bridge_integration/services.py +++ b/custom_components/whatsapp_bridge_integration/services.py @@ -11,42 +11,33 @@ async def async_setup_services(hass: HomeAssistant): recipient = call.data.get("recipient") targets = [] + entries = hass.config_entries.async_entries(DOMAIN) - # 1. Fall: Broadcast (Wenn "all" getippt wurde) - if recipient == "all": - entries = hass.config_entries.async_entries(DOMAIN) - for e in entries: - targets.append(e.data.get(CONF_PHONE_NUMBER)) - - # 2. Fall: Eine Entity wurde ausgewählt (z.B. sensor.whatsapp_rene) - elif recipient.startswith("sensor."): + # 1. Prüfen, ob es eine Entity-ID ist + if recipient.startswith("sensor."): state = hass.states.get(recipient) - if state and "phone_number" in state.attributes: - targets.append(state.attributes.get("phone_number")) - else: - _LOGGER.error("Could not find phone number for entity: %s", recipient) + if state: + # Ist es die 'All Accounts' Entität? + if state.attributes.get("is_broadcast"): + for e in entries: + targets.append(e.data.get(CONF_PHONE_NUMBER)) + else: + # Es ist ein einzelner Account + targets.append(state.attributes.get("phone_number")) - # 3. Fall: Manuelle Nummer oder Name + # 2. Fallback: Manuelle Nummer (wenn keine sensor-ID übergeben wurde) else: - # Wir prüfen sicherheitshalber, ob es ein Account-Name ist - entries = hass.config_entries.async_entries(DOMAIN) - account_found = False - for e in entries: - if e.title.lower() == recipient.lower(): - targets.append(e.data.get(CONF_PHONE_NUMBER)) - account_found = True - break - - if not account_found: - targets.append(recipient) + targets.append(recipient) # Senden for num in targets: + if not num: continue url = "http://866fd2eb-whatsapp-bridge:3000/send" try: await hass.async_add_executor_job( lambda: requests.post(url, json={"number": num, "message": message}, timeout=10) ) + _LOGGER.info("WhatsApp sent to %s", num) except Exception as e: _LOGGER.error("Error sending to %s: %s", num, str(e))