Reference13r1:Concept Number Adjustments (Dialing Location)
Very often numbers are not available in the standard e.164 international format, but in subscriber or national format and maybe also formated with space, bracket, hyphens or other characters. This article defines all mechanisms in the innovaphone PBX used to adjust numbers. This can be the calling party number for display or for reverse lookup, or the called party number obtained from a directory or other purposes. These mechanisms are implemented in the PBX, the endpoints or in gateways.
Incoming Calls from Trunks
A Calling Party Numbers sent in a call from the gateway to the trunk should be formated in a way, that it can be used to call back the caller, in the "Unknown Number" format. Which means it should contain any necessary prefixes for national or international numbers.
The PBX Trunk objects adds the Trunk number as prefix.
The reverse lookup assumes that a directory exists for the numbers in the international format. For this reason, the number is converted to the international format for the lookup. The prefixes configured in the Node object are used for this purpose. If no prefixes are configured, the root node prefixes configured on the PBX/Config page are used.
The reverse lookup is performed when the call is sent out to a user, so for different users there can be different results.
- If the start of the number matches the prefix for international numbers, the prefix is removed and the resulting number is used for the lookup
- If the start of the number matches the prefix for national numbers, the prefix is removed and the country code is added. The resulting number is used for the lookup
- If the start of the number matches the prefix for subscriber numbers, the prefix is removed and the country code and area code are added. The resulting number is used for the lookup
Type of number handling
For any calls sent to the PBX, e.g. outgoing calls from phones, the type of number of the calling party number and called party number is converted to the prefixes defined in the node of the object on which the call is received. If the prefix is not defined in the node, the prefix defined in PBX/config is used. The type of number is then set to Unknown. For SIP calls a '+' at the beginning of the number is treated as a Type international.
The type of number values for International, National and Subscriber are converted into their respective prefixes.
This way an international number obtained from a directory can be directly used for dialing.
PBX internal calls
For internal calls, esspecially when nodes are used, as calling party number the shortest possible number, which can be used for call back, is presented to the called endpoint.
PBX database used as LDAP database
The user database of the PBX can be used as a directory. In case of a configuration with nodes (e.164 configuration), at a given user only the number within the node is stored. As "otherTelephoneNumber" the complete number from the root node is provided. If the config option "Adjust LDAP results for e.164" is set, a '+' is added as prefix to this number, so that it can be directly used to be dialed as international number.
Phone App, Softphone App
The myApps Phone App and Softphone App get the for the node of the user configured prefixes in the AttachResult or RegisterResult messages. These prefixes are used to adjust numbers from directories before they are dialed:
- If the number starts with '+' it is sent as it is to the PBX. The PBX then does the adjustment
- If the number starts with what is configured as international prefix, the number is sent as it is to the PBX
- If the number seems to be an international number, which means it matches the international prefix with the subscriber prefix removed from the beginning, the subscriber prefix is added
- If the number seems to be a national number, which means it matches the national prefix with the subscriber prefix removed from the beginning, the subscriber prefix is added
- If the number is 7 digits or longer, the subscriber prefix is added (this can be set as Max. length internal number in PBX/Config/General)
Before a number is sent to callkit a prefix, which matches the subscriber prefix is removed and added again when the call is actually sent to the PBX, so that the formating done in callkit, which works based on public numbers, works.
Android ConnectionService (similar functionality as CallKit under IOS)
Before a number is sent to ConnectionService a prefix, which matches the subscriber prefix is removed and added again when the call is actually sent to the PBX, so that the formating done in ConnectionService, which works based on public numbers, works.