| @ -0,0 +1,163 @@ | |||||
| # Frequently Asked Questions (FAQ) | |||||
| ## Validation and types of numbers | |||||
| ### What is the difference between isPossibleNumber and isValidNumber? | |||||
| To understand the behavior of functions, please refer to the documentation in | |||||
| the Javadoc/C++ header files. For example, see `isPossibleNumberWithReason` in | |||||
| [`PhoneNumberUtil`] | |||||
| (https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java). | |||||
| ### Why does PhoneNumberUtil return false for valid short numbers? | |||||
| Short numbers are out of scope of | |||||
| [`PhoneNumberUtil`] | |||||
| (https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java). | |||||
| For short numbers, use | |||||
| [`ShortNumberInfo`] | |||||
| (https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/ShortNumberInfo.java). | |||||
| ### What does it mean for a phone number to be valid? | |||||
| Our phone number library can tell that a number range is valid when there is | |||||
| sufficient official documentation, with some latency after this fact is brought | |||||
| to our attention via issue reports or notifications (see below for more | |||||
| information on where our metadata comes from). A valid number range is one from | |||||
| which numbers can be freely assigned by carriers to users. | |||||
| Do not rely on libphonenumber to determine whether numbers are currently | |||||
| assigned to a specific user and reachable. Some products (e.g. | |||||
| [Google 2-step verification] (https://www.google.com/landing/2step/)) do | |||||
| this with a verification step e.g. by sending an SMS or placing an automated | |||||
| phone call with a verification code). This is not technically feasible without | |||||
| such a verification step given the complicated international world we live in, | |||||
| with varying standardization practices in different regions. | |||||
| ### When should I use isValidNumberForRegion? | |||||
| Rarely! Many people have phone numbers that do not belong to the country they | |||||
| live in. This applies to particularly to mobile numbers, but may also be true | |||||
| for VoIP numbers etc. Note also that the regions your application supports may | |||||
| not be the same as the regions we support. For example, the Channel Islands such | |||||
| as "Jersey" have their own region code - JE. If you allow these users to sign up | |||||
| as a British user ("GB"), their phone numbers will not be considered valid for | |||||
| the region "JE". | |||||
| One use-case where this method may be useful is if you want to see if a | |||||
| `FIXED_LINE` number for a business matches the country it is in, to try and spot | |||||
| data errors. | |||||
| ### What types of phone numbers can SMSs be sent to? | |||||
| SMSs can be sent to `TYPE_MOBILE` or `TYPE_FIXED_LINE_OR_MOBILE` numbers. However, | |||||
| in some countries it is possible to configure other types, such as normal | |||||
| land-lines, to receive SMSs. | |||||
| ### Why did I get `TYPE_FIXED_LINE_OR_MOBILE` as the type of my phone number? | |||||
| Some number ranges are explicitly defined as being for fixed-line or mobile | |||||
| phones. We even represent ranges defined as being "Mostly land-line" in this | |||||
| way. | |||||
| ### What about M2M (machine to machine) numbers? | |||||
| libphonenumber does not support M2M numbers at the moment, but might in the | |||||
| future. | |||||
| One of the reasons libphonenumber doesn't supported M2M so far is because no one | |||||
| could explain their use to us sufficiently. | |||||
| We don't require that a number to be supported by the library has a human at the | |||||
| other end since we already accept premium rate services and they might go to an | |||||
| automated system instead. But to date we only accept ranges that a human might | |||||
| call or send an SMS to. | |||||
| M2M numbers would violate this assumption and we'd have to evaluate the | |||||
| consequences for existing APIs and clients if M2M numbers would be considered | |||||
| valid by the library. | |||||
| Many people use this library for formatting the numbers of their contacts, for | |||||
| allowing people to sign up for services, for working out how to dial someone in | |||||
| a different country, for working out what kind of cost might be associated with | |||||
| a number in an advert, etc. We don't think the lack of M2M support hinders any | |||||
| of those use-case, but we might be wrong. | |||||
| If you would like libphonenumber to support M2M numbers, please engage with the | |||||
| developer community with further information to address our questions and | |||||
| concerns and please describe what kinds of use-cases fail because M2M numbers | |||||
| are not supported by the library. | |||||
| More information on this issue would be very welcomed! | |||||
| Related issues: [#930: JTGlobal - an MNO based in the UK] | |||||
| (https://github.com/googlei18n/libphonenumber/issues/930), [#976: Norway] | |||||
| (https://github.com/googlei18n/libphonenumber/issues/976), [#985: South Africa, | |||||
| Vodacom](https://github.com/googlei18n/libphonenumber/issues/985), [#910: | |||||
| Sweden](https://github.com/googlei18n/libphonenumber/issues/910), [#657: | |||||
| Canada](https://github.com/googlei18n/libphonenumber/issues/657), [#550: | |||||
| Belgium](https://github.com/googlei18n/libphonenumber/issues/550), [#351: | |||||
| Norway](https://github.com/googlei18n/libphonenumber/issues/351), [#332: | |||||
| Netherlands](https://github.com/googlei18n/libphonenumber/issues/332) | |||||
| ## Representation | |||||
| ### What is the maximum and minimum length of a phone number? | |||||
| We support parsing and storing numbers from a minimum length of two digits to a | |||||
| maximum length of 17 digits currently (excluding country calling code). The ITU | |||||
| standard says the national significant number should not be longer than | |||||
| fifteen digits, but empirically this has been proven not to be followed by all | |||||
| countries. | |||||
| ## Formatting | |||||
| ### Can / should we format phone numbers in a language-specific way? | |||||
| No, phone number formatting is country-specific and language-independent. E.g. | |||||
| formatting a US number in a French way (e.g. the way a France number is | |||||
| formatted) for a French user is undefined and wrong. | |||||
| It is true that in some countries phone numbers are typically written using | |||||
| native, not ASCII, digits; our phone number library supports parsing these but | |||||
| doesn't support it at formatting time at the moment. | |||||
| ### Why does formatNumberForMobileDialing return an empty string for my number? | |||||
| If we don't think we can guarantee that the number is diallable from the user's | |||||
| mobile phone, we won't return anything. This means that for numbers that we | |||||
| don't think are internationally diallable, if the user is outside the country | |||||
| we will return an empty string. Similarly, in Brazil a carrier code is essential | |||||
| for dialling long-distance domestically. If none has been provided at parsing | |||||
| time then we will return an empty string. If you get an empty string and are | |||||
| okay providing a number that may not be diallable, you can call another of our | |||||
| formatting numbers instead. | |||||
| ## Metadata | |||||
| ### Where do we get information from to determine if a number range is valid? | |||||
| In theory, phone numbering plans are all supposed to be administered through the | |||||
| ITU. Many countries' phone numbering plans may be found on the [ITU website]( | |||||
| http://www.itu.int/oth/T0202.aspx?parent=T0202). | |||||
| We receive automatic notifications when a new ITU plan has been filed, which may | |||||
| or may not be before it comes into effect. | |||||
| Not every country files their numbering plans with the ITU nor are the plans | |||||
| filed with ITU always up to date. In some countries, the numbering plans are | |||||
| directly handled by a government authority, while in others, most of the work | |||||
| is done by telecom companies (the government's role being only to distribute | |||||
| ranges at the prefix level, with the actual partitioning within the prefix done | |||||
| by the telecom). | |||||
| A large part of the data in `PhoneNumberMetadata.xml` comes from the ITU | |||||
| documents, but because they're sometimes insufficient, we also include data from | |||||
| other sources, including user bug reports, telecom company home pages and | |||||
| government telecommunication authorities. | |||||
| There is no RFC indicating where the data comes from, or what format they're in. | |||||
| We'd love to consume machine-readable numbering plan data (assigned ranges, | |||||
| carrier & geo mappings). If you can connect us with partners in the industry | |||||
| to achieve this, please do so. Thanks! | |||||