Add custom data handling for Twilio
This commit is contained in:
@@ -99,7 +99,11 @@ async def parse_telephony_websocket(websocket: WebSocket):
|
|||||||
tuple: (transport_type: str, call_data: dict)
|
tuple: (transport_type: str, call_data: dict)
|
||||||
|
|
||||||
call_data contains provider-specific fields:
|
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}
|
- 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}
|
- 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}
|
- 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::
|
Example usage::
|
||||||
|
|
||||||
transport_type, call_data = await parse_telephony_websocket(websocket)
|
transport_type, call_data = await parse_telephony_websocket(websocket)
|
||||||
|
if transport_type == "twilio":
|
||||||
# Access call information (works for all providers when available)
|
user_id = call_data["body"]["user_id"]
|
||||||
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"]
|
|
||||||
"""
|
"""
|
||||||
# Read first two messages
|
# Read first two messages
|
||||||
start_data = websocket.iter_text()
|
start_data = websocket.iter_text()
|
||||||
@@ -157,13 +155,13 @@ async def parse_telephony_websocket(websocket: WebSocket):
|
|||||||
# Extract provider-specific data
|
# Extract provider-specific data
|
||||||
if transport_type == "twilio":
|
if transport_type == "twilio":
|
||||||
start_data = call_data_raw.get("start", {})
|
start_data = call_data_raw.get("start", {})
|
||||||
custom_params = start_data.get("customParameters", {})
|
body_data = start_data.get("customParameters", {})
|
||||||
|
|
||||||
call_data = {
|
call_data = {
|
||||||
"stream_id": start_data.get("streamSid"),
|
"stream_id": start_data.get("streamSid"),
|
||||||
"call_id": start_data.get("callSid"),
|
"call_id": start_data.get("callSid"),
|
||||||
"from": custom_params.get("from", ""),
|
# All custom parameters
|
||||||
"to": custom_params.get("to", ""),
|
"body": body_data,
|
||||||
}
|
}
|
||||||
|
|
||||||
elif transport_type == "telnyx":
|
elif transport_type == "telnyx":
|
||||||
|
|||||||
Reference in New Issue
Block a user