We are trying to reduce the noise in our EventBridge bus by filtering conversation.end events to only those associated with a specific routing queue. The goal is to avoid processing every single conversation end in the account, which is getting expensive and slow.
I’ve set up an EventBridge rule with the following event pattern JSON:
{
"detail-type": [
"genesys-cloud-voice-conversation-end"
],
"detail": {
"routing": {
"queueId": [
"12345678-abcd-1234-abcd-123456789abc"
]
}
}
}
The queueId in the pattern matches the ID of the queue we care about. However, the rule isn’t matching any events. When I look at the raw event payload from a successful conversation in that queue, the structure looks like this:
{
"version": "0",
"id": "abc-123",
"detail-type": "genesys-cloud-voice-conversation-end",
"source": "com.genesys.cloud",
"account": "12345",
"time": "2023-10-27T10:00:00Z",
"region": "eu-west-1",
"resources": [],
"detail": {
"conversationId": "conv-123",
"routing": {
"queueId": "12345678-abcd-1234-abcd-123456789abc",
"mediaType": "voice"
}
}
}
The detail.routing.queueId field is definitely there. I’ve double-checked the ID. Is there something wrong with the EventBridge pattern syntax for nested objects? Or does Genesys Cloud not include the queueId in the detail section for conversation.end events in all cases? I’m using the standard EventBridge console to test the pattern.
I’ve also tried using detail.routing.queueIds (plural) in the pattern, but that didn’t help either. The documentation is a bit thin on exact field names for the detail object.
Any ideas? I’m stuck on this.