Add custom data handling for Twilio

This commit is contained in:
Mark Backman
2025-09-11 09:54:19 -04:00
parent 8e8e42717b
commit d595676436

View File

@@ -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":