"""Cisco Spark platform for notify component.""" import logging from ciscosparkapi import CiscoSparkAPI, SparkApiError import voluptuous as vol from homeassistant.components.notify import ( ATTR_TITLE, PLATFORM_SCHEMA, BaseNotificationService, ) from homeassistant.const import CONF_TOKEN import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) CONF_ROOMID = "roomid" PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend( {vol.Required(CONF_TOKEN): cv.string, vol.Required(CONF_ROOMID): cv.string} ) def get_service(hass, config, discovery_info=None): """Get the CiscoSpark notification service.""" return CiscoSparkNotificationService( config.get(CONF_TOKEN), config.get(CONF_ROOMID) ) class CiscoSparkNotificationService(BaseNotificationService): """The Cisco Spark Notification Service.""" def __init__(self, token, default_room): """Initialize the service.""" self._default_room = default_room self._token = token self._spark = CiscoSparkAPI(access_token=self._token) def send_message(self, message="", **kwargs): """Send a message to a user.""" try: title = "" if kwargs.get(ATTR_TITLE) is not None: title = kwargs.get(ATTR_TITLE) + ": " self._spark.messages.create(roomId=self._default_room, text=title + message) except SparkApiError as api_error: _LOGGER.error( "Could not send CiscoSpark notification. Error: %s", api_error )