Screen Recording Data Missing in Performance Views

Could someone clarify why the Screen Recording status appears as ‘Not Available’ in the Conversation Detail view for specific interactions?

The Architect flow triggers the recording action successfully, yet the Performance dashboard fails to reflect these sessions. This discrepancy affects our compliance reporting in the EU-West region.

We are utilizing the standard screen capture integration without custom modifications. The issue persists across multiple agent groups despite correct skill alignments.

If I remember correctly…

The screen recording blob doesn’t sync to the performance view immediately. It sits in the media store until the transcription pipeline finishes.

Check the JMeter logs for the media upload latency. You might be hitting the WebSocket connection limit before the metadata updates.

Make sure you verify the timestamp alignment between the JMeter load execution and the Genesys Cloud API response headers. In my recent testing with 500 concurrent threads on US1, I observed that screen recording metadata often fails to populate in the Performance view if the initial WebSocket handshake completes but the media chunk upload stalls due to rate limiting on the /api/v2/media endpoint.

The suggestion about WebSocket limits is correct, but the root cause is frequently a mismatch in how the recording session ID is passed in the HTTP header versus the body payload. When simulating high concurrency, ensure your JMeter HTTP Request sampler includes the X-Genesys-Recording-Id in the headers, not just the JSON body. If this is missing, the backend creates the recording blob but does not link it to the conversation object in the performance database.

Check your JMeter response codes for the upload step. A 202 Accepted does not mean the link is established. You need a 200 OK on the finalization call. If you see 429s during the upload phase, the metadata record is orphaned.

To fix this, add a JSR223 PostProcessor to extract the recordingId from the initial 201 Created response and inject it into the subsequent upload requests. Here is a sample Groovy snippet:

// Extract recording ID from previous sampler
def recordingId = prev.getResponseDataAsString()
def jsonSlurper = new groovy.json.JsonSlurper()
def responseJson = jsonSlurper.parseText(recordingId)
vars.put("recId", responseJson.recordingId)

Then reference ${recId} in your upload headers. This ensures the media store correctly associates the blob with the conversation timeline. Without this explicit linkage, the Performance dashboard will continue to show “Not Available” because the conversation object lacks the foreign key reference to the media asset.

  • WebSocket connection lifecycle management
  • HTTP header vs body payload consistency
  • JMeter JSR223 PostProcessor usage
  • Media store metadata linking
  • API rate limit handling for bulk uploads