Microsoft Teams deals with phone numbers in E164 format, however lots of PBX and Trunks operate with their own dialing plan. We offer the ability to convert inbound and outbound numbers to/from E164 as required.
By default, all numbers that come out of Teams that are longer than 6 digits are in e164 format. Numbers that are 6 or less digits are treated as extension numbers and so none of the conversion rules below apply.
Setting the correct number format is very important, without this calls may not route correctly:
- For inbound calls (in to Teams) if we have the wrong format configured, we might not respond to the INVITE at all or depending on the misconfiguration we may return a 403 Error “No match for service user part”.
- For outbound (out from Teams) if we have the wrong format configured the PBX/trunk may return a 404 Not Found style error, as it does not recognize the number or how to route the number next.
What is E.164?
E.164 is an ITU-T recommendation, titled The international public telecommunication numbering plan, that defines a numbering plan for the world-wide Public Switched Telephone Network (PSTN) and some other data networks. It defines a general format for International Telephone Numbers.
E.164 formatted numbers follow the format:
[+][country code][area code][local phone number]
What are the portal E164 Number Formats?
If your PBX or trunk is sending numbers in a non e164 format then we convert these to E164 before passing on the call to Microsoft.
We offer three different options for our customers depending on their PBX or Trunk configuration requirements: "E164 with +", "E164 without +" and Localized. These are available from the Services page in the portal, then navigating to the PBX or Trunk tab as appropriate.
Note: If you are unable to make or receive calls and you are completing setup for the first time, it is worth checking if the number format is set correctly and if it matches to the PBX leg of the call.
E164 with +
Selecting "e164 with +" tells the platform that inbound calls will be in E164 format (as defined above). With that in place we pass them on through to our routing engine as they are. e.g. If the following number +1 3225 012 013 is sent into the platform, this would be passed through to Microsoft as-is.
For outbound, Microsoft will automatically convert numbers to E164 before they hit the platform. We will then pass these through as-is.
E164 without +
If the "e164 without a +" is selected, then that means the PBX/trunk is sending the number in E164 format (as defined above) except without a leading '+'. Using our previous number example, this time we would receive 1 3225 012 013. We would add on a '+' to the front of the number and then pass on to Microsoft.
For outbound, Microsoft will automatically convert numbers to E164 before they hit the platform. We will then remove the '+' and pass the number up to the PBX/trunk.
Localized allows much finer control over the number. The outbound fields impact those calls out of Teams. The inbound calls impact calls out of the PBX/Trunk towards Teams.
The national fields impact calls placed within the same country. The PBX or Trunk is configured with a country. As all calls that are output from Teams are in E164 format we can detect if the call is for a target number within the same country. e.g. the Trunk is configured to be within California, US (which has an E164 country prefix of +1), and the number dialed starts with +1, we will recognize this is a call within country and apply the National rules.
Specific examples are given below to further explain the functionality:
For Inbound International calls:
The trunk (based in the UK, dial prefix of 44) might want to use the format 00441225012013. In this case the inbound international field should be configured with 00. This is because 00 is the prefix we must remove to get to the [country-code][base-number].
00441225012013 => in. The 00 is removed to give 441225012013, then the + is added to give +441225012013 which is in e164 format. The number can then be passed to Teams.
For Inbound National calls:
Sticking with our UK trunk example, inbound calls within country might come in without any country prefix. e.g 01225 012013.
To correctly handle this, the Localized option must be set and the ‘Inbound National’ prefix should be set to 0. The '0' character tells us what to remove from the start of the number to get a base number to which we can add +[country-code]. We know the country-code because when the trunk/pbx is configured a country is selected.
01225012013 => in. Then 0 is removed to give 1225012013, then country code of trunk and a + are added => +441225012013 which sets the number to e164 format.
Note: Some trunks will always use the international format even though the numbers are in the same country as the trunk numbers, which is fine.
For Outbound International calls:
The dialed number from Teams will be in E164 format. For this rule to fire the country code must be different to that configured for the Country in which the PBX/trunk resides.
For example, if our trunk is configured to be based in the United States (+1) but a UK number is dialed (+44) the rule will apply.
+441225012013 => out from Teams. The + is removed. The '44' is kept and ‘00’ is added to give 00441225012013
Note: The number called will start in E164 format, If the number has a different country code only the + is replaced with the International field value ‘00’
For Outbound National calls:
If the number dialed is in the same country as the trunk configuration then both the '+' and the country code are removed.
For a UK trunk, if the number matches +44 those characters are replaced with the National field value ‘0’
+441225012013 => out from Teams. Then +44 is removed and a ‘0’ is added to make it 01225012013.