Overview
The CopilotVoiceTranscripts block is a companion to the Copilot Chat & Voice block. It renders a structured, scrollable transcript log of voice interactions between the user and the AI assistant. Each transcript entry shows the speaker (User or Assistant), the recognized or generated text, and an optional timestamp. The block can be placed on the same page as the Copilot block, on a separate summary page, or in an audit panel accessible to supervisors.
Note: The Copilot Voice Transcripts block reads from the transcript state of a sibling Copilot block on the same page. Voice mode must be enabled on the Copilot block, and the user must grant microphone permission. Text-only Copilot interactions do not generate transcripts visible in this block.
Properties Reference
| Property | Type | Default | Description |
| copilotRef | string (block ID) | — | The ID of the Copilot block whose voice transcripts should be displayed. Select from the block ID picker in the inspector. The Copilot block must be on the same page. |
| showTimestamps | boolean | true | Show the time each utterance was recognized or generated. Timestamps use the browser's local time formatted as HH:MM:SS. |
| showSpeakerLabels | boolean | true | Show "User" and "Assistant" labels before each transcript entry. Disable to show a more chat-bubble-like layout with visual differentiation only (alignment and color). |
| maxEntries | number | — | Maximum number of transcript entries to display. When unset, all entries from the session are shown. When set, only the most recent N entries are visible (older entries are hidden but remain accessible via export). |
| searchable | boolean | false | Show a search bar above the transcript list that filters visible entries by text match. Matching text is highlighted in the results. |
| downloadable | boolean | false | Show a Download button that exports the full transcript as a .txt file with timestamps and speaker labels. Useful for compliance exports and post-session review. |
| textSize | enum: sm | md | lg | md | Base font size for transcript text. Use sm for dense audit logs; lg for accessibility or kiosk-style displays. |
| autoScroll | boolean | true | Automatically scroll to the latest entry when a new transcript item is added. Pauses when the user manually scrolls up; resumes when they scroll back to the bottom. |
| emptyStateMessage | string | "No transcripts yet" | Message displayed when no voice interactions have occurred yet in the session. |
Binding Expressions
The Copilot Voice Transcripts block exposes its transcript data as bindable state. Use these expressions in other blocks on the same page:
| Expression | Type | Description |
| {{ transcriptBlockId.latest.text }} | string | The text of the most recently received transcript entry (User or Assistant). Useful for binding to a display block that shows the last spoken phrase. |
| {{ transcriptBlockId.latest.speaker }} | string | "user" or "assistant" — the speaker of the most recent entry. |
| {{ transcriptBlockId.all }} | array | The full transcript history as an array of { id, speaker, text, timestamp } objects. Bind to a Data Table or Repeatable for a custom transcript rendering. |
| {{ transcriptBlockId.count }} | number | Total number of transcript entries in the session. |
| {{ transcriptBlockId.isRecording }} | boolean | true while the Copilot's speech recognition is actively capturing audio. |
Setting Up a Voice Audit Panel
Add a Copilot block with voice mode: Ensure a Copilot block is on the page (or in a global layout) with Voice Mode = enabled. Note its block ID (e.g.
copilot1).Add the CopilotVoiceTranscripts block: Drag CopilotVoiceTranscripts onto the page. In the Content inspector, set Copilot Ref to
copilot1(the Copilot block's ID).Configure display options: Enable Show Timestamps = true, Show Speaker Labels = true, Searchable = true. Set Text Size = md. Enable Downloadable = true for the compliance export button.
Restrict visibility (optional): If the transcript is for supervisor review only, add a Visibility condition:
{{ currentUser.role === "supervisor" }}. Regular agents see the Copilot block but not the transcript panel.
Examples
Example: Call center audit log
Place the CopilotVoiceTranscripts block in a supervisory view alongside a Data Table of active calls. Bind a separate Typography block to {{ transcripts.latest.text }} to show the real-time last utterance. Set Max Entries = 200 to cap memory usage for long calls, and enable Downloadable = true for post-call QA review.
Example: Voice command history panel
Show only the User-side utterances (voice commands) in a compact panel. Bind a Repeatable to {{ transcripts.all.filter(e => e.speaker === "user") }} and render each item as a Tag block with the command text. This gives users a visual confirmation of the commands the system recognized during their session.
Frequently Asked Questions
Does the transcript persist after the user navigates to a different page?
Transcript data is stored in the Copilot block's session state, which is scoped to the browser session and the page the Copilot block lives on. If the Copilot block is placed in a global layout (shared across pages), the transcript persists across page navigations. If the Copilot block is page-scoped, navigating away and back resets the transcript. To persist transcripts across sessions, wire the onNewEntry event from the Copilot block to an API action that saves each entry to your backend.
Can multiple CopilotVoiceTranscripts blocks reference the same Copilot block?
Yes. Multiple transcript blocks can reference the same Copilot block's ID. They all read from the same transcript state, so they stay in sync. This is useful for displaying a compact "last utterance" widget and a full scrolling log simultaneously in different parts of a layout.
Does the Download button produce a structured format I can parse?
The default download produces a plain .txt file with one line per entry formatted as [HH:MM:SS] Speaker: text. For a machine-readable export, use a Button block with an Export as JSON action bound to {{ transcripts.all }} — the full array of { id, speaker, text, timestamp } objects — and export it via the Export File action targeting a JSON format.
Related Pages
| Page | Relationship |
| Copilot Chat & Voice | The Copilot block that generates the voice transcript data this block displays |
| Copilot Overview | Architecture overview of the AI Copilot system and its components |
| Meeting | Full meeting transcription for video call contexts |