From ba0a34dfe4c9488906fa959139366f1684198b7f Mon Sep 17 00:00:00 2001 From: Jozef Kruszynski <60214390+jozefKruszynski@users.noreply.github.com> Date: Mon, 1 Jan 2024 12:15:35 +0100 Subject: [PATCH] Add Open AI integration (#1717) --- README.md | 12 + custom_components/mass/config_flow.py | 48 +++- custom_components/mass/const.py | 2 + custom_components/mass/intent.py | 205 ++++++++++++++++++ custom_components/mass/media_player.py | 17 +- custom_components/mass/strings.json | 11 +- custom_components/mass/translations/en.json | 11 +- .../en/play_media_on_media_player.yaml | 12 + screenshots/screen6.png | Bin 0 -> 72406 bytes 9 files changed, 308 insertions(+), 10 deletions(-) create mode 100644 custom_components/mass/intent.py create mode 100644 custom_sentences/en/play_media_on_media_player.yaml create mode 100644 screenshots/screen6.png diff --git a/README.md b/README.md index b6605f88..67b54f4b 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,18 @@ MA requires a 64bit Operating System and a minimum of 2GB of RAM on the physical NOTE: You need to set-up the players and music sources within Music Assistant itself. If you are running Music Assistant in docker, you need to access the webinterface at http://youripaddress:8095, when running the Home Assistant add-on, you can access the webinterface from the add-on (and even show that in the sidebar). +## OpenAI features + +During [Chapter 5 of "Year of the Voice"](https://www.youtube.com/live/djEkgoS5dDQ?si=pt8-qYH3PTpsnOq9&t=3699), [JLo](https://blog.jlpouffier.fr/chatgpt-powered-music-search-engine-on-a-local-voice-assistant/) showed something he had been working on to use the OpenAI integration along with Music Assistant. We now have this feature baked in to the integration code directly, although some extra setup is still required. +- You need to create/add another OpenAI integration that is purely for Music Assistant. +- Add the prompt found [here](https://github.com/jozefKruszynski/home-assistant-things/blob/main/blueprints/modified_prompt.txt) to the configuration of the the OpenAI integration. +- Add a directory in your Home Assistant `config` dir name `custom_sentences/en` +- Add the file found [here](https://github.com/music-assistant/hass-music-assistant/blob/main/custom_sentences/en/play_media_on_media_player.yaml), to that dir. +- When setting up the Music Assistant integration, make sure that you select the correct Conversation Agent and also +allow the auto-exposure of Mass media players to Assist + +![Preview image](https://raw.githubusercontent.com/music-assistant/hass-music-assistant/main/screenshots/screen6.png) + ## Usage and notes - Music from your music sources will be automatically loaded into the Music Assistant library. If you have multiple sources, they will be merged as one library. diff --git a/custom_components/mass/config_flow.py b/custom_components/mass/config_flow.py index 31a5f531..7215a32e 100644 --- a/custom_components/mass/config_flow.py +++ b/custom_components/mass/config_flow.py @@ -18,7 +18,7 @@ from homeassistant.core import HomeAssistant from homeassistant.data_entry_flow import AbortFlow, FlowResult from homeassistant.exceptions import HomeAssistantError -from homeassistant.helpers import aiohttp_client +from homeassistant.helpers import aiohttp_client, selector from music_assistant.client import MusicAssistantClient from music_assistant.client.exceptions import CannotConnect, InvalidServerVersion from music_assistant.common.models.api import ServerInfoMessage @@ -26,7 +26,9 @@ from .addon import get_addon_manager, install_repository from .const import ( ADDON_HOSTNAME, + CONF_ASSIST_AUTO_EXPOSE_PLAYERS, CONF_INTEGRATION_CREATED_ADDON, + CONF_OPENAI_AGENT_ID, CONF_USE_ADDON, DOMAIN, LOGGER, @@ -37,13 +39,42 @@ DEFAULT_URL = "http://mass.local:8095" ADDON_URL = f"http://{ADDON_HOSTNAME}:8095" DEFAULT_TITLE = "Music Assistant" -ON_SUPERVISOR_SCHEMA = vol.Schema({vol.Optional(CONF_USE_ADDON, default=True): bool}) + +ON_SUPERVISOR_SCHEMA = vol.Schema( + { + vol.Optional(CONF_USE_ADDON, default=True): bool, + vol.Optional(CONF_OPENAI_AGENT_ID, default=None): selector.ConversationAgentSelector( + selector.ConversationAgentSelectorConfig(language="en") + ), + vol.Optional(CONF_ASSIST_AUTO_EXPOSE_PLAYERS, default=False): bool, + } +) def get_manual_schema(user_input: dict[str, Any]) -> vol.Schema: """Return a schema for the manual step.""" default_url = user_input.get(CONF_URL, DEFAULT_URL) - return vol.Schema({vol.Required(CONF_URL, default=default_url): str}) + return vol.Schema( + { + vol.Required(CONF_URL, default=default_url): str, + vol.Optional(CONF_OPENAI_AGENT_ID, default=None): selector.ConversationAgentSelector( + selector.ConversationAgentSelectorConfig(language="en") + ), + vol.Optional(CONF_ASSIST_AUTO_EXPOSE_PLAYERS, default=False): bool, + } + ) + + +def get_zeroconf_schema() -> vol.Schema: + """Return a schema for the zeroconf step.""" + return vol.Schema( + { + vol.Optional(CONF_OPENAI_AGENT_ID, default=None): selector.ConversationAgentSelector( + selector.ConversationAgentSelectorConfig(language="en") + ), + vol.Optional(CONF_ASSIST_AUTO_EXPOSE_PLAYERS, default=False): bool, + } + ) async def get_server_info(hass: HomeAssistant, url: str) -> ServerInfoMessage: @@ -63,6 +94,8 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): def __init__(self) -> None: """Set up flow instance.""" self.server_info: ServerInfoMessage | None = None + self.openai_agent_id: str | None = None + self.expose_players_assist: bool | None = None # If we install the add-on we should uninstall it on entry remove. self.integration_created_addon = False self.install_task: asyncio.Task | None = None @@ -182,6 +215,8 @@ async def async_step_manual(self, user_input: dict[str, Any] | None = None) -> F try: self.server_info = await get_server_info(self.hass, user_input[CONF_URL]) + self.openai_agent_id = user_input[CONF_OPENAI_AGENT_ID] + self.expose_players_assist = user_input[CONF_ASSIST_AUTO_EXPOSE_PLAYERS] await self.async_set_unique_id(self.server_info.server_id) except CannotConnect: errors["base"] = "cannot_connect" @@ -223,12 +258,15 @@ async def async_step_discovery_confirm( if user_input is not None: # Check that we can connect to the address. try: + self.openai_agent_id = user_input[CONF_OPENAI_AGENT_ID] + self.expose_players_assist = user_input[CONF_ASSIST_AUTO_EXPOSE_PLAYERS] await get_server_info(self.hass, self.server_info.base_url) except CannotConnect: return self.async_abort(reason="cannot_connect") return await self._async_create_entry_or_abort() return self.async_show_form( step_id="discovery_confirm", + data_schema=get_zeroconf_schema(), description_placeholders={"url": self.server_info.base_url}, ) @@ -279,6 +317,8 @@ async def _async_create_entry_or_abort(self) -> FlowResult: CONF_URL: self.server_info.base_url, CONF_USE_ADDON: self.use_addon, CONF_INTEGRATION_CREATED_ADDON: self.integration_created_addon, + CONF_OPENAI_AGENT_ID: self.openai_agent_id, + CONF_ASSIST_AUTO_EXPOSE_PLAYERS: self.expose_players_assist, }, title=DEFAULT_TITLE, ) @@ -295,6 +335,8 @@ async def _async_create_entry_or_abort(self) -> FlowResult: CONF_URL: self.server_info.base_url, CONF_USE_ADDON: self.use_addon, CONF_INTEGRATION_CREATED_ADDON: self.integration_created_addon, + CONF_OPENAI_AGENT_ID: self.openai_agent_id, + CONF_ASSIST_AUTO_EXPOSE_PLAYERS: self.expose_players_assist, }, ) diff --git a/custom_components/mass/const.py b/custom_components/mass/const.py index dc563992..cd51438f 100644 --- a/custom_components/mass/const.py +++ b/custom_components/mass/const.py @@ -23,5 +23,7 @@ CONF_INTEGRATION_CREATED_ADDON = "integration_created_addon" CONF_USE_ADDON = "use_addon" +CONF_OPENAI_AGENT_ID = "openai_agent_id" +CONF_ASSIST_AUTO_EXPOSE_PLAYERS = "expose_players_assist" LOGGER = logging.getLogger(__package__) diff --git a/custom_components/mass/intent.py b/custom_components/mass/intent.py new file mode 100644 index 00000000..c9b02694 --- /dev/null +++ b/custom_components/mass/intent.py @@ -0,0 +1,205 @@ +"""Intents for the client integration.""" +from __future__ import annotations + +import json +from typing import TYPE_CHECKING, Any + +import voluptuous as vol +from homeassistant.components.conversation import ATTR_AGENT_ID, ATTR_TEXT +from homeassistant.components.conversation import SERVICE_PROCESS as CONVERSATION_SERVICE +from homeassistant.components.conversation.const import DOMAIN as CONVERSATION_DOMAIN +from homeassistant.components.media_player.const import DOMAIN as MEDIA_PLAYER_DOMAIN +from homeassistant.config_entries import ConfigEntry, ConfigEntryState +from homeassistant.core import HomeAssistant +from homeassistant.helpers import area_registry as ar +from homeassistant.helpers import config_validation as cv +from homeassistant.helpers import device_registry as dr +from homeassistant.helpers import entity_registry as er +from homeassistant.helpers import intent + +from . import DOMAIN +from .const import CONF_OPENAI_AGENT_ID +from .media_player import ATTR_MEDIA_ID, ATTR_MEDIA_TYPE, ATTR_RADIO_MODE, MassPlayer + +if TYPE_CHECKING: + pass +if TYPE_CHECKING: + from music_assistant.client import MusicAssistantClient + + +INTENT_PLAY_MEDIA_ON_MEDIA_PLAYER = "MassPlayMediaOnMediaPlayer" +NAME_SLOT = "name" +AREA_SLOT = "area" +QUERY_SLOT = "query" +SLOT_VALUE = "value" + + +async def async_setup_intents(hass: HomeAssistant) -> None: + """Set up the climate intents.""" + intent.async_register(hass, MassPlayMediaOnMediaPlayerHandler()) + + +class MassPlayMediaOnMediaPlayerHandler(intent.IntentHandler): + """Handle PlayMediaOnMediaPlayer intents.""" + + intent_type = INTENT_PLAY_MEDIA_ON_MEDIA_PLAYER + slot_schema = {vol.Any(NAME_SLOT, AREA_SLOT): cv.string, vol.Optional(QUERY_SLOT): cv.string} + + async def async_handle(self, intent_obj: intent.Intent) -> intent.IntentResponse: + """Handle the intent.""" + slots = self.async_validate_slots(intent_obj.slots) + config_entry = await self._get_loaded_config_entry(intent_obj.hass) + + query: str = slots.get(QUERY_SLOT, {}).get(SLOT_VALUE) + if query is not None: + service_data: dict[str, Any] = {} + service_data[ATTR_AGENT_ID] = config_entry.data.get(CONF_OPENAI_AGENT_ID) + service_data[ATTR_TEXT] = query + + # Look up area to fail early + area_name = slots.get(AREA_SLOT, {}).get(SLOT_VALUE) + if area_name is not None: + areas = ar.async_get(intent_obj.hass) + area_name = area_name.casefold() + area = await self._find_area(area_name, areas) + if area is None: + raise intent.IntentHandleError(f"No area named {area_name}") + media_player_entity = await self._get_entity_by_area( + area, intent_obj.hass, config_entry + ) + if media_player_entity is None: + raise intent.IntentHandleError(f"No media player found matching area: {area_name}") + + # Look up name to fail early + name: str = slots.get(NAME_SLOT, {}).get(SLOT_VALUE) + if name is not None: + name = name.casefold() + media_player_entity = await self._get_entity_from_registry( + name, intent_obj.hass, config_entry + ) + if media_player_entity is None: + raise intent.IntentHandleError(f"No media player found matching name: {name}") + + actual_player = await self._get_mass_player_from_registry_entry( + intent_obj.hass, config_entry, media_player_entity + ) + if actual_player is None: + raise intent.IntentHandleError(f"No Mass media player found for name {name}") + + media_id, media_type = await self._get_media_id_and_media_type_from_query_result( + intent_obj.hass, service_data, intent_obj + ) + await actual_player.async_play_media( + media_id=media_id, media_type=media_type, extra={ATTR_RADIO_MODE: False} + ) + response = intent_obj.create_response() + response.response_type = intent.IntentResponseType.ACTION_DONE + if area_name is not None: + response.async_set_speech(f"Playing selection in {area_name}") + if name is not None: + response.async_set_speech(f"Playing selection on {name}") + return response + + async def _get_media_id_and_media_type_from_query_result( + self, hass: HomeAssistant, service_data: dict[str, Any], intent_obj: intent.Intent + ) -> str: + """Get from the query.""" + ai_response = await hass.services.async_call( + CONVERSATION_DOMAIN, + CONVERSATION_SERVICE, + {**service_data}, + blocking=True, + context=intent_obj.context, + return_response=True, + ) + json_payload = json.loads(ai_response["response"]["speech"]["plain"]["speech"]) + media_id = json_payload.get(ATTR_MEDIA_ID) + media_type = json_payload.get(ATTR_MEDIA_TYPE) + return media_id, media_type + + async def _get_loaded_config_entry(self, hass: HomeAssistant) -> str: + """Get the correct config entry.""" + config_entries = hass.config_entries.async_entries(DOMAIN) + for config_entry in config_entries: + if config_entry.state == ConfigEntryState.LOADED: + return config_entry + return None + + async def _get_entity_from_registry( + self, name: str, hass: HomeAssistant, config_entry: ConfigEntry + ) -> er.RegistryEntry: + """Get the entity from the registry.""" + entity_registry = er.async_get(hass) + entity_registry_entries = er.async_entries_for_config_entry( + entity_registry, config_entry.entry_id + ) + for entity_registry_entry in entity_registry_entries: + if await self._has_name(entity_registry_entry, name): + return entity_registry_entry + return None + + async def _has_name(self, entity: er.RegistryEntry | None, name: str) -> bool: + """Return true if entity name or alias matches.""" + if entity is not None: + normalised_entity_id = ( + entity.entity_id.replace("_", " ").strip("media player.").casefold() + ) + + if name in normalised_entity_id: + return True + + # Check name/aliases + if (entity is None) or (not entity.aliases): + return False + + return any(name == alias.casefold() for alias in entity.aliases) + + async def _get_mass_player_from_registry_entry( + self, hass: HomeAssistant, config_entry: ConfigEntry, media_player_entity: er.RegistryEntry + ) -> MassPlayer: + """Return the mass player.""" + mass: MusicAssistantClient = hass.data[DOMAIN][config_entry.entry_id].mass + player_entity = hass.data[MEDIA_PLAYER_DOMAIN].get_entity(media_player_entity.entity_id) + mass_player = mass.players.get_player( + player_entity.extra_state_attributes.get("mass_player_id") + ) + actual_player = MassPlayer(mass, mass_player.player_id) + return actual_player + + async def _find_area(self, area_name: str, areas: ar.AreaRegistry) -> ar.AreaEntry | None: + """Find an area by id or name, checking aliases too.""" + area = areas.async_get_area(area_name) or areas.async_get_area_by_name(area_name) + if area is not None: + return area + + # Check area aliases + for maybe_area in areas.areas.values(): + if not maybe_area.aliases: + continue + + for area_alias in maybe_area.aliases: + if area_name == area_alias.casefold(): + return maybe_area + + return None + + async def _get_entity_by_area( + self, area: ar.AreaEntry, hass: HomeAssistant, config_entry: ConfigEntry + ) -> er.RegistryEntry: + """Filter state/entity pairs by an area.""" + entity_registry = er.async_get(hass) + device_registry = dr.async_get(hass) + entity_registry_entries = er.async_entries_for_config_entry( + entity_registry, config_entry.entry_id + ) + for entity_registry_entry in entity_registry_entries: + if entity_registry_entry.area_id == area.id: + # Use entity's area id first + return entity_registry_entry + if entity_registry_entry.device_id is not None: + # Fall back to device area if not set on entity + device = device_registry.async_get(entity_registry_entry.device_id) + if device is not None and device.area_id == area.id: + return entity_registry_entry + + return None diff --git a/custom_components/mass/media_player.py b/custom_components/mass/media_player.py index cf84cabc..c9670ed7 100644 --- a/custom_components/mass/media_player.py +++ b/custom_components/mass/media_player.py @@ -9,6 +9,7 @@ import homeassistant.helpers.config_validation as cv import voluptuous as vol from homeassistant.components import media_source +from homeassistant.components.homeassistant.exposed_entities import async_expose_entity from homeassistant.components.media_player import ( BrowseMedia, MediaPlayerDeviceClass, @@ -22,7 +23,7 @@ ATTR_MEDIA_EXTRA, MediaPlayerEntityFeature, ) -from homeassistant.config_entries import ConfigEntry +from homeassistant.config_entries import ConfigEntry, ConfigEntryState from homeassistant.const import STATE_IDLE, STATE_OFF, STATE_PAUSED, STATE_PLAYING from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback, async_get_current_platform @@ -172,6 +173,10 @@ def __init__(self, mass: MusicAssistantClient, player_id: str) -> None: async def async_added_to_hass(self) -> None: """Register callbacks.""" await super().async_added_to_hass() + # we need to get the hass object in order to get our config entry + # and expose the player to the conversation component, assuming that + # the config entry has the option enabled. + await self._expose_players_assist() # we subscribe to player queue time update but we only # accept a state change on big time jumps (e.g. seeking) @@ -553,3 +558,13 @@ async def _get_item_by_name( # simply return the first item because search is already sorted by best match return item return None + + async def _expose_players_assist(self) -> None: + """Get the correct config entry.""" + hass = self.hass + config_entries = hass.config_entries.async_entries(DOMAIN) + for config_entry in config_entries: + if config_entry.state == ConfigEntryState.SETUP_IN_PROGRESS and config_entry.data.get( + "expose_players_assist" + ): + async_expose_entity(hass, "conversation", self.entity_id, True) diff --git a/custom_components/mass/strings.json b/custom_components/mass/strings.json index 9b9542ea..f44ba992 100644 --- a/custom_components/mass/strings.json +++ b/custom_components/mass/strings.json @@ -14,14 +14,16 @@ "step": { "manual": { "data": { - "url": "URL of the Music Assistant server" + "url": "URL of the Music Assistant server", + "expose_players_assist": "Expose players to Assist" } }, "on_supervisor": { "title": "Select connection method", "description": "Do you want to use the official Music Assistant Server add-on?\n\nIf you are already running the Music Assistant Server in another add-on, in a custom container, natively etc., then do not select this option.", "data": { - "use_addon": "Use the official Music Assistant Server add-on" + "use_addon": "Use the official Music Assistant Server add-on", + "expose_players_assist": "Expose players to Assist" } }, "install_addon": { @@ -35,7 +37,10 @@ }, "discovery_confirm": { "description": "Do you want to add the Music Assistant Server `{url}` to Home Assistant?", - "title": "Discovered Music Assistant Server" + "title": "Discovered Music Assistant Server", + "data": { + "expose_players_assist": "Expose players to Assist" + } } }, "error": { diff --git a/custom_components/mass/translations/en.json b/custom_components/mass/translations/en.json index 7927278a..63760759 100644 --- a/custom_components/mass/translations/en.json +++ b/custom_components/mass/translations/en.json @@ -14,14 +14,16 @@ "step": { "manual": { "data": { - "url": "URL of the Music Assistant server" + "url": "URL of the Music Assistant server", + "expose_players_assist": "Expose players to Assist" } }, "on_supervisor": { "title": "Select connection method", "description": "Do you want to use the official Music Assistant Server add-on?\n\nIf you are already running the Music Assistant Server in another add-on, in a custom container, natively etc., then do not select this option.", "data": { - "use_addon": "Use the official Music Assistant Server add-on" + "use_addon": "Use the official Music Assistant Server add-on", + "expose_players_assist": "Expose players to Assist" } }, "install_addon": { @@ -35,7 +37,10 @@ }, "discovery_confirm": { "description": "Do you want to add the Music Assistant Server `{url}` to Home Assistant?", - "title": "Discovered Music Assistant Server" + "title": "Discovered Music Assistant Server", + "data": { + "expose_players_assist": "Expose players to Assist" + } } }, "error": { diff --git a/custom_sentences/en/play_media_on_media_player.yaml b/custom_sentences/en/play_media_on_media_player.yaml new file mode 100644 index 00000000..ae37ac4f --- /dev/null +++ b/custom_sentences/en/play_media_on_media_player.yaml @@ -0,0 +1,12 @@ +language: "en" +intents: + MassPlayMediaOnMediaPlayer: + data: + - sentences: + - "(play|listen to) {query} [the] (|[ the] [ the ])" + - " [the] (|[ the] [ the ]) (play|listen to) {query}" + expansion_rules: + player_devices: "(speaker[s]|[media] player[s])" +lists: + query: + wildcard: true diff --git a/screenshots/screen6.png b/screenshots/screen6.png new file mode 100644 index 0000000000000000000000000000000000000000..38176e5374f586f4cc21b97f9b2c9f1ccb35d06b GIT binary patch literal 72406 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