53 lines
1.5 KiB
Markdown
53 lines
1.5 KiB
Markdown
---
|
|
title: "Firing intents"
|
|
---
|
|
|
|
When you fire an intent, you will get a response back or an error will be raised. It is up to the component to return the result to the user.
|
|
|
|
Example code to handle an intent in Home Assistant.
|
|
|
|
```python
|
|
from homeassistant.helpers import intent
|
|
|
|
intent_type = 'TurnLightOn'
|
|
slots = {
|
|
'entity': { 'value': 'Kitchen' }
|
|
}
|
|
|
|
try:
|
|
intent_response = yield from intent.async_handle(
|
|
hass, 'example_component', intent_type, slots
|
|
)
|
|
|
|
except intent.UnknownIntent as err:
|
|
_LOGGER.warning('Received unknown intent %s', intent_type)
|
|
|
|
except intent.InvalidSlotInfo as err:
|
|
_LOGGER.error('Received invalid slot data: %s', err)
|
|
|
|
except intent.IntentError:
|
|
_LOGGER.exception('Error handling request for %s', intent_type)
|
|
```
|
|
|
|
The intent response is an instance of `homeassistant.helpers.intent.IntentResponse`.
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| `intent` | Intent | Instance of intent that triggered response. |
|
|
| `speech` | Dictionary | Speech responses. Each key is a type. Allowed types are `plain` and `ssml`. |
|
|
| `card` | Dictionary | Card responses. Each key is a type. |
|
|
|
|
Speech dictionary values:
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| `speech` | String | The text to say
|
|
| `extra_data` | Any | Extra information related to this speech.
|
|
|
|
Card dictionary values:
|
|
|
|
| Name | Type | Description |
|
|
| ---- | ---- | ----------- |
|
|
| `title` | String | The title of the card
|
|
| `content` | Any | The content of the card
|