Trying to wire up an AWS EventBridge rule to catch real-time Genesys Cloud events. We’ve got the integration configured in the Genesys Cloud admin console, pointing to our EventBridge bus. The docs say it should push events like conversation:created directly into the bus.
I’ve set up an EventBridge rule with a pattern that looks like this:
{
"source": ["genesys.cloud"],
"detail-type": ["Conversation Event"]
}
The target is a Lambda function that just logs the event payload to CloudWatch. I’m testing by starting a chat conversation in the sandbox environment. I can see the event hitting the bus if I put a rule that matches everything, but my specific rule never triggers.
When I look at the raw event in CloudWatch from the catch-all rule, the structure is slightly different than expected. The detail object contains a nested event field with the actual type. It looks like this:
{
"source": "genesys.cloud",
"detail-type": "Genesys Cloud Event",
"detail": {
"event": {
"type": "conversation:created",
"data": { ... }
}
}
}
My rule is failing because detail-type is Genesys Cloud Event, not Conversation Event as I assumed from some older blog posts. Also, the source seems to include the org ID sometimes? Or is that just the integration ID?
I tried updating the rule to match "detail-type": ["Genesys Cloud Event"] and adding a condition for "detail.event.type": ["conversation:created"], but EventBridge rules don’t support nested object matching in the pattern easily without using detail path syntax which I’m struggling with.
Has anyone got the exact JSON pattern that works? I don’t want to catch every single event and filter in the Lambda, that’s going to be expensive and slow. Need a clean way to match just the conversation lifecycle events. The documentation on the AWS side is pretty sparse on the exact payload shape from Genesys.