That is great to hear thanks for confirming.
I am glad it worked for you. This is actually making me think of a few use cases from my side as well where this kind of queue and agent path extraction could be really useful.
Appreciate you coming back and confirming the result.
Original Message:
Sent: 04-22-2026 00:10
From: Dhanalakshmi Vasudevan
Subject: Conversation API - Translation Mapping help
Hi @Phaneendra Avatapalli,
Thanks for your help. That worked like a charm.
------------------------------
Dhanalakshmi Vasudevan
Original Message:
Sent: 04-21-2026 20:20
From: Phaneendra Avatapalli
Subject: Conversation API - Translation Mapping help
Hi Dhanalakshmi,
Thanks for sharing the sample payload that helped clarify the structure.
I tested the nested filter approach below, and it does return only the agents who have an interact segment, along with the queue IDs from those same interact segments. So hopefully this is closer to what you are looking for without needing to return the full JSON payload to the flow.
{
"translationMap": {
"agentIds": "$.participants[?(@.purpose == 'agent' && @.sessions[*].segments[?(@.segmentType == 'interact')])].userId",
"queueIds": "$.participants[?(@.purpose == 'agent' && @.sessions[*].segments[?(@.segmentType == 'interact')])].sessions[*].segments[?(@.segmentType == 'interact')].queueId"
},
"translationMapDefaults": {
"agentIds": "[]",
"queueIds": "[]"
},
"successTemplate": "{ \"agentIds\": ${agentIds}, \"queueIds\": ${queueIds} }"
}
This should hopefully help exclude agents who were only alerted, since it only returns participants that have an interact segment.
The only thing I would still suggest validating is whether the agentIds and queueIds stay aligned as expected in more complex scenarios such as transfers or multiple agent segments, but for the sample structure you shared this looks to be working in the right direction.
Hope this helps.
------------------------------
Phaneendra
Technical Solutions Consultant
Original Message:
Sent: 04-21-2026 19:40
From: Dhanalakshmi Vasudevan
Subject: Conversation API - Translation Mapping help
Hi @Phaneendra Avatapalli,
Thanks for your response. It would have been much easier if the agent name or id is present at segments level. But the agentId information is present at the participant level and selectedAgentId is present in the session level. Hence why I am looking for a translation mapping to get only the agent who interacted with the caller.
{
"participantId": "266c18f3-3be2-46e2-ad5e-1d75ca70e266",
"purpose": "agent",
"userId": "869773b6-cc86-4085-8441-6df8061dbdb1",
"sessions": [
{
"activeSkillIds": [
"8ccc424f-9ac4-403b-93c5-3b2605d498df"
],
"ani": "tel:+xxxxxxxxxxxx",
"direction": "inbound",
"dnis": "tel:+xxxxxxxxxxxx",
"edgeId": "6cbc5aed-8385-45c3-8c43-15a21f3a5bf7",
"eligibleAgentCounts": [
1
],
"mediaType": "voice",
"peerId": "e9173fd1-d4e8-3fe6-be3a-f81373dc922c",
"protocolCallId": "74dc6368-c712-4df9-80e5-a39c3fec40bf",
"provider": "Edge",
"remote": "Melbourne, Australia",
"requestedRoutings": [
"Standard"
],
"selectedAgentId": "869773b6-cc86-4085-8441-6df8061dbdb1",
"sessionDnis": "sip:66332ae85ff25e1bd0a26340+xxx3.orgspan.com@localhost",
"sessionId": "67126cc8-9311-3d4f-8bbc-14473411ef5c",
"usedRouting": "Standard",
"mediaEndpointStats": [
{
"codecs": [
"audio/opus"
],
"eventTime": "2026-04-17T05:56:34.121Z",
"maxLatencyMs": 28,
"minMos": 4.898954695945577,
"minRFactor": 93.18830108642578,
"receivedPackets": 367
},
{
"codecs": [
"audio/opus"
],
"discardedPackets": 4,
"eventTime": "2026-04-17T05:56:34.132Z",
"maxLatencyMs": 31,
"minMos": 4.826304526299577,
"minRFactor": 90.19194030761719,
"receivedPackets": 363
}
],
"metrics": [
{
"emitDate": "2026-04-17T05:56:26.764Z",
"name": "tAlert",
"value": 1823
},
{
"emitDate": "2026-04-17T05:56:26.764Z",
"name": "tAnswered",
"value": 14236
},
{
"emitDate": "2026-04-17T05:56:34.051Z",
"name": "tTalk",
"value": 7287
},
{
"emitDate": "2026-04-17T05:56:34.051Z",
"name": "tTalkComplete",
"value": 7287
},
{
"emitDate": "2026-04-17T06:28:02.686Z",
"name": "tAcw",
"value": 1888635
},
{
"emitDate": "2026-04-17T06:28:02.686Z",
"name": "tHandle",
"value": 1895922
}
],
"segments": [
{
"conference": false,
"queueId": "6ad474f1-1bab-48a3-aadd-8f0552c9f08b",
"requestedRoutingSkillIds": [
"8ccc424f-9ac4-403b-93c5-3b2605d498df"
],
"segmentEnd": "2026-04-17T05:56:26.764Z",
"segmentStart": "2026-04-17T05:56:24.941Z",
"segmentType": "alert"
},
{
"conference": false,
"disconnectType": "client",
"queueId": "6ad474f1-1bab-48a3-aadd-8f0552c9f08b",
"requestedRoutingSkillIds": [
"8ccc424f-9ac4-403b-93c5-3b2605d498df"
],
"segmentEnd": "2026-04-17T05:56:34.051Z",
"segmentStart": "2026-04-17T05:56:26.764Z",
"segmentType": "interact"
},
{
"conference": false,
"disconnectType": "client",
"queueId": "6ad474f1-1bab-48a3-aadd-8f0552c9f08b",
"requestedRoutingSkillIds": [
"8ccc424f-9ac4-403b-93c5-3b2605d498df"
],
"segmentEnd": "2026-04-17T06:28:02.686Z",
"segmentStart": "2026-04-17T05:56:34.051Z",
"segmentType": "wrapup",
"wrapUpCode": "26e3381f-0c74-4bb4-a17e-beb19351c7d6"
}
]
}
]
}
------------------------------
Dhanalakshmi Vasudevan
Original Message:
Sent: 04-21-2026 05:10
From: Phaneendra Avatapalli
Subject: Conversation API - Translation Mapping help
Hi Dhanalakshmi,
You could try filtering both values from the same interact segment path, for example:
{
"translationMap": {
"queueIds": "$.participants[?(@.purpose == 'agent')].sessions[*].segments[?(@.segmentType == 'interact')].queueId",
"agentNames": "$.participants[?(@.purpose == 'agent' && @.sessions[*].segments[?(@.segmentType == 'interact')])].name"
},
"translationMapDefaults": {
"queueIds": "[]",
"agentNames": "[]"
},
"successTemplate": "{ \"queueIds\": ${queueIds}, \"agentNames\": ${agentNames} }"
}
A couple of notes:
- Your current queueIds JSONPath looks to be missing a closing bracket/parenthesis around the interact filter.
- Filtering on segmentType == 'interact' should help exclude agents who were only alerted and never actually handled the call.
- I would still be a little cautious in transfer/bounce scenarios, because the conversation details payload is split across participants, sessions, and segments, so keeping the queue and agent arrays perfectly aligned may still be tricky.
- A related thread that may help with flattening nested values in a data action response:
https://community.genesys.com/discussion/nested-array-translation-map-issue-conversation-details
And this thread also helps explain why more complex call paths can be harder to map cleanly:
https://community.genesys.com/discussion/identifying-calls-and-connecting-segments
Hope this helps. Following this thread as well, as it would be great to see if anyone has been able to achieve this reliably.
------------------------------
Phaneendra
Technical Solutions Consultant
Original Message:
Sent: 04-21-2026 03:06
From: Dhanalakshmi Vasudevan
Subject: Conversation API - Translation Mapping help
Hi,
I am looking to create a data action which could return an array of queues it traversed through and the agents who answered the call in the respective queues. The GET /api/v2/analytics/conversations/{conversationId}/details API returns this information. But I am unable to workout the translation map that could return the above details. The response should not include the details of agents that might have been alerted but not answered the call.
I have queried the queueIds using this translation mapping.
"queueIds": "$.participants[?(@.purpose == 'agent')].sessions[*].segments[?(@.segmentType == 'interact'].queueId"
But I am unable to obtain the details of agents who interacted on the call.
Also, I do not want to go down the path of returning the whole json response to a callflow and parsing it there.
Thanks in advance for your responses.
#DataActions
#PlatformAPI
------------------------------
Dhanalakshmi Vasudevan
------------------------------