Skip to content

feat(telnyx): accept TeXML recordingStatusCallback form posts - #8

Merged
howethomas merged 2 commits into
mainfrom
feat/texml-recording-webhook
Sep 17, 2026
Merged

howethomas merged 2 commits into
mainfrom
feat/texml-recording-webhook

Conversation

@howethomas

Copy link
Copy Markdown
Contributor

Summary

Recovers a commit from 2026-09-13 that was written, tested and then left on a local branch: it never reached a PR and main has no equivalent. Cherry-picked onto current main, where it applies cleanly.

TeXML Dial recordings arrive form-encoded (RecordingSid, CallSessionId, From, To, Direction, RecordingChannels, and a pre-signed RecordingUrl), which the existing Call Control JSON route cannot parse. A new /webhook/texml-recording route reshapes that payload into the call.recording.saved shape and reuses the existing processing path, now factored into a shared coroutine. Party identity is already on this payload, so this path skips the recordings-API lookup the Call Control path needs.

This is the capture route the TeXML side of the trunk actually uses, so without it those recordings never become vCons.

Test plan

  • Full suite green on the branch: 485 passed
  • New coverage in tests/adapters/telnyx/test_texml_recording.py (78 lines) over the form-post reshaping and the shared processing path
  • Confirm against a live TeXML recording callback before relying on it in the hosted rig

🤖 Generated with Claude Code

howethomas and others added 2 commits September 17, 2026 12:38
TeXML Dial recordings arrive form-encoded with RecordingSid, CallSessionId,
From, To, Direction, RecordingChannels and a pre-signed RecordingUrl. A
new /webhook/texml-recording route reshapes that into the Call Control
call.recording.saved payload and reuses the existing processing path,
which is now a shared coroutine. Party identity is present on this path,
so no recordings-API lookup is needed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The lint job has been red on main since 2026-09-15: webhook.py and the
step-0 spike script both landed unformatted, so black --check has failed
on every run since. Formats those two plus this branch's new test file.

Formatting only, no behaviour change. 485 tests pass, ruff already clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@howethomas
howethomas merged commit 79ea861 into main Sep 17, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant