How to adjust SMS number prefixes
In this guide we give example routing rules, that show you how you can adjust phone number prefixes with routing rules. If the phone numbers come in various formats from the users, we need to create rules, that adjust each format to make sure that numbers are sent properly to the sms service provider.
Introduction
In our example the SMS service provider will accept a phone number coming in the following format:
+97466781661
The users of the system will use other formats to send the message. For example:
66781661 | -> | +97466781661 |
0097466781661 | -> | +97466781661 |
97466781661 | -> | +97466781661 |
+97466781661 | -> | +97466781661 |
We want to make sure all of the above formats will be accepted by our sms service provider. In order to achieve this, we will create 5 routing rules:
Route 1: Add the "+974" prefix to 8-digit long phone numbers
Route 2: Change the phone numbers starting with "00974" to start with "+974"
Route 3: Change the phone numbers starting with "974" to start with "+974"
Route 4: Leave the phone numbers starting with "+974" and send the sms to the mobile network
Route 5: Anything else should be sent to the recycle bin
Route 1 / Step 1: Create the route
The first example will add a prefix to the phone number if the phone number is exactly 8 digits long.
Change this: 66781661 To this: +97466781661
You need to create a dedicated route to do this modification. This route needs to match the 8-digit phone numbers, and it needs to modify them to have the +974 prefix.
You can start by clicking on the "Routes" icon in the toolbar. After this specify the "From" connection as "Any_SMS_User" and the "To" connection as "SMPP_Client_1". Leave the mode as "Move".
Route 1 / Step 2: Create a match condition
To make this route match phone numbers exactly 8 digits long, you need to add a "Match condition". The "Match condition" will check the "To address" and if the phone number is exactly 8 digits long the root will go into effect.
Match condition:
/^\d{8}$/
The above condition can be broken down like this:
start the matching: ^
8 digits are coming: \d{8}
end the matching: $
Route 1 / Step 3: Create a modifier
After the sms matches this pattern, the modification rule will take effect:
/^(\d{8})$/+974$1/
The above condition can be broken down like this:
change this: ^(\d{8})$
to this: +974$1
Note that the "to this" section contains $1. This means that the first group should be put there. The first group is "(\d{8})". A group is marked by ( ).
Route 1 / Step 4: Test the route
To test the system, simply send an SMS to an 8-digit phone number. Note, that after sending the message, when you check the sent items folder, you will see that the "To" phone number was changed to the appropriate format. You have sent the sms to "66781661", but the sms was actually sent to "+97466781661"
The route properties are:
Route name: | Route 1 |
From: | Any_SMS_User@localhost |
To: | SMPP_client_1@localhost |
Mode: | Move |
Match To address: | /^\d{8}$/ |
Modify To address: | /^(\d{8})$/+974$1/ |
The above table contains the settings you need to apply
Route 2. - 00971 prefix to a +971 prefix
The second route will change the 00 prefix to a + sign. In mobile networks the international phone numbers are starting with a + sign, while in classic telephone systems they start with 00.
Change this: 0097466781661 To this: +97466781661Match condition:
/^00974.*$/
The above condition can be broken down like this:
start the matching: ^
the following digits are: 00974
anything can come after this: .*
end the matching: $
/^00974(.*)$/+974$1/
The above condition can be broken down like this:
change this: ^00974(.*)$
to this: +974$1
The route properties are:
Route name: | Route 2 |
From: | Any_SMS_User@localhost |
To: | SMPP_client_1@localhost |
Mode: | Move |
Match To address: | /^00974.*$/ |
Modify To address: | /^00974(.*)$/+974$1/ |
The above table contains the settings you need to apply
Route 3. - 971 prefix to a +971 prefix
The route will change add + sign to the phone number. In mobile networks the international phone numbers are starting with a + sign, unless the + sign is added the number will be treated as a local number.
Change this: 97466781661 To this: +97466781661Match condition:
/^974.*$/
The above condition can be broken down like this:
start the matching: ^
the following digits are: 974
anything can come after this: .*
end the matching: $
/^974(.*)$/+974$1/
The above condition can be broken down like this:
change this: ^974(.*)$
to this: +974$1
The route properties are:
Route name: | Route 3 |
From: | Any_SMS_User@localhost |
To: | SMPP_client_1@localhost |
Mode: | Move |
Match To address: | /^974.*$/ |
Modify To address: | /^974(.*)$/+974$1/ |
The above table contains the settings you need to apply
Route 4. - +971 prefix to a +971 prefix (let the properly formatted numbers through)
The fourth route will simply match the properly formatted phone number and will let the SMS through without modification.
Match this: 97466781661Match condition:
/^[+]974.*$/
The above condition can be broken down like this:
start the matching: ^
the following digit is: +
the following digits are: 974
anything can come after this: .*
end the matching: $
Note that the + sign was put in brackets: [+]. This is because the + sign is a special character in the regular expression syntax.
Modifier:Leave empty
If the phone number is formatted properly no modification is needed
The route properties are:
Route name: | Route 4 |
From: | Any_SMS_User@localhost |
To: | SMPP_client_1@localhost |
Mode: | Move |
Match To address: | /^[+]974.*$/ |
Modify To address: |
The above table contains the settings you need to apply
Route 5. - Move anything else to the recycle bin
Our final route will move any phone numbers that are not matched by any of the routing conditions above to the recycle bin.
Match: Anything No change Route to: Recycle bin
Route name: | Route 5 |
From: | Any_SMS_User@localhost |
To: | SMPP_client_1@localhost |
Mode: | Drop |
Match To address: | |
Modify To address: |
The above table contains the settings you need to apply
The final routing table
Your final routing table will look like this:
Route name | From | Match | Modify | Mode | To |
Route 1 | Any_SMS_User@localhost | /^\d{8}$/ | /^(\d{8})$/+974$1/ | Move | SMPP_client_1@localhost |
Route 2 | Any_SMS_User@localhost | /^00974.*$/ | /^00974(.*)$/+974$1/ | Move | SMPP_client_1@localhost |
Route 3 | Any_SMS_User@localhost | /^974.*$/ | /^974(.*)$/+974$1/ | Move | SMPP_client_1@localhost |
Route 4 | Any_SMS_User@localhost | /^[+]974.*$/ | Move | SMPP_client_1@localhost | |
Route 5 | Any_SMS_User@localhost | Drop |
More information
- Number prefixes
- Plus sign in front