{{indexmenu_n>20}}
====== Call Routing ======
The call routing table allows you manipulate how incoming calls are routed and processed based on the content of the caller ID, called ID, or SIP information (From, To, Agent, Contact or Identity).
**When processing an incoming call, the system processes the call against the call routing table first and then against the guest DID table.**
{{:images:vs8:vsconfig:telephony-callrouting.png?nolink|}}
===== Insert / Delete =====
==== Insert ====
To add a new entry in the routing table, click **Insert**. A new entry will be inserted at the top with the //Order// value set to the next available number. You can then click on each field to edit it.
==== Delete ====
To delete a routing entry, click on it to select it and then click **Delete**. The entry will be deleted from the table, without confirmation, but the deletion will not be permanent until you click **Apply** or **OK**.
===== Edit a Call Routing Rule =====
To edit a routing entry, just click on the field you want to change. When finished, click **Apply** to save your changes or **OK** to save and then close the dialog.
==== Order ====
When an incoming call is processed through the call routing table, each entry is checked in order based on the //Order// field, starting with 1 and ending with the entry with the highest value. To move an entry to a different place in the order, click on the //Order// field and use the list box to select the position you want. Selecting //Top// is the same as selecting 1 and selecting //Bottom// is the same as selecting the highest value. All other entries will be renumbered as needed to otherwise remain in the same order.
==== Enabled ====
Check this box to enable the entry; remove the check to disable it. If this box is not checked, the entry will be skipped over when processing a call.
==== Input Source ====
Select which field of the call data to use when checking if a call routing entry should be applied.
^Field^Description^
|//Called ID//|Compare the Source contains field against the called party number. **Requires an exact match.**|
|//Caller ID//|Compare the Source contains field against the caller ID. **Requires an exact match.**|
|//SIP From//|Look for the Source contains text anywhere within the SIP From field. **SIP only.**|
|//SIP To//|Look for the Source contains text anywhere within the SIP To field. **SIP only.**|
|//SIP Agent//|Look for the Source contains text anywhere within the SIP Agent field. **SIP only.**|
|//SIP Contact//|Look for the Source contains text anywhere within the SIP Contact field. **SIP only.**|
|//SIP Identity//|Look for the Source contains text anywhere within the SIP P-Asserted-Identity field. **SIP only.**|
==== Source contains ====
Enter the digits or characters to match. When applying a call routing entry against an incoming call, the system will compare the text entered in this field against the data in the selected Input Source in one of two ways:
^Input Source^Comparison Method Used^
|//Called ID, Caller ID//|Content of Source contains must be an **exact** match.|
|//Any SIP field//|System will search the //Input Source// for any occurrence of the full string entered in the //Source contains// field.\\ \\ For example, if Input Source is ''SIP To'' and //Source contains// is set to ''2000'', then given the //SIP To// line:\\ ''SIP Header [to ]'' the call routing entry will match because the //SIP To// data contains the string ''2000''.|
==== Action to take, Result ====
Select the action to perform when the call routing rule is invoked. If relevant, fill in the //Result// field with the data required by the selected action.
^Action^Result^Description^
|//Disconnect//|(not used)|Immediately disconnects the call.|
|//Extension Search//|(not used)|Searches the mailbox database for any Office Extension or MWI addresses that match\\ * the content of the input source, if it is set to //Caller ID// or //Called ID// and //Source// contains is blank; or\\ * the content of the //Source contains// field if it is not blank. If a match is found, the caller or called ID (as appropriate) is replaced with the mailbox that has the matching extension and processing continues with the next call routing rule.\\ \\ **__Note__: //Source contains// must __not__ be blank if //Input Source// is a SIP field.**|
|//Goto//|//Mailbox number//|Routes the call to the mailbox specified in the //Result// field. //Does not ring the associated extension number (if there is one).//\\ \\ If the //Result// field does not contain a valid mailbox number, the call is routed to the auto attendant main greeting instead.|
|//Login//|//Mailbox number//|Routes the call to login to the mailbox specified in the //Result// field to retrieve messages and/or manage the mailbox.\\ \\ If the //Result// field does not contain a valid mailbox number, the call is routed to the auto attendant main greeting instead.|
|//Postfix//|//Postfix digits//|Appends the content of the //Result// field to the content of the //Source contains// field, then continues to the next call routing rule.|
|//Prefix//|//Prefix digits//|Prepends the content of the //Result// field to the content of the //Source contains// field, then continues to the next call routing rule.|
|//Record//|//Mailbox number//|Routes the call to the mailbox specified in the //Result// field with the call type as //Immediate Record//. Used as a record-a-call feature.|
|//Replace//|//Mailbox or extension number//|Replaces the content of the input source with the content of the //Result// field. In most cases, this should be a valid mailbox or extension number.|
|//Strip Leading Zeros//|(not used)|Only valid if //Input Source// is either Caller ID or Called ID.\\ \\ If //Source contains// is blank, then leading zeros will be stripped from the caller (or called) ID for every call. If it is not blank, then the content of //Source contains// must first match the caller (or called) ID before it will strip the leading zeros.|
|//Transfer//|//Mailbox or extension number//|Routes the call to the number in the //Result// field:\\ * If //Result// contains a valid mailbox number, the call will be transferred to that mailbox's Office Extension address.\\ * If //Result// **does not contain** a valid mailbox number, the call will be transferred to the specified number on the assumption that it is a valid extension number that doesn't have a mailbox.|
|//Call type RNA//|(not used)|Force call type to be RNA.|
|//Call type BUSY//|(not used)|Force call type to be BUSY.|
|//Set called ID//|Number to use|Set the called ID to the value in the result column.|
|//Set caller ID//|Number to use|Set the caller ID to the value in the result column.|
|//Delete called ID//|(not used)|Delete the current called ID value.|
|//Delete caller ID//|(not used)|Delete the current caller ID value.|
|//Called to Caller//|(not used)|Set the caller ID value to what the called ID value is.|
|//Caller to Called//|(not used)|Set the called ID value to what the caller ID value is.|
|//Add//|Value to add|Add the value located in the output column to the value. This will not work with zero padded numbers.|
|//Subtract//|Value to subtract|Subtract the value located in the output column to the value. This will not work with zero padded numbers.|
|//Translate Called//|(not used)|Using the template character **#** in the input column translate a number to be the called ID.|
|//Translate Caller//|(not used)|Using the template character **#** in the input column translate a number to be the caller ID.|
|//Swap ID's//|(not used)|Swap the caller and called ID's.|
===== CSV Import =====
The CSV Import command allows you to import from a CSV file formatted according to the old translation table format (from version 5.31 and earlier) and is provided for convenience for those who only want the simple substitution provided under the old system.
**__Note__:** In many cases, you can avoid translation altogether by adding a just two call routing rules, one with //Input Source// set to Caller ID and the other with it set to Called ID. In both cases, leave the //Source contains// field blank, the //Action to take// field set to Extension Search, and the //Result// field blank. For every call, the system will search the mailbox database for any mailbox where the Office Extension or an MWI address matches the caller (or called) ID and will replace the caller (or called) ID with that mailbox number before continuing to process the call.
The first line of the CSV file must be: ''SOURCE,RESULT''. Each row after that is a single translation with the caller or called ID value on the left of the comma and the associated mailbox on the right. For each entry, the system will create two call routing rules: one for the caller ID and one for the called ID.
Consider the following simple example:
SOURCE,RESULT
7101,1101
7102,1102
On import, the system would create the following call routing rules, with the //Order// value set to the next available number and the //Enabled// box checked:
^Input Source^Source Contains^Action to Take^Result^
|//Caller ID//|7101|//Replace//|1101|
|//Called ID//|7101|//Replace//|1101|
|//Caller ID//|7102|//Replace//|1102|
|//Called ID//|7102|//Replace//|1102|
**__Note__:** Importing a CSV will not overwrite any existing rules; it will simply add the new ones, starting with the next available order value.
To import a properly configured CSV file, click **CSV Import**. A informational message will be displayed that briefly describes how the file must be formatted. Click **Yes** to continue, then use the Open dialog to select the file to import. Finally, click **Open** to import the file. All validly-formatted entries will be added to the call routing table as discussed above.
===== Examples =====
==== Delete ====
It's possible to either delete the called id or the caller id. These settings can be used to ensure the system doesn't integrate with a particular telephone number. For example in a hosted environment where the you may receive caller id from a 10 digit DID number and the called id from an extension number which matches a mailbox.
Another example might be there are multiple numbers which represent the DV2000 like hunt groups, DID numbers, or others extensions not used for registration.
^Input Source^Source Contains^Result^
|//Delete caller ID//| 2065551212 | Caller ID will be empty. |
==== Replace ====
This can be used to convert one number to another based on the source. In this example if the Caller ID contains 7101 it will be changed to 1234.
^Input Source^Source Contains^Result^Output^
|//Caller ID//| 7101 | 1234 | 1234 |
==== Prefix ====
^Sample^Input Source^Source Contains^Result^Output^
|7101|//Caller ID//| | 7 | 77101 |
==== Postfix ====
^Sample^Input Source^Source Contains^Result^Output^
|7101|//Caller ID//| | 8 | 71018 |
==== Strip Leading Zeros ====
^Sample^Input Source^Source Contains^Result^Output^
|007101|//Caller ID//| | | 7101 |
==== Add ====
^Sample^Input Source^Source Contains^Result^Output^
|7101|//Caller ID//| | 10000 | 17101 |
==== Subtract ====
^Sample^Input Source^Source Contains^Result^Output^
|7101|//Caller ID//| | 1 | 7100 |
==== Swap ID's ====
This action requires a matching value in the source column.
^Sample^Input Source^Source Contains^Result^Output^
|CallerID=7101 Called=2000|//Caller ID//|7101| | CallerID=2000 Called=7101 |
==== Translate Called/Caller ====
This special action performs some additional matching and searches in order to perform a given task. In this example we will demonstrate how to change the called ID based on a sub-string within the P-Asserted-Identity SIP field.
Using the **#** sign the system will match only up to that number of digits. If the source contains a prefix this prefix will be searched for in data before the system tries to perform a match.
^Sample^Input Source^Source Contains^Output^
|"Hotel Operator>G 7101 Doe, Jane" |//SIP Identity//|>G #### | 7101 |
|"Hotel Operator>G 7101 Doe, Jane" |//SIP Identity//|>G 7### | 101 |
|"Hotel Operator>G 789563 Bob, Billy" |//SIP Identity//|>G #### | 7895 |
|"Hotel Operator>G 71 Room 29" |//SIP Identity//|>G #### |71 |
|"Hotel Operator>G Doe, Jane" |//SIP Identity//|>G #### ||
- System searches the string //Hotel Operator>G 7101 Doe, Jane" // for the characters ">G ".
- If the characters are found, the system will then read up to the number of **#** in digits only.
=== Additional ===
The translation will work in other ways as well. Here the example sets the caller ID to only the first 3 characters and the second uses the last four of a telephone number.
^Sample^Input Source^Source Contains^Output^
|7101|//Called ID//|###| 710 |
|1258899790|//Caller ID//|425889####| 9790 |
|1258899790|//Caller ID//|425###9790| 889 |
==== Others ====
^Sample^Input Source^Source Contains^Action^Result^Output^Note^
|7101|//Called ID//|7101|Transfer|0| |Only if caller id is 7101 then call will be transferred automatically to 0.|
|"Hotel Operator"