---
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
