Repository navigation
Emit a recording-set dialog for multi-recording SignalWire calls - #17
Merged
Merged
Conversation
SignalWire's poller can return more than one Recording object for a single call; the builder already emitted one "recording" dialog per recording but with no linkage between them. Per draft-ietf-vcon-vcon-core-04 Sec. 4.3.1.2/4.3.6/4.3.7, group these under a "recording-set" dialog: its recordings array indexes the member recording dialogs, and its own start/duration/parties describe the call as a whole; each recording dialog gets a recording_set back-reference. Single-recording calls are unchanged (no set dialog). The installed vcon-lib (pypi vcon 0.9.6) predates the "recording-set" type, so it's added to Dialog.VALID_TYPES locally; recordings/ recording_set pass through vcon-lib's default (non-strict) property handling unfiltered. Vendors the WG JSON Schema into tests/schema/ and adds jsonschema as a dev dependency so the new dialog shape (and the unchanged single- segment shape) can be validated directly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Emits a
recording-setdialog for SignalWire calls with more than one recording (draft-ietf-vcon-vcon-core-04 §4.3.1.2, 4.3.6, 4.3.7).SignalWire is the one adapter here that already puts several recordings of a call into one vCon. They were flat sibling dialogs with nothing linking them.
Changes
recording-setdialog is appended after the segments, so existing indices used by attachments and analysis do not move. It carriesrecordings(the segment indices), both call parties, the earliest segmentstart, and a whole-calldurationonly when every segment has a start and a duration.recording_setback-index.recording-setis added to the vcon library'sDialog.VALID_TYPESat import, since the current library release rejects it.tests/schema/;jsonschemaadded to the dev extra.Other platforms
Twilio, Telnyx, Bandwidth, Asterisk and FreeSWITCH do produce segmented recordings, but each arrives as a separate webhook and becomes its own vCon. A recording-set there first needs correlation across webhook deliveries.
Found, not fixed
With
download_recordings=False, a SignalWire dialog has aurlbut nocontent_hash, which the WG schema rejects. The new schema tests configure a publisher to avoid it.Tests
677 passed (baseline 665); black and ruff clean.
🤖 Generated with Claude Code