Conversation entity
A conversation entity allows users to converse with Home Assistant.
A conversation entity is derived from the  homeassistant.components.conversation.ConversationEntity.
Properties
tip
Properties should always only return information from memory and not do I/O (like network requests).
| Name | Type | Default | Description | 
|---|---|---|---|
| supported_languages | list[str]|Literal["*"] | Required | The supported languages of the service. Return "*"if you support all. | 
Supported features
Supported features are defined by using values in the ConversationEntityFeature enum
and are combined using the bitwise or (|) operator.
| Value | Description | 
|---|---|
| CONTROL | The entity is able to control Home Assistant. | 
Methods
Process
This method is used to process an incoming chat message.
class MyConversationEntity(ConversationEntity):
    """Represent a conversation entity."""
    async def async_process(self, user_input: ConversationInput) -> ConversationResult:
        """Process a sentence."""
        response = intent.IntentResponse(language=user_input.language)
        response.async_set_speech("Test response")
        return agent.ConversationResult(
            conversation_id=None,
            response=response
        )
A ConversationInput object contains the following data:
| Name | Type | Description | 
|---|---|---|
| text | str | User input | 
| context | Context | HA context to attach to actions in HA | 
| conversation_id | Optional[str] | Can be used to track a multi-turn conversation. Return None if not supported | 
| language | str | Language of the text. If user did not provide one, it's set to the HA configured language. | 
Prepare
As soon as Home Assistant knows a request is coming in, we will let the conversation entity prepare for it. This can be used to load a language model or other resources. This function is optional to implement.
class MyConversationEntity(ConversationEntity):
    """Represent a conversation entity."""
    async def async_prepare(self, language: str | None = None) -> None:
        """Prepare a language for processing."""