diff --git a/homeassistant/components/notify/slack.py b/homeassistant/components/notify/slack.py index 780a27b9795..aded8cd56a9 100644 --- a/homeassistant/components/notify/slack.py +++ b/homeassistant/components/notify/slack.py @@ -10,7 +10,8 @@ import voluptuous as vol from homeassistant.components.notify import ( PLATFORM_SCHEMA, BaseNotificationService) -from homeassistant.const import CONF_API_KEY +from homeassistant.const import ( + CONF_API_KEY, CONF_USERNAME, CONF_ICON) import homeassistant.helpers.config_validation as cv REQUIREMENTS = ['slacker==0.9.25'] @@ -22,6 +23,8 @@ CONF_CHANNEL = 'default_channel' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_API_KEY): cv.string, vol.Required(CONF_CHANNEL): cv.string, + vol.Optional(CONF_USERNAME): cv.string, + vol.Optional(CONF_ICON): cv.string, }) @@ -33,7 +36,9 @@ def get_service(hass, config): try: return SlackNotificationService( config[CONF_CHANNEL], - config[CONF_API_KEY]) + config[CONF_API_KEY], + config.get(CONF_USERNAME, None), + config.get(CONF_ICON, None)) except slacker.Error: _LOGGER.exception("Slack authentication failed") @@ -44,11 +49,18 @@ def get_service(hass, config): class SlackNotificationService(BaseNotificationService): """Implement the notification service for Slack.""" - def __init__(self, default_channel, api_token): + def __init__(self, default_channel, api_token, username, icon): """Initialize the service.""" from slacker import Slacker self._default_channel = default_channel self._api_token = api_token + self._username = username + self._icon = icon + if self._username or self._icon: + self._as_user = False + else: + self._as_user = True + self.slack = Slacker(self._api_token) self.slack.auth.test() @@ -62,7 +74,9 @@ class SlackNotificationService(BaseNotificationService): try: self.slack.chat.post_message(channel, message, - as_user=True, + as_user=self._as_user, + username=self._username, + icon_emoji=self._icon, attachments=attachments, link_names=True) except slacker.Error as err: