When the system needs to route a call it should find set of Connections which can accept it. It does it in three stages:
- The system starts process by determining specific Routing Group that the call should be routed to. It does that by finding entity (i.e. Account or Customer) directly associated with the Root Customer which is responsible for the call and retrieving its Routing Group setting.
- At the second stage the system finds all Destination Sets in that Routing Group that have at least one Route matching destination number. Route with longest matching prefix is selected from each of those Destination Sets and paired with Connection that has been associated with that Destination Set in the Routing Group. For example when destination number is 1234567890, while there are two Destination Sets having Routes with prefixes 1, 12 and 123, 1234 respectively, the system will select Routes with prefixes 12 and 1234.
- The resulting Route / Connection list is ordered based on Routing Policy settings for the particular Routing Group. Available policies are:
- Least Cost - Routes are ordered based on cost to the particular destination. Ones with lowest cost will be first;
- Prefix Length - Routes are ordered based on prefix length. Ones that have longest prefix will be first.
- Route Preference – Routes are ordered based on Preference parameter. Routes with higher Preference will be first.
- Routing Entries Order - Routes are ordered based on Routing Entries order in particular Routing Group. Routes coming from Destination Sets with lower Order number will be first.
NOTE: unlike with Rates, where only one best matching Rate has to be selected, the system will select several Routes for the same destination number, but pointing to the different Connections and try them one-by-one until the call is either connected or all possible Connections have been tried.
After the list of possible Routes has been built, Cloud Softswitch will try to send call to Connections associated with each of those Routes one by one until the call is either successfully connected or there are no more Connections to try.
Consider the following example: you have two terminating providers, A and B. A can terminate prefixes 1234 and 1345, while B prefixes 1345 and 1456, and prices for termination to prefix 1345 provided by B are lower than prices offered by A, but the quality of termination is higher at B. In this case your configuration might look like following: