Skip to main content

Decorators for automatically notifying an MS Teams channel of events

Project description

msteamsnotifiers: Decorators for automatically notifying an MS Teams channel of events

msteamsnotifiers makes it easy to automatically send notifications to a channel in MS Teams from Python.

With the upcoming retirement of Office 365 Connectors, this library has been updated to use Workflows. Follow the instructions in this simple, short video to set up the Workflow for your Teams channel. You can then get the webhook URL from the "When a Teams webhook request is received" step of the workflow (it's the auto-generated HTTP POST URL field, which has a handy 'copy' button next to it).

Installation

Install with pip:

pip install msteamsnotifiers

Usage

All the functions provided in msteamsnotifiers can take the webhook URL as an argument. If not specified, the value in msteamsnotifiers.default_webhook_url will be used. This allows you to set this once and then not have to pass it to the other functions each time they are used:

import msteamsnotifiers

msteamsnotifiers.default_webhook_url = '<your Microsoft webhook URL>'

Posting simple messages to a channel

This is the simplest way of posting very simple messages to a channel in MS Teams.

import msteamsnotifiers

msteamsnotifiers.default_webhook_url = '<your Microsoft webhook URL>'

msteamsnotifiers.post_simple_teams_message('Hello channel!')
msteamsnotifiers.post_simple_teams_message('[Markdown formatting](https://www.markdownguide.org/) is supported.')
msteamsnotifiers.post_simple_teams_message('This was sent using [msteamsnotifiers](https://pypi.org/project/msteamsnotifiers/)')

Notifying a channel of an exception

@notify_exceptions is a decorator that will catch any exceptions in the decorated function and send a specially formatted message with details about the exception to a channel.

import msteamsnotifiers
from msteamsnotifiers import notify_exceptions

msteamsnotifiers.default_webhook_url = '<your Microsoft webhook URL>'

@notify_exceptions()
def fn_with_potential_exception(a, b):
    return a + b

# This function call completes successfully, so the channel will not be notified
sum1 = fn_with_potential_exception(1, 2)

# This function call will generate an exception, resulting in the channel being notified
sum2 = fn_with_potential_exception('a', True)

The format of the channel notification can be specified using the template decorator argument. If no template is specified, the default template is msteamsnotifiers.default_exception_template, which includes the full traceback:

default_exception_template = """
*{timestamp}*  
Exception caught in **{funcname}()**, File **"{filename}"**  
**{message}**  
<br>
Node: {machine_name} ({ip_address})
<br>

```{where}```

args: {args}  
kwargs: {kwargs}

Full traceback:  
```{traceback}```
"""

This package variable can be modified similarly to the default_webhook_url parameter.

The friendly_tracebacks module is used to format the included traceback to make it easier to read.

Notifying a channel of a function's completion

@notify_complete is a decorator that will send a message to a channel upon successful completion of the decorated function.

import msteamsnotifiers
from msteamsnotifiers import notify_complete

msteamsnotifiers.default_webhook_url = '<your Microsoft webhook URL>'

import time

@notify_complete()
def long_running_function(a, b):
    print('Thinking... thinking... thinking...')
    time.sleep(3600)
    print(f"Aha! The answer is {a+b}!")
    return a + b

# The channel will be notified upon completion of this function call
sum1 = long_running_function(1, 2)

The format of this message can be specified using the template decorator argument. If no template is specified, the default template is msteamsnotifiers.default_completion_template:

default_completion_template = """
*{timestamp}*  
Function completed: **{funcname}()** in file **"{filename}"**  
Node: {machine_name} ({ip_address})  
args: {args}  
kwargs: {kwargs}
"""

Releases

0.2: 2024-07-18

  • Update to support the new data schema required by the Workflows app.
    • Office 365 Connectors are going away
    • This version won't be compatible with O365 Connector webhooks you've previously set up. According to the link directly above, you won't be able to create new Connector webhooks after August 15th, 2024. Existing connector webhooks will stop working on October 1st, 2024.
  • Removed dependency on pymsteams (an excellent library, RIP)

0.1: 2021-10-02

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

msteamsnotifiers-0.2.0.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

msteamsnotifiers-0.2.0-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file msteamsnotifiers-0.2.0.tar.gz.

File metadata

  • Download URL: msteamsnotifiers-0.2.0.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for msteamsnotifiers-0.2.0.tar.gz
Algorithm Hash digest
SHA256 abcf674acde3750c8325af52ced51d4939654a828f069efe49c35b9f047cdf6f
MD5 cfd8bcf43a7300d0259092186633b4cb
BLAKE2b-256 acf114d97d7321da3c0fb7a0dcd9e9cc485d31d8bbab8c2f412f4cc1dec4ae37

See more details on using hashes here.

File details

Details for the file msteamsnotifiers-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for msteamsnotifiers-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b371c8cbe9994b8a781d55dcde792ed64c002dcd2f6441e1909396fa2dedb2bc
MD5 598faa01fde884cbd68abfdc78ebed76
BLAKE2b-256 0fdb4a6af38bf9a67b6ed2e7976e5582e163d687c8d0c7f371401470333cc013

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page