Stuck on mapping CSAT survey results back to the actual conversation objects in Genesys Cloud. We’re building a custom dashboard for our QA team and need to show the CSAT score alongside the transcript for each interaction.
The issue is the Quality API doesn’t seem to expose the CSAT score directly in the evaluation list, and the Analytics API responses are pretty opaque when it comes to joining data.
Here’s what I’ve tried so far:
-
Quality Evaluations Endpoint: Called
GET /api/v2/quality/evaluationswithexpand=score,survey. The response returns the evaluation details, including asurveyIdif one exists, but the actual CSAT score (1-5) isn’t in the payload. It just gives me the survey instance ID. -
Survey Responses Endpoint: Tried fetching the survey details using
GET /api/v2/surveys/responses/{surveyId}. This works and returns the raw answers. However, the response doesn’t include theconversationIdorinteractionIdthat I can use to join back to the conversation transcript via the Conversations API. It’s just a bag of answers with a timestamp. -
Analytics API: Looked at
GET /api/v2/analytics/conversations/queries. I can build a query to pull interactions with a specificsurveyScore, but the response only gives me aggregated metrics or a list of interaction IDs without the actual survey text or detailed breakdown. Plus, filtering by specific survey questions seems impossible here.
Is there a documented way to get the conversationId inside the survey response payload? Or is the intended pattern to fetch all evaluations, then for each evaluation with a surveyId, fetch the survey response, and then try to match timestamps? That seems incredibly inefficient and prone to race conditions.
Here’s a sample of the survey response I’m getting (sanitized):
{
"id": "survey-123",
"surveyId": "my-csat-survey",
"responses": [
{
"questionId": "q1",
"value": "5",
"type": "rating"
}
],
"timestamp": "2023-10-27T15:30:00Z"
}
No conversation ID in sight. Am I missing an expand parameter or a different endpoint entirely? We’re using the Python SDK, so if there’s a helper method I’m overlooking, that would be great too.