Skip to main content
Version: 0.9.14

Conversations

/conversations is the primary tool for debugging and analysing calls processed by Delphi. It surfaces a chronological log of everything that happened during a call: dialogue turns, AI-model invocations with cost tracking, telephony events, errors, and performance metrics.

The page is read-only. Data is generated by TelPhi and the voice pipeline during live calls and persisted to Postgres. For operator-side debugging (SIP ladder, trace IDs), pair this page with Monitoring in SigNoz.

Page layout

PanelWidthContent
Left~33%App selector + conversations list.
Right~67%Detailed log table for the selected conversation.

Left panel

  • App selector — filter conversations by app. Supports deep linking via ?appId={appId}.
  • Conversations list — sorted by start time (newest first).
ColumnDescription
IDConversation identifier.
Start Timeyyyy-MM-dd HH:mm:ss.
Recording StatusRecording indicator (see below).

Click a row to load its logs.

Right panel

The log detail table. Default sort is timestamp ascending (chronological order).

Recording and transcript retention

Transcript retention is controlled by the app Recording toggle, not by a separate transcript setting. There is no independent “save transcripts only” switch today — turning recording on is what persists full turn-by-turn text for a call.

RecordingWhat is retained
Off (Rec Off)Conversation rows and timeline metadata still appear for debugging, but full transcript text is not retained. Turn text in TelWeb follows the platform PII policy (redacted by default).
On (Rec On)Audio and full transcript text are written to the team's S3 recording bucket regardless of ENABLE_PII_LOGGING. The Postgres timeline may still show redacted placeholders when PII logging is off, but the recording sidecar holds the complete transcript.

Recording requires both the platform operator to enable RECORDING_ENABLED on Voice hosts and the team to configure an S3 bucket on Settings → Team. Each app opts in via Flow Designer → Flow Settings → App settings (or the Rec On / Rec Off chip on the app overview). See Call recording (team).

Compliance: disable retention without relying on PII redaction alone

To ensure call transcript text is not saved, leave Recording off on the app. ENABLE_PII_LOGGING=false scrubs what appears in Postgres and SigNoz but does not stop full transcript persistence when recording is enabled.

When recording is enabled on the app, conversations show a recording status:

StatusIndicatorDescription
AVAILABLEPlay buttonRecording ready. Click to play back.
PROCESSINGSpinnerUpload to S3 pending.

Playback is accessible from both the conversation list and the detail view. Recordings (and their embedded transcripts) expire under the team's S3 lifecycle policy (default 180 days when configured through TelWeb).

Call transfers

When an AI agent initiates a transfer (via the transfer() tool), the event is logged in the conversation timeline:

  • Transfer target — destination number / endpoint.
  • Transfer status — success / failure.
  • Transfer metadata — additional context from the transfer.

Transfer events appear inline with other log types.

Token usage

Model Usage entries include detailed token consumption:

FieldDescription
Input TokensTokens sent to the model.
Output TokensTokens received from the model.
Model NameSpecific model used.

Token counts appear in the summary (Input: 150 → Output: 80) and in the detail dialog. They aggregate into the Dashboard token widgets.

Log types

Every log row has a type that determines its icon, colour, and the data it carries.

TypeIconCapturesKey fields
ConversationChat bubbleIndividual dialogue turns.Actor (User / AI), Event Type, Duration, Interrupted, Interruption Reason, Text.
Model UsageRobotEach AI-model API call with cost.Provider, Model, Service Type (STT / LLM / TTS / Realtime), Estimated Cost, Tokens, Latency, Duration, Audio Size, Characters, Region, Quality Tier.
SystemGearInternal platform events.Component, Action, Status.
PerformanceLightningTiming for internal operations.Component, Operation, Duration (ms).
AudioMusic noteAudio processing events.Direction, Format, Operation, Duration.
ErrorError symbolErrors during the conversation.Component, Error Message.
TelephonyPhoneSIP / call-level events.Event Type (INVITE, BYE, …), Channel Type, Channel ID, Caller, Called.
SandboxIslandSandbox execution events.
VMWrenchJavaScript VM (tool) execution.Operation, Function Name, Function Count, Execution Time.

Log detail dialog

Clicking the info icon opens a structured view of all data for that log:

  • Model Usage — estimated cost, token counts, latency, provider, model.
  • Conversation — actor, transcript, duration, interruption details.
  • Telephony — caller / called numbers, event type, channel info.
  • All types — raw JSON section at the bottom.

Cost calculation

The platform automatically estimates costs for Model Usage logs based on provider and model:

Pricing methodUsed forHow it works
Token-basedLLM callsCost per input token + cost per output token.
Time-basedRealtime, STTCost per second of audio.
Character-basedTTSCost per character converted to speech.

OpenAI and Azure pricing are supported. Costs are estimates based on standard pricing.

Log summary format

Log typeSummary
Model UsageProvider/Model — tokens — latency
ConversationActor: EventType (duration) [INTERRUPTED]
SystemComponent.Action: Status
PerformanceComponent.Operation: duration ms
AudioDirection Format Operation duration
ErrorComponent: Message
TelephonyEvent: ChannelType ChannelId (caller -> called)
VMOperation FunctionName (functionCount) executionTime

Filtering and navigation

  • App filter — selecting an app resets the conversation selection.
  • Deep linking?appId={appId} pre-selects an app via URL.
  • Search — built-in search in the log detail table.
  • Server-side filtering — supported via the filter model.
  • Server-side sorting — default timestamp ascending; configurable.
  • Infinite scroll — logs load in pages of 50.
  • Pagination — the conversations list supports 10 / 25 / 50 rows per page.

Workflows

Investigate a call

  1. Go to /conversations.
  2. Select the app.
  3. Pick the conversation by start time.
  4. Review logs chronologically in the right panel.
  5. Click the info icon on any log for details.

Check AI costs

  1. Select a conversation.
  2. Look at the Cost column on Model Usage entries.
  3. Click the info icon for token counts, latency, and provider details.

Debug an error

  1. Select a conversation.
  2. Filter / scroll to the Error entries (red chip).
  3. Click the info icon for component + full error message.
  4. Cross-reference with Telephony and System logs at the same timestamp.
TabShows
DebugLogs, span tree, SIP ladder, DTMF evidence, and SIP ladder text export for the call's trace, sourced from SigNoz.
TimelineChannel events ordered by ChannelMessage.timestamp.
Flow runPer-node execution of the Flow Builder graph with inputs / outputs.
QAQA scoring results (gated by qaScoring; enqueued on flow finalisation / hangup).
TokenToken usage by provider.
ActionBrowser action invocations and results.

The Debug tab is the bridge between this page and the operator-side Monitoring in SigNoz workflow. It separates Logs, Spans, and SIP Ladder panes; use the SIP ladder export when support needs a plain-text bundle of the call signaling. For SIP calls, v0.9.13+ can show DTMF evidence from SIP INFO, RFC4733 negotiation/media, ARI, and in-band detection when those signals are present in telemetry.

When platform operators keep ENABLE_PII_LOGGING=false (the default), Timeline transcript text and caller numbers in the Postgres conversation record are redacted. SigNoz logs and traces are scrubbed too, except raw SIP ladder messages. That redaction is separate from retention: if the app has Recording on, full transcript text is still written to S3 with the recording artefact. See Recording and transcript retention and PII redaction.

See also