From d5956764364cf8fc4933140f7b97cc23249ba113 Mon Sep 17 00:00:00 2001 From: Mark Backman Date: Thu, 11 Sep 2025 09:54:19 -0400 Subject: [PATCH] Add custom data handling for Twilio --- src/pipecat/runner/utils.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/pipecat/runner/utils.py b/src/pipecat/runner/utils.py index cfa32c19d..3f3b190cb 100644 --- a/src/pipecat/runner/utils.py +++ b/src/pipecat/runner/utils.py @@ -99,7 +99,11 @@ async def parse_telephony_websocket(websocket: WebSocket): tuple: (transport_type: str, call_data: dict) call_data contains provider-specific fields: - - Twilio: {"stream_id": str, "call_id": str, "from": str, "to": str} + - Twilio: { + "stream_id": str, + "call_id": str, + "body": dict + } - Telnyx: {"stream_id": str, "call_control_id": str, "outbound_encoding": str, "from": str, "to": str} - Plivo: {"stream_id": str, "call_id": str, "from": str, "to": str} - Exotel: {"stream_id": str, "call_id": str, "account_sid": str, "from": str, "to": str} @@ -107,14 +111,8 @@ async def parse_telephony_websocket(websocket: WebSocket): Example usage:: transport_type, call_data = await parse_telephony_websocket(websocket) - - # Access call information (works for all providers when available) - from_number = call_data.get("from", "") - to_number = call_data.get("to", "") - - # Access provider-specific fields - if transport_type == "telnyx": - outbound_encoding = call_data["outbound_encoding"] + if transport_type == "twilio": + user_id = call_data["body"]["user_id"] """ # Read first two messages start_data = websocket.iter_text() @@ -157,13 +155,13 @@ async def parse_telephony_websocket(websocket: WebSocket): # Extract provider-specific data if transport_type == "twilio": start_data = call_data_raw.get("start", {}) - custom_params = start_data.get("customParameters", {}) + body_data = start_data.get("customParameters", {}) call_data = { "stream_id": start_data.get("streamSid"), "call_id": start_data.get("callSid"), - "from": custom_params.get("from", ""), - "to": custom_params.get("to", ""), + # All custom parameters + "body": body_data, } elif transport_type == "telnyx":