diff --git a/crm/utils/__init__.py b/crm/utils/__init__.py new file mode 100644 index 00000000..7c7dabcf --- /dev/null +++ b/crm/utils/__init__.py @@ -0,0 +1,29 @@ +import phonenumbers +from phonenumbers import NumberParseException +from phonenumbers import PhoneNumberFormat as PNF + + +def parse_phone_number(phone_number, default_country="IN"): + try: + # Parse the number + number = phonenumbers.parse(phone_number, default_country) + + # Get various information about the number + result = { + "is_valid": phonenumbers.is_valid_number(number), + "country_code": number.country_code, + "national_number": str(number.national_number), + "formats": { + "international": phonenumbers.format_number(number, PNF.INTERNATIONAL), + "national": phonenumbers.format_number(number, PNF.NATIONAL), + "E164": phonenumbers.format_number(number, PNF.E164), + "RFC3966": phonenumbers.format_number(number, PNF.RFC3966), + }, + "type": phonenumbers.number_type(number), + "country": phonenumbers.region_code_for_number(number), + "is_possible": phonenumbers.is_possible_number(number), + } + + return {"success": True, **result} + except NumberParseException as e: + return {"success": False, "error": str(e)}