Skip to main content

Phone Number Translations

Various interactions between SAP C4C and Cisco CCE depend on phone number translations. Due to international differences and customer specific applications, a customizable tool is needed to convert phone numbers from format A to format B.

b+s Connects for SAP C4C provides this feature at multiple places in the configuration. For example: Click-to-dial and activity creation. While the direction is different (Click-to-Dial: SAP C4C -> CCE, activity creation: CCE -> SAP C4C), the configuration is always the same.

This guide describes how to configure phone number translations which can be used feature independently.

Creating translation rules

Rules are provided as Regular Expressions. To be more accurate: The JavaScript implementation of Regular Expressions.

tip

A good way to start is by reading the RegExp document from the MDN web docs.

Nevertheless, creating complex Regular Expressions is often cumbersome. Therefore we added extra syntax to make configuration as easy as possible.

The figure below shows the general syntax of a phone number translation rule:

alt-text

Predicate

The predicate is used to specify an interval defining the length of the number to match.

alt-text

The predicate above specifies that all numbers with a length between 7 and 11 characters (including edges + spaces) match.

tip

Predicates always match the original length of the number. This helps in simplifying the configuration by reducing the risk of colliding rules for internal / external numbers.

Pattern

The Pattern specifies the format of the number to match.

alt-text

The pattern above states that the number must consist of digits only and selects them.

Selector

Selectors define the final format of the number. If characters / digits need to be added which were not originally present, this is the place to do it.

alt-text

The selector is the last step in building the number. Based on the pattern output, the selector builds up the new number.

Example 1

The following example shows how to transfer a number received from the Contact Center in the format of 0319175200 to the Swiss E164 format +41 31 917 52 00.

info

This example uses two translation rules (1. and 2.)

alt-text

The first rule in this example actually does not change the number. For numbers between 1 and 17 characters in length, anything else but digits would be removed. Since there is no non-digit present, nothing changes.

The second rule applies to numbers which are exactly 10 characters long (originally). 0319175200 matches and therefore the rule gets applied. The pattern specifies that the number must start with a group of one digit (\d{1}), followed by a group of two digits (\d{2}) followed by a group of three digits (\d{3}) and so on.

The selector then accesses the pattern groups to define the new number string. This means $2 references the first (\d{2}) and therefore contains 31.

Example 2

The following example shows how to transfer a number received from the Contact Center in the format +14693150217 to the US E164 format +1 469 315 0217.

info

This example uses two translation rules (1. and 2.)

alt-text

  1. This number is exactly 12 characters long, so the rule “Add spaces to US Numbers” is applied
  2. (\+1) says that the number must start with +1. If the number is 12 characters long, but does not start with a +1, the rule is canceled and nothing is changed.
  3. (\d{3}) says that +1 must be followed by 3 digits
  4. (\d{3}) says that the last 3 digits must be followed by another 3 digits
  5. (\d{4}) says that the last 3 digits must be followed by 4 digits

If any of this does not match, the number will not be changed.

So all of the rules apply for “+14693150217”. Therefore the number is changed by “$1 $2 $3 $4”:

  1. $1 refers to the group (\+1), the number to send to SAP C4C looks like +1
  2. $2 refers to the first of the two (\d{3}), the number to send to SAP C4C looks like +1 469
  3. $3 refers to the second of the two (\d{3}), the number to send to SAP C4C looks like +1 469 315
  4. $4 refers to the last group (\d{4}), the number to send to SAP C4C looks like +1 469 315 0217

The spaces in the replacement part of the rule “$1 $2 $3 $4” are used directly. So if you use “$1-$2-$3-$4” the number would be translated to: +1-469-315-0217

And you are also allowed to remove groups: [12, 12]->(\+1)(\d{3})(\d{3})(\d{4})->$2 $3 $4 will be translated to: 469 315 0217 . [12, 12]->(\+1)(\d{3})(\d{3})(\d{4})-> $3 $4 will be translated to: 315 0217.

It is also possible to convert an international US number to a local one like: [12, 12]->(\+1)(\d{3})(\d{3})(\d{4})->($2) $3-$4

Then the incoming number “+14693150217” will be translated to: (469) 315-0217.

Example 3

The following example shows how to transfer a number received from the Contact Center in the format of +491515555531 to the German E164 format +49 151 5555 531.

info

This example uses two translation rules (1. and 2.)

alt-text

  1. This number is exactly 13 characters long, so the rule “Add spaces to German Numbers” is applied
  2. (\+49) says that the number must start with +49. If the number is 13 characters long, but does not start with a +49, the rule is canceled and nothing is changed.
  3. (\d{3}) says that +49 must be followed by 3 digits
  4. (\d{4}) says that the last 3 digits must be followed by 4 digits
  5. (\d{3}) says that the last 4 digits must be followed by 3 digits

If any of this does not match, the number will not be changed.

So all of the rules apply for “+491515555531”. Therefore the number is changed by “$1 $2 $3 $4”:

  1. $1 refers to the group (\+49), the number to send to SAP C4C looks like +49
  2. $2 refers to the first of the two (\d{3}), the number to send to SAP C4C looks like +49 151
  3. $3 refers to the second of the two (\d{4}), the number to send to SAP C4C looks like +49 151 5555
  4. $4 refers to the last group (\d{3}), the number to send to SAP C4C looks like +49 151 5555 531

The same applies as for rule one. You can use the replacement part $1 $2 $3 $4 to choose what to use from the number.

More Translation Regex examples

DescriptionTranslation Regex
Remove all characters but digits[1,17]->[^\d]+
Remove all characters but digits & +[1,17]->[^+\d]+
DescriptionTranslation Regex
Remove +1[12,12]->(.{1})(\d{1})(\d{10})->$3
Remove +1[10,12]->(^\+1+)(\d+)->$2
Remove +49[10,15]->(^\+49+)(\d+)->$2
Remove +49[10,15]->(.{1})(\d{2})(\d{9})->$3
Remove +41[10,13]->(^\+41+)(\d+)->$2
Remove +41[10,13]->(.{1})(\d{2})(\d{9})->$3
Remove +XX[10,14]->(^\++)(\d{2})(\d+)->$3
DescriptionTranslation Regex
Remove + and replace it with zeros US E164[10,12]->(.{1})(\d{1})(\d{10})-> 001 $3
Remove +1 and replace it with zeros US E164[10,12]->(^\+1+)(\d+)-> 001$2
Remove + and replace it with zeros DE E164[12,15]->(.{1})(\d{2})(\d{10})-> 0049 $3
Remove +49 and replace it with zeros DE E164[10,12]->(^\+49+)(\d+)-> 0049$2
Remove + and replace it with zeros CH E164[10,13]->(.{1})(\d{2})(\d{9})-> 0041 $3
Remove +41 and replace it with zeros CH E164[10,12]->(^\+41+)(\d+)-> 0041$2
DescriptionTranslation Regex
US Number with Space[12,17]->(\d{1})(\d{3})(\d{3})(\d{4})->+1 $2 $3 $4
US Number with Space[12,17]->(\+1)(\d{3})(\d{3})(\d{4})->$1 $2 $3 $4
DE Number with Space[12,17]->(\d{2})(\d{3})(\d{4})(\d{3})->+49 $2 $3 $4
DE Number with Space[12,17]->(\+49)(\d{3})(\d{4})(\d{3})->$1 $2 $3 $4
CH Number with Space[12,17]->(\d{2})(\d{2})(\d{3})(\d{2})(\d{2})->+41 $2 $3 $4
CH Number with Space[12,17]->(\+41)(\d{2})(\d{3})(\d{2})(\d{2})->$1 $2 $3 $4

Configuration Keys

Regex rules can be supplied for Click-to-Dial (ssCtDRegex) and activity creation (ssLookupRegex).

caution

Please ensure that you properly encode the characters defined in URL encoding

For both keys, the configuration is passed as a JSON object. The key is used as a name in order to identify what the rule does. The value contains the actual rule:

{
"Remove all but digits and plus": "[1,17]->[^+\\d]+"
}

Applied to the URL, the example above looks like: &ssCtDRegex={"Remove all but digits and plus":"[1,17]->[^%2B\\d]%2B"}.

info

Note that the + has been encoded with %2B.