diff --git a/configs/config.yaml b/configs/config.yaml index 893001c..7585eb6 100644 --- a/configs/config.yaml +++ b/configs/config.yaml @@ -88,7 +88,7 @@ notifications: # Reminders are sent using these modes of contact default_modes: - "email" - + # - "teams_messenger" # Reminder task settings reminder: activated: True @@ -103,6 +103,9 @@ user_validator: # Reminders sent using these messengers messengers: +# - type: teams_messenger +# webhook: "channel_webhook_url" +# # - type: rocketchat_messenger # user: username # password: abc123 diff --git a/db/schema.v0.sql b/db/schema.v0.sql index 24e9ffd..b1b999e 100644 --- a/db/schema.v0.sql +++ b/db/schema.v0.sql @@ -312,7 +312,7 @@ CREATE TABLE IF NOT EXISTS `contact_mode` ( -- Initialize contact modes -- ----------------------------------------------------- INSERT INTO `contact_mode` (`name`) -VALUES ('email'), ('sms'), ('call'), ('slack'); +VALUES ('email'), ('sms'), ('call'), ('slack'), ('teams_messenger'); -- ----------------------------------------------------- -- Table `user_contact` diff --git a/setup.py b/setup.py index 0a449c3..1d80db4 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,8 @@ setuptools.setup( 'pytz', 'irisclient', 'slackclient', - 'icalendar' + 'icalendar', + 'pymsteams' ], extras_require={ 'ldap': ['python-ldap'], diff --git a/src/oncall/constants.py b/src/oncall/constants.py index 55fbe46..91bbb54 100644 --- a/src/oncall/constants.py +++ b/src/oncall/constants.py @@ -6,6 +6,7 @@ SMS_SUPPORT = 'sms' CALL_SUPPORT = 'call' SLACK_SUPPORT = 'slack' ROCKET_SUPPORT = 'rocketchat' +TEAMS_SUPPORT = 'teams_messenger' ONCALL_REMINDER = 'oncall_reminder' OFFCALL_REMINDER = 'offcall_reminder' diff --git a/src/oncall/messengers/teams_messenger.py b/src/oncall/messengers/teams_messenger.py new file mode 100644 index 0000000..07cebbf --- /dev/null +++ b/src/oncall/messengers/teams_messenger.py @@ -0,0 +1,22 @@ +import pymsteams +import logging +from oncall.constants import TEAMS_SUPPORT + + +class teams_messenger(object): + supports = frozenset([TEAMS_SUPPORT]) + + def __init__(self, config): + self.webhook = config['webhook'] + + def send(self, message): + heading = message.get("subject") + final_message = "User: " + message.get("user") + " Message: " + message.get("body") + + try: + myTeamsMessage = pymsteams.connectorcard(self.webhook) + myTeamsMessage.title(str(heading)) + myTeamsMessage.text(str(final_message)) + myTeamsMessage.send() + except: + logging.info("An issue occured while sending message to teams messenger")