Skip to main content

Voice consents

The Voice consents screen lets you record and revoke the consent of each participant of a realtime voice session, and read the session, its turns and its DLP filtered transcripts. Portal path: /multimodal/consents. Developers and agents record consents; auditors and security officers read the transcripts.

What the screen shows​

The page title is Realtime consents. The Realtime session section holds a Session id field and the Apply button: paste the id returned when the session was created. Four tabs then appear:

  • Consents: the table with Participant, Purpose, Recording allowed, Transcription allowed, Retention (days), Method, Captured by, Captured at, Revoked at. A click on a row opens a drawer with the consent.
  • Session: the JSON record of the session.
  • Turns: Turn, Participant, Agent, Status, Latency (ms), Trace id, Created.
  • Transcripts: Turn, Participant, Text, Created. Only the text filtered by the DLP is stored.

The Record consent form has Purpose (required), Retention (days) (required, 30, from 1 to 3650), Participant (empty: the participant of the session), Recording allowed (unchecked), Transcription allowed (checked) and Method (verbal, click, written, api).

Actions​

Button or actionWhat it doesAPI callRoles
Apply then ConsentsLists the consents of the sessionGET /v1/realtime/sessions/{session_id}/consentsany tenant user
Record consent > CreateRecords the consent, captured by youPOST /v1/realtime/sessions/{session_id}/consentstenant_admin, developer, agent
Revoke (row menu, consent not revoked)Shows the impact confirmation, then revokes the consent; it takes effect on the next audio eventPOST /v1/realtime/sessions/{session_id}/consents/{consent_id}/revoketenant_admin, developer, agent
Session tabReads the sessionGET /v1/realtime/sessions/{session_id}any tenant user
Turns tabLists the turnsGET /v1/realtime/sessions/{session_id}/turnsany tenant user
Transcripts tabLists the stored transcriptsGET /v1/realtime/sessions/{session_id}/transcriptstenant_admin, developer, auditor, security_officer

Roles​

Record consent and Revoke are hidden for users who lack one of the roles of ROLES.consentWriters in portal/src/lib/kit.ts (tenant_admin, developer, agent), the same list the Control Plane checks in services/control-plane/src/eai/domains/realtime/__init__.py. The transcripts are read by tenant_admin, developer, auditor and security_officer. Recording a consent goes through the policy decision realtime.consent.record; recording and revocation are audited.

Typical tasks​

  1. Open the session. Consents belong to one session. Paste the Session id, then Apply.

    Expected result: the four tabs and the Consents table.

    If it fails: not_found with realtime_session means the id is wrong.

  2. Record the consent. Without it, transcription and recording are refused outside dev and test. Click Record consent, fill Purpose, Retention (days), check Transcription allowed, choose the Method, then Create.

    Expected result: the toast "Created" and the row with Captured by set to you.

    If it fails: session_ended means the session is over; open a new one.

  1. Revoke it. The participant may withdraw at any time. Open the row menu, choose Revoke and confirm.

    Expected result: Revoked at is filled; the next audio event is no longer transcribed.

    If it fails: not_found with realtime_consent means the consent was already revoked.

Audit what was said​

  1. Read the transcripts. Open Transcripts.

    Expected result: the DLP filtered text of each turn.

    If it fails: forbidden means your role cannot read transcripts; an empty list means no consent allowed the transcription.

Troubleshooting​

SymptomCauseFix
forbidden (403) with required_rolesYour role is not allowed for this actionSee the Roles section
parameter_invalid (422) with methodUnknown consent methodUse verbal, click, written or api
session_ended (409) on CreateThe session is endedRecord the consent on an open session
not_found (404) with realtime_sessionWrong session idCopy the id shown in Voice live
not_found (404) with realtime_consentThe consent does not exist or is already revokedRefresh the table
consent_required (403) in the voice sessionNo active consent with transcription or recording allowedRecord a consent here