diff --git a/homeassistant/components/notify/__init__.py b/homeassistant/components/notify/__init__.py index 5be2bb1be64..4dacfcb350e 100644 --- a/homeassistant/components/notify/__init__.py +++ b/homeassistant/components/notify/__init__.py @@ -8,11 +8,13 @@ from functools import partial import logging import os +import voluptuous as vol + import homeassistant.bootstrap as bootstrap from homeassistant.config import load_yaml_config_file from homeassistant.helpers import config_per_platform, template from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa - +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_NAME DOMAIN = "notify" @@ -32,6 +34,13 @@ ATTR_DATA = 'data' SERVICE_NOTIFY = "notify" +NOTIFY_SERVICE_SCHEMA = vol.Schema({ + vol.Required(ATTR_MESSAGE): cv.template, + vol.Optional(ATTR_TITLE, default=ATTR_TITLE_DEFAULT): cv.string, + vol.Optional(ATTR_TARGET): cv.string, + vol.Optional(ATTR_DATA): dict, # nobody seems to be using this (yet) +}) + _LOGGER = logging.getLogger(__name__) @@ -71,13 +80,7 @@ def setup(hass, config): def notify_message(notify_service, call): """Handle sending notification message service calls.""" - message = call.data.get(ATTR_MESSAGE) - - if message is None: - _LOGGER.error( - 'Received call to %s without attribute %s', - call.service, ATTR_MESSAGE) - return + message = call.data[ATTR_MESSAGE] title = template.render( hass, call.data.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)) @@ -91,7 +94,8 @@ def setup(hass, config): service_call_handler = partial(notify_message, notify_service) service_notify = p_config.get(CONF_NAME, SERVICE_NOTIFY) hass.services.register(DOMAIN, service_notify, service_call_handler, - descriptions.get(SERVICE_NOTIFY)) + descriptions.get(SERVICE_NOTIFY), + schema=NOTIFY_SERVICE_SCHEMA) success = True return success