Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ omit =
homeassistant/components/channels/media_player.py
homeassistant/components/cisco_ios/device_tracker.py
homeassistant/components/cisco_mobility_express/device_tracker.py
homeassistant/components/cisco_webex_teams/notify.py
homeassistant/components/ciscospark/notify.py
homeassistant/components/citybikes/sensor.py
homeassistant/components/clementine/media_player.py
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/cisco_webex_teams/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
"""Component to integrate the Cisco Webex Teams cloud."""
60 changes: 60 additions & 0 deletions homeassistant/components/cisco_webex_teams/notify.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
"""Cisco Webex Teams notify component."""
import logging

import voluptuous as vol

from homeassistant.components.notify import (
PLATFORM_SCHEMA, BaseNotificationService, ATTR_TITLE)
from homeassistant.const import (CONF_TOKEN)
import homeassistant.helpers.config_validation as cv

REQUIREMENTS = ['webexteamssdk==1.1.1']

_LOGGER = logging.getLogger(__name__)

CONF_ROOM_ID = 'room_id'

PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_TOKEN): cv.string,
vol.Required(CONF_ROOM_ID): cv.string,
})


def get_service(hass, config, discovery_info=None):
"""Get the CiscoWebexTeams notification service."""
from webexteamssdk import WebexTeamsAPI, exceptions
client = WebexTeamsAPI(access_token=config[CONF_TOKEN])
try:
# Validate the token & room_id
client.rooms.get(config[CONF_ROOM_ID])
except exceptions.ApiError as error:
_LOGGER.error(error)
return None

return CiscoWebexTeamsNotificationService(
client,
config[CONF_ROOM_ID])


class CiscoWebexTeamsNotificationService(BaseNotificationService):
"""The Cisco Webex Teams Notification Service."""

def __init__(self, client, room):
"""Initialize the service."""
self.room = room
self.client = client

def send_message(self, message="", **kwargs):
"""Send a message to a user."""
from webexteamssdk import ApiError
title = ""
if kwargs.get(ATTR_TITLE) is not None:
title = "{}{}".format(kwargs.get(ATTR_TITLE), "<br>")

try:
self.client.messages.create(roomId=self.room,
html="{}{}".format(title, message))
except ApiError as api_error:
_LOGGER.error("Could not send CiscoWebexTeams notification. "
"Error: %s",
api_error)
3 changes: 3 additions & 0 deletions requirements_all.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1783,6 +1783,9 @@ watchdog==0.8.3
# homeassistant.components.waterfurnace
waterfurnace==1.1.0

# homeassistant.components.cisco_webex_teams.notify
webexteamssdk==1.1.1

# homeassistant.components.gpmdp.media_player
websocket-client==0.54.0

Expand Down