I am trying to confirm behavior of both the conversations details API and its segmentFilters.
Let's say I have three queues - Q1, Q2 and Q3. A call comes in and is placed into Q1 and then is transferred to Q2.
In Conversations Details API, for this call I assume I will have two participants whose purpose = acd, yes? I believe each queue is listed as participant, yes?
Second, if I apply a segment filter to my query and ask for calls where queue=Q1, I believe that I will get match this call, but one of its segments is matched to Q1, yes?
"A call comes in and is placed into Q1 and then is transferred to Q2."
I assume that you are referring to a transfer from Q1 to Q2, triggering the transfer to Q2 from an Architect In-Queue Call flow (executed while in Q1), using a Transfer to ACD action.
Just making this note as calls can't be transferred from a Queue to another one via API.
"In Conversations Details API, for this call I assume I will have two participants whose purpose = acd, yes? I believe each queue is listed as participant, yes?"
That's correct, you will have 2 different participants with purpose = acd.
"Second, if I apply a segment filter to my query and ask for calls where queue=Q1, I believe that I will get match this call, but one of its segments is matched to Q1, yes?"
Yes, you will match the call.
You could have two predicates in segmentFilters (using AND condition): (purpose = acd) and (queueId = xxxx).
It means the filter will look for a participant object with purpose = acd, and with a queueId matching the provided value (under the segments of this same participant).
To add one more piece of info on the 2 predicates in segmentFilters.
So, let's say that call comes in and is placed in Q1. Call is transferred to Q2 at one stage. And the call is then delivered to an agent (note: there is also a queueId attribute under the segments of the agent's participant).
If I build my segmentFilters to have: (purpose = agent) and (queueId = id of Q1)
No call matched.
Now, if I build my segmentFilters to have: (purpose = agent) and (queueId = id of Q2)
Call is matched (as it was delivered via Q2 to the agent, and the queueId under the segments of the agent's participant corresponds to Q2).
Jerome - thanks for the fast response! Very helpful.
Your assumption is correct. I am not looking to initiate the transfer via the API. Rather, just trying to understand how the conversations details API works, as well as its filters.
And thanks for the second post - this helps me in understanding the data model more. I will use (purpose = acd) and (queueId = xxxx), as I am looking for calls matched to a queue, independent of which agent was in which queue.