Hey folks,
I’m trying to set up an AWS EventBridge integration to capture real-time Genesys Cloud events for our WFM adherence tracking. We need to log every time a queue status changes so we can correlate it with agent adherence metrics in our internal dashboard. The goal is to get the routing.queueId from the event payload to update our local state.
I’ve configured the EventBridge rule to match the source gen:platform and detail type gen:platform:interactionEvent. The rule seems to be firing correctly because I see successful deliveries in the EventBridge console logs. However, when I inspect the payload in my Lambda function, the routing object is often empty or missing the queueId field entirely.
Here is the relevant part of my Lambda handler code:
exports.handler = async (event) => {
console.log('Received event:', JSON.stringify(event, null, 2));
const detail = event.detail;
const interactionId = detail.interactionId;
// This is where it breaks
const queueId = detail.routing?.queueId;
if (!queueId) {
console.error('Missing queueId for interaction:', interactionId);
return {
statusCode: 200,
body: JSON.stringify({ message: 'Queue ID missing' })
};
}
// Process adherence data...
return { statusCode: 200, body: JSON.stringify({ message: 'Processed' }) };
};
The console log shows that detail.routing exists, but queueId is undefined. I’ve checked the Genesys Cloud EventBridge integration settings, and the subscription includes gen:platform:interactionEvent. I’m using the standard AWS SDK for the EventBridge rule setup.
Is there a specific filter or configuration I’m missing in the Genesys Cloud side to ensure the routing context is populated? Or is this a known issue with certain event types? I’ve tried checking the Genesys Cloud API documentation for EventBridge, but it doesn’t specify which fields are guaranteed to be present in the routing object.
Any help would be appreciated.