M4 Source Transformation
Source Transformation rules
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in Termination Points or Origination Points Source Transformation input field. There are 3 different Source Transformation rules:
1. Add prefix
To add something to every number, just enter what to add.
2. Cut prefix
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).
3. Replace prefix
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).
Multiple rules
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:
-A+B|-C+D|-X|Z
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.
The number of rules is limited only by the length of the input field (255 characters).
Examples
| Incoming Source Number | Source Transformation | Outgoing Source number | Comment |
| +86123456789 | -\+ | 86123456789 | cut + in front of number |
| 86123456789 | 00 | 0086123456789 | simple rule just adds 00 in front of number |
| 003706123456789 | -00 | 3706123456789 | if the number starts with digits 00, then cut them |
| 003706123456789 or +3706123456789 | -\+|-00 | 3706123456789 | cut + or 00 in front of number |
| 86123456789 | -8+370 | 3706123456789 | cut number 8 and add 370. If the number does not start with 8, then nothing will be added |
| 03706123456789 | -00+370|-0 | 3706123456789 | Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number |
| 3706123456789 | -00+370|-0|+ | +3706123456789 | Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number |
| 86123456789 | -8+370|00 | 3706123456789 | Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped |
| 86123456789 | -8+\+370 | +3706123456789 | if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character |
Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front)
What this does
When a client (connection/trunk) sends Caller ID (CLI) with a leading + (e.g. +37061234567), you can strip that + in M4 so the system sees and uses the number without the prefix (e.g. 37061234567).
How to do it in M4
Use Source Transformation for the relevant connection point (the client that sends the CLI with +).
In the Transformation Rule: field (Old format should be selected) set -\+ (to remove from + the start of the CLI).
After saving, incoming CLI from that client will have the leading + removed before further processing.
Note: If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the +, use Cut: + and Add: empty.
Regexp Rules
Number transformation can also be done using Regexp. More information: M4 Regexp Examples
