We’ve got a Terraform setup managing our Genesys Cloud webhooks, and I’m trying to configure an EventBridge rule that only triggers on conversation.end events for a specific queue. The goal is to keep the consumer lambda lean, but the pattern matching syntax is giving me a headache. I know EventBridge doesn’t support deep nested lookups like detail.queue.id directly in the rule, but I figured I’d try using the detail-type and some basic structure matching. Here’s the JSON pattern I dropped into the aws_cloudwatch_event_rule resource:
{
"source": ["genesys.cloud"],
"detail-type": ["conversation.end"],
"detail": {
"queue": {
"id": ["550e8400-e29b-41d4-a716-446655440000"]
}
}
}
The problem is that this rule fires for literally every conversation end, regardless of the queue. I’ve verified the queue ID is correct by checking the /api/v2/queues endpoint, and the events definitely contain the queue object in the payload. Is the queue object just not part of the filterable attributes in the EventBridge schema for this event type? It feels like I’m missing a key field or the structure is slightly different than the raw JSON payload suggests.
I’ve already tried adding "detail": {"conversation": {"channel": ["voice"]}} to narrow it down, and that part works fine. The channel filter sticks, but the queue ID filter seems to be ignored entirely by the rule engine. I’m wondering if I need to use a different attribute, maybe something under routing or analytics? Or is this a known limitation where I just have to accept the noise and filter everything in the lambda handler? I’d really rather not process thousands of irrelevant events just to drop them a second later. Anyone else hit this wall with the CX-as-Code provider?