The library for parsing and validating international phone numbers in Salesforc

The library for parsing and validating international phone numbers in Salesforce. Created by Noltic User Guide What is it? This is a famous Google's library ported to Apex and adapted to the Salesforce best practices. Libphonenumber is a well-known Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. Releases The library will be maintained based on releases of the Google library. Any further updates from Google or bug fixes will be ported to Apex too. Libphonenumber for Salesforce will be also updated with useful specific features based on the requests from the clients. Troubleshooting / reporting an issue ● Libphonenumber is a third-party port of Google`s library. ​ReadMe by Google`s library​ might answer some of your questions. ● In case there are issues in using the product you can get support from one of Noltic`s Salesforce experts. Contact us via ​libphone@noltic.com Features & functionality ● PhoneNumberUtil ● PhoneNumberOfflineGeocoder ● PhoneNumberToTimeZonesMapper ● Quick Examples 1 PhoneNumberUtil Namespace:​ ​noltic_libphone; Class:​ ​ PhoneNumberUtil; Methods: ● format(number, numberFormat)​ - formats a phone number in the specified format using default rules. ● formatInOriginalFormat(number, regionCallingFrom) ​ - formats a phone number using the original phone number format that the number is parsed from. ● formatOutOfCountryCallingNumber(number, regionCallingFrom)​ - formats a phone number for out-of-country dialing purposes. If no regionCallingFrom is supplied, we format the number in its INTERNATIONAL format. If the country calling code is the same as that of the region where the number is from, then NATIONAL formatting will be applied. ● getNumberType​ - gets the type of the number based on the number itself; able to distinguish Fixed-line, Mobile, Toll-free, Premium Rate, Shared Cost, VoIP, Personal Numbers, UAN, Pager, and Voicemail (whenever feasible). ● getRegionCodeForNumber(number) ​ - returns the region where a phone number is from. This could be used for geocoding at the region level. Only guarantees correct results for valid, full numbers (not short-codes, or invalid numbers). ● isNumberMatch ​ - gets a confidence level on whether two numbers could be the same. ● getExampleNumber​ and ​getExampleNumberForType​ - provide valid example numbers for all countries/regions, with the option of specifying which type of example phone number is needed. 2 ● isPossibleNumber​ - quickly guesses whether a number is a possible phone number by using only the length information, much faster than a full validation. ● isValidNumber​ - full validation of a phone number for a region using length and prefix information.Tests whether a phone number matches a valid pattern. Note this doesn't verify the number is actually in use, which is impossible to tell by just looking at a number itself. It only verifies whether the parsed, canonicalized number is valid: not whether a particular series of digits entered by the user is diallable from the region provided when parsing. ● isValidNumberForRegion(number, regionCode)​ - tests whether a phone number is valid for a certain region. Note this doesn't verify the number is actually in use, which is impossible to tell by just looking at a number itself. If the country calling code is not the same as the country calling code for the region, this immediately exits with false. After this, the specific number pattern rules for the region are examined. This is useful for determining for example whether a particular number is valid for Canada, rather than just a valid NANPA number. ● findNumbers​ - finds numbers in the text. ● parseAndKeepRawInput(numberToParse, defaultRegion)​ - parses a string and returns it in proto buffer format. ● parse(numberToParse, defaultRegion) ​ - the most important method of the library. Parses a string and returns it as a phone number in proto buffer format. The method is quite lenient and looks for a number in the input text (raw input) and does not check whether the string is definitely only a phone number. To do this, it ignores punctuation and white-space, as well as any text before the number (e.g. a leading "Tel: ") and trims the non-number bits. It will accept a number in any format (E164, national, international etc), assuming it can be interpreted with the defaultRegion supplied. It also attempts to convert any alpha characters into digits if it thinks this is a vanity number of the type "1800 MICROSOFT". 3 PhoneNumberOfflineGeocoder Namespace: ​noltic_libphone; Class:​ ​ PhoneNumberOfflineGeocoder; Methods​: (provide geographical information related to a phone number) ● getDescriptionForValidNumber​ - returns a text description for the given phone number, in the language provided. The description might consist of the name of the country where the phone number is from, or the name of the geographical area the phone number is from if more detailed information is available. ● getDescriptionForNumber​ - explicitly checks the validity of the number passed in. ● PhoneNumberToCarrierMapper​ - provides carrier information related to a phone number. ● getNameForValidNumber​ - returns a carrier name for the given phone number, in the language provided. The carrier name is the one the number was originally allocated to, however if the country supports mobile number portability the number might not belong to the returned carrier anymore. If no mapping is found an empty string is returned. ● getNameForNumber​ - gets the name of the carrier for the given phone number, in the language provided. ● getSafeDisplayName​ - gets the name of the carrier for the given phone number only when it is 'safe' to display to users. A carrier name is considered safe if the number is valid and for a region that doesn't support <a href="http://en.wikipedia.org/wiki/Mobile_number_portability">mobile number portability</a> 4 PhoneNumberToTimeZonesMapper Namespace:​ ​noltic_libphone; Class:​ ​ PhoneNumberToTimeZonesMapper; Methods​: (provide timezone information related to a phone number) ● getTimeZonesForGeographicalNumber​ - returns a list of time zones to which a phone number belongs. ● getUnknownTimeZone​ - returns a String with the ICU unknown time zone. 5 Quick Examples Let's say you have a string representing a phone number from Switzerland. This is how you parse/normalize it into a PhoneNumber object: /** * swissNumberProto = PhoneNumber:[countryCode=41, nationalNumber=446681800] */ String swissNumberStr = ​ '044 668 18 00'​ ; noltic_libphone.PhoneNumberUtil phoneUtil = noltic_libphone.PhoneNumberUtil.getInstance(); try { noltic_libphone.PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, ​ 'CH'​ ); } catch (noltic_libphone.NumberParseException e) { System.debug(​ 'NumberParseException was thrown: '​ + e); } PhoneNumber is a class that was originally auto-generated from phonenumber.proto with necessary modifications for efficiency. For details on the meaning of each field, refer to resources/phonenumber.proto. Boolean isValid = phoneUtil.isValidNumber(swissNumberProto); ​ // returns true There are a few formats supported by the formatting method, as illustrated below: // Produces "+41 44 668 18 00" System.debug(phoneUtil.format(swissNumberProto, noltic_libphone.PhoneNumberUtil.PhoneNumberFormat.INTERNATIONAL)); ​ // Produces "044 668 18 00" System.debug(phoneUtil.format(swissNumberProto, noltic_libphone.PhoneNumberUtil.PhoneNumberFormat.NATIONAL)); ​ // Produces "+41446681800" System.debug(phoneUtil.format(swissNumberProto, noltic_libphone.PhoneNumberUtil.PhoneNumberFormat.E164)); 6 You could also choose to format the number in the way it is dialed from another country: // Produces "011 41 44 668 1800", the number when it is dialed in the United States. System.debug(phoneUtil.formatOutOfCountryCallingNumber(swissNumberProto, 'US'​ )); Geocoding Phone Numbers noltic_libphone.PhoneNumberOfflineGeocoder geocoder = noltic_libphone.PhoneNumberOfflineGeocoder.getInstance(); ​ // Outputs "Zurich" System.debug(geocoder.getDescriptionForNumber(swissNumberProto, noltic_libphone.Locale.ENGLISH)); ​ // Outputs "Zürich" System.debug(geocoder.getDescriptionForNumber(swissNumberProto, noltic_libphone.Locale.GERMAN)); ​ // Outputs "Zurigo" System.debug(geocoder.getDescriptionForNumber(swissNumberProto, noltic_libphone.Locale.ITALIAN)); Mapping Phone Numbers to original carriers Caveat: We do not provide data about the current carrier of a phone number, only the original carrier who is assigned the corresponding range. noltic_libphone.PhoneNumber swissMobileNumber = new noltic_libphone.PhoneNumber().setCountryCode(​ 41​ ).setNationalNumber(​ 79876 5432​ L); noltic_libphone.PhoneNumberToCarrierMapper carrierMapper = noltic_libphone.PhoneNumberToCarrierMapper.getInstance(); ​ // Outputs "Swisscom" System.debug(carrierMapper.getNameForNumber(swissMobileNumber, noltic_libphone.Locale.ENGLISH)); 7 uploads/S4/ libphonenumber-guide.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Fev 10, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.1673MB