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:
- Import and instantiate a Channel, passing in URI and topics.
- Await the channel to connect and subscribe.
- 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.
-
Instantiate the Channel with
extend=Falseto disable automatic lifetime extension & handle it manually by catchingChannelExpiring↩ -
Except when
channel.rollover(uri)is called; under the hood, a new websocket connection is then initialized and transparently replaces the original ↩ -
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)
| File | Size | Uploaded | |
|---|---|---|---|
| genesys-notifications-1.3.tar.gz | 14.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|