Skip to main content
Version: 0.9.17-patch1 — archived documentation

Recording and transcript storage

When an app selects one or more recording artefacts and its team has an S3 recording bucket configured, Delphi stores only those artefacts for playback and investigation. An empty selection is recording off. Choose Full call transcript alone to keep Delphi transcript JSON without audio.

The three JSON documents​

Each processed recording uses these three JSON documents:

The exact object-key or JSON example is preserved in the recording-contract edition for this historical release. Follow the returned object and audio references; do not infer an integration-specific identifier or optional suffix.

DocumentContents
call-transcript.jsonCall-level identity, timing, recording metadata, source stages, and the conversation snapshot.
transcript-stt-input.jsonCaller turns in chronological order, with references to matching STT input audio.
transcript-tts-output.jsonBot turns in chronological order, with references to matching TTS output audio.

transcript-full.json is no longer produced because it duplicated the combined contents of the STT and TTS turn documents. Recordings created by older Delphi versions can still contain that legacy fourth file.

All three documents are UTF-8 JSON with content type application/json, ISO 8601 UTC timestamps, and a top-level schemaVersion. Consumers should ignore unknown fields so compatible fields can be added without changing the schema version.

Complete recording layout​

The final output for a successfully processed call can contain:

The exact object-key or JSON example is preserved in the recording-contract edition for this historical release. Follow the returned object and audio references; do not infer an integration-specific identifier or optional suffix.

The STT and TTS sequence numbers are independent, zero-padded, and start at 0001. Follow the audio or s3Audio references in the JSON instead of inferring which files exist from the folder listing. Audio and turn artefacts are optional because their presence depends on the call, flow, recording configuration, and storage-protection state.

Audio formats​

  • recording-processed.mp3 and recording-raw.mp3 are call-level MP3 outputs.
  • Turn-level .raw files are headerless audio bytes, not WAV files. Decode them using the matching item's mediaFormat, for example raw/lpcm16_16, raw/alaw_8, or raw/mulaw_8.
  • A configured per-turn MP3 output is referenced with an mp3 key. WAV is not a persisted recording-output format.

call-transcript.json​

TelPhi writes this call-level document before asynchronous audio processing finishes. Its recording.recordingStatus can therefore be PROCESSING, and recording.recordingFile can still be null at upload time.

The exact object-key or JSON example is preserved in the recording-contract edition for this historical release. Follow the returned object and audio references; do not infer an integration-specific identifier or optional suffix.

The transcript, nodeHistory, actionsLog, finalContext, and systemContext values are conversation snapshots. The recording.stages array describes the available source tracks and their captured turn segments. A stage is pre-audioproc, post-audioproc, or outbound.

STT and TTS turn documents​

transcript-stt-input.json contains only caller (client) turns. transcript-tts-output.json contains only bot turns. They share this envelope and item format:

The exact object-key or JSON example is preserved in the recording-contract edition for this historical release. Follow the returned object and audio references; do not infer an integration-specific identifier or optional suffix.

Turn item fields​

FieldMeaning
turnIdProvider or pipeline turn identifier.
sideDisplay label: Client or Bot.
speakerStable value: client or bot.
timestampAbsolute turn start time, when available.
startMsTurn start relative to recorder initialisation.
endMsTurn end relative to recorder initialisation, or null.
durationMsCaptured or derived turn duration, or null.
textSTT result or the text supplied to TTS; null when unavailable or protected.
audioRelative turn-audio paths keyed by raw and, when generated, mp3.
s3AudioFull S3 object keys for the same audio.
mediaFormatRaw encoding and rate, such as raw/lpcm16_16.
providerSTT or TTS provider identifier, or null.
modelProvider model or deployment identifier, or null.
stageSource stage used for the segment.
nodeIdMatching flow node, or null.
storageRedactedtrue when storage was suppressed for this turn.
redactionReasonThe stored reason for a redacted turn.

Items remain in chronological order. Optional source metadata uses null; audio keys are omitted when that output was not generated.

Storage protection and retention​

  • The app recording-artefact multi-select controls whether audio and/or transcript JSON are retained. Leave the list empty to retain nothing. Select only transcript artefacts for transcript-only storage.
  • ENABLE_PII_LOGGING does not disable S3 transcript retention. It controls redaction in Postgres, SigNoz, and traces.
  • Team S3 lifecycle configuration determines how long the objects remain in the bucket.

See Conversations → Recording and transcript retention

Operator prerequisites​

  1. Platform call recording is enabled for the deployment.
  2. The team recording bucket, region, and role are configured under Settings → Team.
  3. The app recording-artefact list in Flow Settings includes the outputs that must be retained.

See also​