diff --git a/homeassistant/components/alexa_devices/services.py b/homeassistant/components/alexa_devices/services.py index 29dd7f0a0191..6bae22e62c9c 100644 --- a/homeassistant/components/alexa_devices/services.py +++ b/homeassistant/components/alexa_devices/services.py @@ -42,36 +42,30 @@ def async_get_entry_id_for_service_call( call: ServiceCall, ) -> tuple[dr.DeviceEntry, AmazonConfigEntry]: """Get the entry ID related to a service call (by device ID).""" - device_registry = dr.async_get(call.hass) device_id = call.data[ATTR_DEVICE_ID] - if ( - device_entry := device_registry.async_get( - device_id, include_child_devices=False - ) - ) is None: + device, config_entry = dr.async_get_device_and_config_entry_for_domain( + call.hass, device_id, domain=DOMAIN + ) + if device is None: raise ServiceValidationError( translation_domain=DOMAIN, translation_key="invalid_device_id", translation_placeholders={"device_id": device_id}, ) - for entry_id in device_entry.config_entries: - if (entry := call.hass.config_entries.async_get_entry(entry_id)) is None: - continue - if entry.domain == DOMAIN: - if entry.state is not ConfigEntryState.LOADED: - raise ServiceValidationError( - translation_domain=DOMAIN, - translation_key="entry_not_loaded", - translation_placeholders={"entry": entry.title}, - ) - return (device_entry, entry) - - raise ServiceValidationError( - translation_domain=DOMAIN, - translation_key="config_entry_not_found", - translation_placeholders={"device_id": device_id}, - ) + if config_entry is None: + raise ServiceValidationError( + translation_domain=DOMAIN, + translation_key="config_entry_not_found", + translation_placeholders={"device_id": device_id}, + ) + if config_entry.state is not ConfigEntryState.LOADED: + raise ServiceValidationError( + translation_domain=DOMAIN, + translation_key="entry_not_loaded", + translation_placeholders={"entry": config_entry.title}, + ) + return (device, config_entry) async def _async_execute_action(call: ServiceCall, attribute: str) -> None: