package sip
import (
"github.com/livekit/protocol/livekit"
"github.com/nyaruka/phonenumbers"
)
func ExtractAreaCode(phoneNumber string) string {
num, err := phonenumbers.Parse(phoneNumber, "")
if err != nil {
return ""
}
countryCode := phonenumbers.GetRegionCodeForNumber(num)
if countryCode != "US" {
return ""
}
nationalNumber := phonenumbers.GetNationalSignificantNumber(num)
if len(nationalNumber) < 3 {
return ""
}
return nationalNumber[:3]
}
func DetermineNumberType(phoneNumber string) livekit.PhoneNumberType {
num, err := phonenumbers.Parse(phoneNumber, "")
if err != nil {
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_UNKNOWN
}
numberType := phonenumbers.GetNumberType(num)
switch numberType {
case phonenumbers.MOBILE:
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_MOBILE
case phonenumbers.FIXED_LINE:
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_LOCAL
case phonenumbers.FIXED_LINE_OR_MOBILE:
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_LOCAL
case phonenumbers.TOLL_FREE:
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_TOLL_FREE
default:
return livekit.PhoneNumberType_PHONE_NUMBER_TYPE_UNKNOWN
}
}