Route OpenClaw chat by HA user
This commit is contained in:
@@ -19,18 +19,18 @@ from homeassistant.helpers import intent
|
||||
|
||||
from .api import OpenClawApiClient, OpenClawApiError
|
||||
from .const import (
|
||||
ATTR_AGENT_ID,
|
||||
ATTR_HA_USER_ID,
|
||||
ATTR_MESSAGE,
|
||||
ATTR_MODEL,
|
||||
ATTR_SESSION_ID,
|
||||
ATTR_SESSION_KEY,
|
||||
ATTR_TIMESTAMP,
|
||||
CONF_ASSIST_SESSION_ID,
|
||||
CONF_AGENT_ID,
|
||||
CONF_CONTEXT_MAX_CHARS,
|
||||
CONF_CONTEXT_STRATEGY,
|
||||
CONF_INCLUDE_EXPOSED_CONTEXT,
|
||||
CONF_VOICE_AGENT_ID,
|
||||
DEFAULT_ASSIST_SESSION_ID,
|
||||
DEFAULT_AGENT_ID,
|
||||
DEFAULT_CONTEXT_MAX_CHARS,
|
||||
DEFAULT_CONTEXT_STRATEGY,
|
||||
DEFAULT_INCLUDE_EXPOSED_CONTEXT,
|
||||
@@ -41,6 +41,7 @@ from .const import (
|
||||
from .coordinator import OpenClawCoordinator
|
||||
from .exposure import apply_context_policy, build_exposed_entities_context
|
||||
from .helpers import extract_text_recursive
|
||||
from .routing import normalize_ha_user_id, resolve_agent_id, resolve_model_override
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -121,19 +122,12 @@ class OpenClawConversationAgent(conversation.AbstractConversationAgent):
|
||||
|
||||
message = user_input.text
|
||||
assistant_id = "conversation"
|
||||
context = getattr(user_input, "context", None)
|
||||
ha_user_id = normalize_ha_user_id(getattr(context, "user_id", None))
|
||||
options = self.entry.options
|
||||
voice_agent_id = self._normalize_optional_text(
|
||||
options.get(CONF_VOICE_AGENT_ID)
|
||||
)
|
||||
configured_agent_id = self._normalize_optional_text(
|
||||
options.get(
|
||||
CONF_AGENT_ID,
|
||||
self.entry.data.get(CONF_AGENT_ID, DEFAULT_AGENT_ID),
|
||||
)
|
||||
)
|
||||
resolved_agent_id = voice_agent_id or configured_agent_id
|
||||
resolved_agent_id = resolve_agent_id(ha_user_id)
|
||||
conversation_id = self._resolve_conversation_id(user_input, resolved_agent_id)
|
||||
active_model = self._normalize_optional_text(options.get("active_model"))
|
||||
active_model = resolve_model_override(options.get("active_model"))
|
||||
include_context = options.get(
|
||||
CONF_INCLUDE_EXPOSED_CONTEXT,
|
||||
DEFAULT_INCLUDE_EXPOSED_CONTEXT,
|
||||
@@ -203,6 +197,9 @@ class OpenClawConversationAgent(conversation.AbstractConversationAgent):
|
||||
{
|
||||
ATTR_MESSAGE: full_response,
|
||||
ATTR_SESSION_ID: conversation_id,
|
||||
ATTR_SESSION_KEY: conversation_id,
|
||||
ATTR_HA_USER_ID: ha_user_id,
|
||||
ATTR_AGENT_ID: resolved_agent_id,
|
||||
ATTR_MODEL: coordinator.data.get(DATA_MODEL) if coordinator.data else None,
|
||||
ATTR_TIMESTAMP: datetime.now(timezone.utc).isoformat(),
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user