feat(recording): Telnyx recording parity#106
Merged
Merged
Conversation
243ea4f to
e54d5c1
Compare
3 tasks
nicolotognoni
added a commit
that referenced
this pull request
May 25, 2026
GitHub Actions does not pass repository secrets (`CLAUDE_CODE_OAUTH_TOKEN`) or emit OIDC tokens for `pull_request` workflows triggered by forks. The `anthropics/claude-code-action@v1` action consequently fails with "Could not fetch an OIDC token" every time an external contributor opens a PR, leaving a spurious red check on the rollup. Gate the job on `github.event.pull_request.head.repo.fork == false` so the workflow is skipped (not failed) for fork PRs. Maintainers can still trigger a code review manually by mentioning @claude in a comment — that path goes through `claude.yml` (`workflow_dispatch` / `issue_comment` triggers) which runs in the upstream repo's security context with access to secrets. No behaviour change for PRs opened from branches in the upstream repo. Refs PR #106 (Telnyx recording parity by external contributor) which surfaced the noise.
Bring Telnyx call recording to feature parity with Twilio across the Python and TypeScript SDKs. Telnyx Call Control already supports recording via the and REST endpoints. Both Python and TypeScript stream bridges already POST to these endpoints when is passed. This PR closes the remaining gaps: - **Python server**: add a webhook handler that logs the recording URL (mirrors the Twilio route and the existing TS handler). Tries → , mp3 then wav. - **Docs**: remove the "Recording is Twilio-only" claim from all three READMEs (root, python/, typescript/). - **TypeScript inline docs**: update the comment to reflect that both Twilio and Telnyx are supported. - **Tests**: add unit tests for Telnyx bridge recording (, ). Files changed: - libraries/python/getpatter/server.py - libraries/python/README.md - libraries/python/tests/unit/test_telnyx_bridge_unit.py - libraries/typescript/README.md - libraries/typescript/src/stream-handler.ts - README.md No Twilio code paths were modified. No new dependencies were added (Telnyx recording is pure httpx, already a base dependency).
Maintainer follow-up on Abhishek's Telnyx recording parity PR (#106): - Resolved README rebase conflict against post-0.6.2 main. Aligned all three READMEs (root, libraries/python, libraries/typescript) on the same copy ("Recording parity is supported via Telnyx Call Control; consult the Telnyx portal for configuration details.") that #103 introduced on the root README. - Added CHANGELOG.md entries under ## Unreleased / ### Added and ### Changed (invariant 0 of documentation-best-practices.md). - Added 4 unit tests in tests/unit/test_server_unit.py covering the new call.recording.saved webhook handler: * mp3 URL preferred over wav * wav fallback when mp3 missing * public_recording_urls fallback when recording_urls is empty * empty payload still logs call_control_id, returns 200 The contributor's tests covered the bridge (which was already implemented pre-PR); this commit covers the actually new code path. All tests green: pytest tests/unit/test_server_unit.py ::TestTelnyxRecordingSavedWebhook → 4 passed; existing TestTelnyxRecording bridge tests → 2 passed.
e54d5c1 to
3d95577
Compare
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.
This PR brings Telnyx call recording to feature parity with Twilio across the Python and TypeScript SDKs.
Background
Telnyx Call Control already supports recording via the actions/record_start and actions/record_stop REST endpoints. Both Python and TypeScript stream bridges already POST to these endpoints when recording=True is passed. This PR closes the remaining feature gaps.
What Changed
Python — libraries/python/getpatter/server.py
Python tests — libraries/python/tests/unit/test_telnyx_bridge_unit.py
Documentation — all READMEs
TypeScript — libraries/typescript/src/stream-handler.ts
Files Changed
What Was NOT Changed
Usage
When a call is answered, telnyx_stream_bridge automatically POSTs to Telnyx actions/record_start. When the stream ends (or the call hangs up), it POSTs to actions/record_stop. The webhook handler logs the recording URL when Telnyx emits call.recording.saved.
Edge Cases