mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-07-04 10:52:17 +02:00
feat: agent stream for cloudonix OPBX (#261)
* feat: agent stream for cloudonix OPBX * feat: make cloudonix app name optional * feat: create application while configuring telephony config * fix: get telephony configuration from stamped workflow run * fix: fix vobiz hangup URL
This commit is contained in:
parent
5cfdbeff02
commit
7fd3b96470
48 changed files with 1529 additions and 545 deletions
|
|
@ -119,57 +119,6 @@ def _test_number_formats_with_country_code(
|
|||
return False
|
||||
|
||||
|
||||
def normalize_phone_number(phone_number: str, country_code: str = None) -> str:
|
||||
"""
|
||||
Normalize a phone number to E.164 format using country context.
|
||||
|
||||
Args:
|
||||
phone_number: Phone number to normalize
|
||||
country_code: ISO country code (e.g., "US", "IN") for context
|
||||
|
||||
Returns:
|
||||
Phone number in E.164 format (e.g., "+14155552671", "+919876543210")
|
||||
"""
|
||||
if not phone_number:
|
||||
return ""
|
||||
|
||||
# Remove spaces, hyphens, and other formatting
|
||||
clean_number = (
|
||||
phone_number.replace(" ", "").replace("-", "").replace("(", "").replace(")", "")
|
||||
)
|
||||
|
||||
# Already in E.164 format
|
||||
if clean_number.startswith("+"):
|
||||
return clean_number
|
||||
|
||||
# Get dialing code for the country
|
||||
if country_code:
|
||||
dialing_code = get_country_code(country_code)
|
||||
if dialing_code:
|
||||
# Remove leading 0 if present (common in many countries)
|
||||
if clean_number.startswith("0"):
|
||||
clean_number = clean_number[1:]
|
||||
|
||||
# Add country code if not already present
|
||||
if not clean_number.startswith(dialing_code):
|
||||
return f"+{dialing_code}{clean_number}"
|
||||
else:
|
||||
return f"+{clean_number}"
|
||||
|
||||
# Fallback: try to guess common formats
|
||||
if clean_number.startswith("0") and len(clean_number) == 11:
|
||||
# Without country context, prefer India for now
|
||||
return f"+91{clean_number[1:]}"
|
||||
elif len(clean_number) == 10:
|
||||
# Without context, this is ambiguous - return as-is with + prefix
|
||||
return f"+{clean_number}"
|
||||
elif not clean_number.startswith("+"):
|
||||
# Add + prefix if missing
|
||||
return f"+{clean_number}"
|
||||
|
||||
return clean_number
|
||||
|
||||
|
||||
def normalize_webhook_data(provider_class, webhook_data):
|
||||
"""Normalize webhook data using the provider's parse method"""
|
||||
return provider_class.parse_inbound_webhook(webhook_data)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue