I’m working on a custom agent desktop extension using the Genesys Cloud Embeddable Client App SDK. The goal is to display a real-time queue length counter for a specific support queue, say ‘Premium_Support’. I need to subscribe to conversation events to track when agents become available or when new conversations are assigned.
Currently, I’m using the PureCloudPlatformClientV2 instance provided by the SDK context. I get the notification client and create a WebSocket connection like this:
const client = app.getPlatformClient();
const notificationClient = client.getNotificationClient();
notificationClient.connect().then(() => {
console.log('WebSocket connected');
// Attempting to subscribe to routing queue events
notificationClient.subscribe('routing/queues', (event) => {
console.log('Queue event received:', event);
});
});
The connection establishes fine. I see the ‘connected’ log. However, the callback for routing/queues only fires when I manually trigger a global broadcast or when there is activity on the very first queue the user is assigned to. It doesn’t seem to filter or isolate events for the specific queue ID I care about.
I checked the API docs for POST /api/v2/notifications/channels/{channelId}/subscriptions. The payload allows a filter object. I tried adding a filter like { "entityId": "queue-id-here" } in the subscription request, but the WebSocket client method subscribe in the JS SDK doesn’t seem to expose a way to pass that filter payload directly. It just takes the entity type and the callback.
Is there a way to define the subscription scope with a specific filter via the SDK’s WebSocket client? Or do I have to implement my own WebSocket connection and handle the auth token refresh manually? The SDK approach is cleaner but feels limited here. Any code examples for filtering subscriptions would help.