Paulus Schoutsen 80814f25ca update docs for intents (#3046)
* update docs for intents

* Fix alexa docs

* Fix api.ai reference
2017-07-23 23:17:13 -07:00

1.3 KiB

layout, title, description, date, sidebar, comments, sharing, footer
layout title description date sidebar comments sharing footer
page Handling intents How to handle intents that are fired in Home Assistant. 2017-07-23 20:00 true false true true

Any component can register to handle intents. This allows a single component to handle intents fired from multiple voice assistants.

A component has to register an intent handler for each type that it wants to handle. Intent handlers have to extend homeassistant.helpers.intent.IntentHandler

import asyncio
from homeassistant.helpers import intent

DATA_KEY = 'example_key'

@asyncio.coroutine
def async_setup(hass, config):
    hass.data[DATA_KEY] = 0
    intent.async_register(hass, CountInvocationIntent())


class CountInvocationIntent(intent.IntentHandler):
    """Handle CountInvocationIntent intents."""

    # Type of intent to handle
    intent_type = 'CountInvocationIntent'

    # Optional. A validation schema for slots
    # slot_schema = {
    #     'item': cv.string
    # }

    @asyncio.coroutine
    def async_handle(self, intent_obj):
        """Handle the intent."""
        intent_obj.hass.data[DATA_KEY] += 1

        response = intent_obj.create_response()
        response.async_set_speech(
            "This intent has been invoked {} times".format(
                intent_obj.hass.data[DATA_KEY]))
        return response