diff --git a/src/config.ts b/src/config.ts index d0c4dda..4cdc91e 100644 --- a/src/config.ts +++ b/src/config.ts @@ -39,6 +39,8 @@ export const FIELDS = { CALL_DURATION: 'call_duration_seconds', CALL_SUMMARY: 'call_summary', CONTACT_NOTES: 'contact_notes', + /** Dual-channel WAV of the call, written when it ends. */ + CALL_RECORDING: 'call_recording_url', } as const /** diff --git a/src/pages/CallMonitor.tsx b/src/pages/CallMonitor.tsx index 28942d3..636fa94 100644 --- a/src/pages/CallMonitor.tsx +++ b/src/pages/CallMonitor.tsx @@ -169,6 +169,7 @@ function DetailDrawer({ row, onClose }: { row: LeadRow; onClose: () => void }) { const summary = str(row[FIELDS.CALL_SUMMARY]) const notes = str(row[FIELDS.CONTACT_NOTES]) const transferred = str(row[FIELDS.CALL_END_REASON]) === END_REASON_HANDOVER + const recording = str(row[FIELDS.CALL_RECORDING]) return (
@@ -205,6 +206,25 @@ function DetailDrawer({ row, onClose }: { row: LeadRow; onClose: () => void }) {
)} + {/* The recording sits ABOVE the summary on purpose: the summary is a + claim about the conversation, and this is the conversation. On a demo + about whether the AI captured things fairly, the evidence should not + be below the fold. */} +
+

Recording

+ {recording ? ( + // preload="none": a WAV of a whole call, and the drawer opens on + // every row click. Fetch it when someone actually presses play. +
+