Skip to main content

genesys-notifications client

This is a simple library for receiving genesys websocket notifications.

See https://developer.genesys.cloud/api/rest/v2/notifications/notification_service for background.

The library provides:

  • channel connection & topic subscriptions
  • async iterator for notifications
  • automatic channel reconnect on failure
  • helpful custom exceptions whenever recovery is not possible
  • automatic channel lifetime extension or rollover when expiring or closing for maintenance 1

The scope of the library is intentionally limited to making single notifications channel management more convenient by encapsulating the above features.

It does not:

  • refresh the access token
  • manage multiple channels2.
  • process received topic notifications3
  • account for the max 20 channels limit
  • account for the 1000 topics per channel subscription limit
  • account for the one connection per channel limit

Usage:

First create the Genesys channel as instructed by the Genesys docs. Then:

  1. Import and instantiate a Channel, passing in URI and topics.
  2. Await the channel to connect and subscribe.
  3. Iterate over the result to receive notifications.

Example:

>>> uri = "wss://streaming.mypurecloud.com/channels/streaming-0-fmtdmf8cdis7jh14udg5p89t6z"
>>> topics = ["v2.analytics.queues.tdmf8cd-k3h43h-udg5p89.observations"]
>>> from genesys_notifications import Channel
>>> from genesys_notifications.exceptions import InitializationFailure, RecoveryFailure
>>> async def test(uri, topics):
...    try:
...       notifications = await Channel(uri, topics)
...    except InitializationFailure:
...       # Handle websocket connection opening and topic subscription failures;
...       # ConnectionFailure and SubscriptionFailure can be caught separately as well.
...    try:
...       async for n in notifications:
...    except RecoveryFailure:
...       # Handle cases when the channel is not able to automatically recover from issues:
...       # in case of problems, it will try once to reconnect & resubscibe before giving up, and
...       # in case of scheduled expiry or ad-hoc Genesys-side close notification, it will try to
          # extend its lifetime by resubscribing to topics.
...    else:
...       print(n)
>>>
>>> import asyncio
>>> asyncio.run(test(uri, topics)) 
{
    "topicName": "channel.metadata",
    "eventBody":{
        "message":"WebSocket Heartbeat"
    }
}

See the exceptions module for all the available exceptions. The reason for exception is always available in its reason attribute. See exceptions.REASON enum for possible reasons.

  1. Instantiate the Channel with extend=False to disable automatic lifetime extension & handle it manually by catching ChannelExpiring ↩

  2. Except when channel.rollover(uri) is called; under the hood, a new websocket connection is then initialized and transparently replaces the original ↩

  3. Except for the bare minimum required to support the provided features; subscription confirmations, channel close notifications etc. ↩

Metadata

Release files for genesys-notifications 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for genesys-notifications 1.3
File Size Uploaded
genesys-notifications-1.3.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for genesys-notifications 1.3
File Interpreter ABI Platform
genesys_notifications-1.3-py3-none-any.whl Python 3 none any Details

Total release size: 28.6 kB

Release files / genesys-notifications-1.3.tar.gz

Download URL genesys-notifications-1.3.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
c3e5eda29866eb696865a1d12e631ca1726a4a893b58b85f7df6d344d1153a45
BLAKE2b-256 checksum
How to use checksums
18e105a96668d481363dbadb7da543f1f26033bfd13fb67e6098cf8f6427c712
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

Release files / genesys_notifications-1.3-py3-none-any.whl

Download URL genesys_notifications-1.3-py3-none-any.whl
Size 14.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
58dd907f002f55264850617ecd7ca349299ef11d94a993b65a3e274130cabe45
BLAKE2b-256 checksum
How to use checksums
2942109275749a1332c0be4a17a9023b4521086e4958d5f0b4deb76e7bf7ef07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2

Release history Release notifications | RSS feed

This release

1.3 This release

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page