Diagnose recording storage and processing
Use this procedure when a test call has missing recording outputs, remains in processing, fails playback, or is retained longer than expected.
Availability: You need access to the affected app/team configuration and relevant recording-job logs. Bucket inspection requires separately authorized storage access. Do not share real transcripts, keypad values, credentials or unrelated call content when reporting a failure.
Trace the recording stages
In words: the published selection and call-frequency check determine whether recording is requested. The available data and protection rules determine what can be retained. Upload/processing must succeed before objects can be inspected; playback and expiry have their own checks.
1. Confirm the published selection
Record the release, app, team, conversation and time. Compare the published app settings with the intended recording selection. A saved draft is not sufficient.
For configuration integrations, inspect the effective combination of recordingOutputs and the compatibility field recordingEnabled. A nonempty valid explicit list wins. An empty or absent list with recordingEnabled: true resolves to all recording outputs; clearing only the list is not a reliable API-level way to disable recording. The UI's clear-selection action sets both fields consistently.
2. Check whether this call was selected
With frequency 1, every eligible call is selected. For values above 1, the SIP runtime increments an app-scoped Redis counter and selects calls when the counter is divisible by the frequency. This is an app-level counter, not a percentage guarantee or a separate counter for every phone number.
Inspect recording_frequency_check for the app and call. If the counter check fails, the runtime logs RecordingFrequencyCheckError and allows recording rather than treating the error as a skip. Selection still does not prove successful retention.
3. Match outputs to available data
| Observation | Check next |
|---|---|
| Transcript-only selection has no audio player | Expected; verify the selected transcript object separately |
| A selected turn transcript is absent | Check whether the job had any segment activities, whether that transcript output was selected, and whether processing succeeded |
A turn transcript exists with empty items | Do not assume corruption from emptiness alone; filtering can leave an empty document |
| A selected audio output is absent | Check that the relevant source stage/turn audio existed and was eligible for retention |
| Protected intervals are missing from retained output | Check the runtime storage-protection policy separately from app selection and PII log display |
Use the recording output reference to interpret common JSON fields and object references. Integration-specific metadata is outside that shared reference. Do not reconstruct object keys from an assumed folder pattern or treat a declared JSON reference as proof that the object exists.
4. Check destination, upload and processing
Confirm the team's current bucket, region and assumed-role configuration with the storage administrator. Inspect the upload result and any subsequent recording job before repeatedly changing app selections. Some outputs need post-call processing; a requested artefact is not a completed artefact.
A recent destination change is especially relevant: earlier objects are not automatically moved, while normal playback/deletion looks in the current team bucket. Coordinate recovery with the operator who owns the previous destination rather than deleting or recreating data.
5. Verify retention independently
Inspect the effective bucket lifecycle and the delphi-recordings-ttl rule described in Team recording storage. Check the enabled state, recordings/ prefix and expiration value. A successful Team settings save can coexist with a failed lifecycle update.
After correcting configuration, repeat a controlled call and verify the expected new objects, processing result and playback where applicable. Record the version, selected outputs, frequency decision, job outcome and destination identity. Do not claim that a corrected setting migrated or deleted earlier recordings.