Merge pull request #2726 from pipecat-ai/mb/twilio-serializer-cleanup

Fixup for TwilioFrameSerializer
This commit is contained in:
Filipi da Silva Fuchter
2025-09-24 10:45:38 -03:00
committed by GitHub
2 changed files with 22 additions and 15 deletions

View File

@@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Added support to `TwilioFrameSerializer` for `region` and `edge` settings.
- Added support for using universal `LLMContext` with: - Added support for using universal `LLMContext` with:
- `LLMLogObserver` - `LLMLogObserver`

View File

@@ -76,19 +76,25 @@ class TwilioFrameSerializer(FrameSerializer):
edge: Twilio edge location (e.g., "sydney", "dublin"). Must be specified with region. edge: Twilio edge location (e.g., "sydney", "dublin"). Must be specified with region.
params: Configuration parameters. params: Configuration parameters.
""" """
if not call_sid or not account_sid or not auth_token: self._params = params or TwilioFrameSerializer.InputParams()
missing = []
if not call_sid:
missing.append("call_sid")
if not account_sid:
missing.append("account_sid")
if not auth_token:
missing.append("auth_token")
# Validate hangup-related parameters if auto_hang_up is enabled
if self._params.auto_hang_up:
# Validate required credentials
missing_credentials = []
if not call_sid:
missing_credentials.append("call_sid")
if not account_sid:
missing_credentials.append("account_sid")
if not auth_token:
missing_credentials.append("auth_token")
if missing_credentials:
raise ValueError( raise ValueError(
f"Cannot hang up Twilio call: missing required parameters: {', '.join(missing)}" f"auto_hang_up is enabled but missing required parameters: {', '.join(missing_credentials)}"
) )
# Validate region and edge are both provided if either is specified
if (region and not edge) or (edge and not region): if (region and not edge) or (edge and not region):
raise ValueError( raise ValueError(
"Both edge and region parameters are required if one is set. " "Both edge and region parameters are required if one is set. "
@@ -102,7 +108,6 @@ class TwilioFrameSerializer(FrameSerializer):
self._auth_token = auth_token self._auth_token = auth_token
self._region = region self._region = region
self._edge = edge self._edge = edge
self._params = params or TwilioFrameSerializer.InputParams()
self._twilio_sample_rate = self._params.twilio_sample_rate self._twilio_sample_rate = self._params.twilio_sample_rate
self._sample_rate = 0 # Pipeline input rate self._sample_rate = 0 # Pipeline input rate