• V20: 3CX Re-engineered. Get V20 for increased security, better call management, a new admin console and Windows softphone. Learn More.

Problem with Outbound Rules

Status
Not open for further replies.

mbagshaw

Joined
May 11, 2008
Messages
14
Reaction score
0
can somebody PLEASE help me sort out this frustrating problem!

One of the "phones" I am using is the eyeBeam soft phone. I have imported my Outlook directory into eyeBeam so I can call my stored numbers. All my Outlook numbers are stored in the format +cc (aaa) nnn-nnn, where "+" indicates the international dialling code (it is 0011 in Australia), cc represents the country code, aaa represents the area code and nnnn-nnnn represents the phone number (of course some of the specific codes are different lengths - the US is 1, Australia is 61, area codes and phone numbers themselves vary in length).

To dial a number correctly on any of my outside lines (VoIP or PSTN) I need the final numbers string sent to those lines to be:

Local/National numbers: aaannnnnnnn (i.e. drop all spaces, brackets and dashes and also drop the + and the country code). For example, +61 (0412) 44-2291 needs to dial out as 0412442291.

International numbers: 0011ccaannnnnnnn - note the first digit of the area code needs to be dropped and the + needs to be converted to 0011. For example, +44 (0113) 2641879 (a UK number) needs to dial out as 0011441132641879.

I have tried to set up a dial plan in eyeBeam to do these things (#1\a\a.T|+61xx.T|+x.T|;match=1;prestrip=2;match=2;prestrip=3;match=3;prestrip=1;pre=0011 if anyone knows eyeBeam) but as can be seen in the 3CX System Status Log attached, eyeBeam is not passing the required string.



I tried dialling two numbers, (The first to the UK, the other to an Australian number) - the numbers received from eyeBeam into 3CX highlighted. The international one didn't work but the Australian one did. I am even more confused because as far as I can determine NEITHER number should work - both numbers still appear to have the + at the beginning of them (that would explain why the international number doesn't work - without the 0011 I can't dial out of Australia - but it doesn't explain the Australian number working... I can't dial a + into my Cisco phone to test this but dialling 610412442291 works okay on the Cisco (neither 00110412442291 or 0011412442291 work ... both say "Forbidden" in the log). It seems, then, that my problem is related to the +.

All of this makes me think I have my Outbound Rules incorrect. I have attached my current rules:



In the detail of the first rule I have "Calls to Numbers starting with (Prefix)" = +, strip digits = 1, prepend = 0011
In the detail of the second rule I have "Calls to Numbers starting with (Prefix)" = 61, strip digits = 2

The remaining rules are fairly self explanatory - they seem to be required to allow numbers of different lengths to get through. I created the one I called "international" because it seemed I needed a rule that would just allow a number of any length that was preceded by 0011 to go through - its strip digits and prepend are both blank.

WHY IS THIS NOT WORKING??? :cry:

It seems that neither eyeBeam or 3CX do anything with the +. One of the things I'm not clear on with Outbound Rules is whether or not there is any order of processing. Is the rule at the top processed first? If a match is found for a number string in a rule, does 3CX process only that rule and ignore the rest or does it continue applying the following rules based on a transformation that might have happened in a previous rule? In my case, given that all of the numbers that come from my Outlook directory via eyeBeam will start with a +, I really need two separate cases. In other words I need to say "if the number string starts with a +61, remove the +61 and dial the rest, but if it starts with +anything else, remove the + and replace it with 0011 and drop the first digit of the area code.

As far as I know the same logic applies in every country (other than the 61 being a different country code in other countries, of course) so SURELY someone has sorted this out before?
 
Check 'General settings' / e164 Number processing and user's manual about it.
 
Thanks to your reply, Archie.

I have done what I think I need to do and this still won't work for calls outside Australia. I checked the documentation in the manual and it doesn't say anything more than the brief description in the general settings/e164 number processing panel (as a general comment I haven't found the 3CX documentation to be very thorough - it really should explain every option and parameter for every panel and it certainly doesn't do that, nor does it answer questions like the one I raised above about the processing order of outbound rules... in my view many of the questions being asked on this forum should be answered by the documentation).

Nevertheless, it looked fairly self explanatory (although it wasn't clear to me what the option "add prefix" is for and whether I even need it or not). The assumptions I have made reading the limited documentation are that, once I have specified options for e164 number processing, that 3CX will look at every numbers string it receives from any device and if it thinks it is in e164 format ... +ccaaannnnnnn ... it will "fix it up", removing the country number if specified, the area code if specified and adding the international dialing code if necessary).

These are the options I used (I also tried it with an Add Prefix option of 77 then created a rule that just said "if the string starts with 77, strip the first two digits and use line 1 to dial out" - that didn't work either):



I assumed - naively as it turned out - that once I created options for e164 number processing all my problems would be gone! Could somebody PLEASE tell me what I'm doing wrong here? This is becoming a very, very frustrating experience for something that should be dead simple!

The log for a successful local (within Australia) call looks like this:



The log for an unsuccessful international call looks like this:



It would seem, therefore, that the only issue I now have is that the Australian international dialling prefix (0011) is not being added to the beginning of the string.

Could somebody also and so the following questions:

1. How do outbound rules get processed (one of my questions from my previous post)? Does 3CX start with the first outbound rule, if that rule matches the input then do whatever is specified in the other parameters - stripping numbers, adding numbers, etc - and then exit, ignoring all the other rules. Or does it keep processing the input string, doing further transformations if a rule further down the list then matches the string that may have been modified by a previous rule?

2. How do I know EXACTLY what is sent to my VoIP or landline provider from 3CX? In the System Status log I attached to my first post above it only seems to tell me the string it has received from my device (in this case eyeBeam). Is that the string it sends to my outside line? It doesn't seem to me that it could be - I'm nearly sure that both my VoIP provider and my PSTN provider won't accept "+" at the beginning of a number but as the log above shows, that seems to be what 3CX is using.

P.S. Another strange thing happened as well. When I had finished entering the options I was also asked to "confirm which user password I was changing" ... what on earth is that all about? The option list it presented me with looked like my list of extensions so I just nominated one of those and it didn't seem to cause any problems.
 
When PBX routes call out it takes dialed number, and do following:
1) check if it is e.164 number: if the number is prefixed with '+' it is e.164 number and '+' is removed from it
2) if e.164:
if there's country code specified and the number is prefixed with country code - it is removed (if told so)
if there's aread code specified and the number (after removeing cc) prefixed with it - it is removed (if told so)
if there's 'Add prefix' value is specified - it is added to the beginning of preprocessed number
3) find outbound rule using preprocessed number.
For your example: +610412442291 -> 610412442291 -> 0412442291 (rem cc) -> outbiund rule -> 10 digit numbers ->engin1 (0412442291 will be sent)
 
Archie,

I am still unable to get international calls to work correctly. I now have an e164 set up as follows:



This appears to work for local and national calls within Australia, as you said in your previous post, removing the country code from the e164 number if it is an Australian number and the area code if the number is to the same area code that my system is in (02). It DOESN'T work if the country code is not to Australia.

I tried appending my international dialling code in the e164 definition but that adds the international dialling code to every number, and I don't want that for calls within Australia. On the assumption that the + was still on the beginning of an international number (I know you said the e164 processing removed the +, but as you can see in the server log below, it appears that the + is still there) I set up a rule to delete the + and add the international dialling code (0011):



That still doesn't work:



Can you please tell me exactly what e164 definition I need to enter is, and what other outbound rule I might need to create to make this work correctly?

Thanks in anticipation.
 
1) '+' will be removed by e164 preprocessor in any case
2) I would suggest to add some prefix in e164 preprocessor. for example, '00', than make outbound rules based on that prefix (and possibly length)
 
Mark, in your sample LOG the number called from ext 11, what is the international dialing code within that number I see the + and the 11 which is used for the int access but is the int code 80 or is the 8 an area code?

I cant say I've managed to get the + to work in 3cx.



Phil
 
Phil,

The number in the example looks like this in my Outlook contact list:

+1 (1805) 987-4499

The + represents the international dialling code (0011 for Australia), the first "1" is the US country code, the "(1805)" is the area code INCLUDING the National Direct Dialling code (it seems every country uses the NDD - usually a single digit number, it seems either "0" ... most countries, from what I can see ... or "1" ... including the US, although it can get more complicated than that! - see http://www.kropla.com/dialcode.htm for details), and the rest is the local number.

There are several complications here, primarily because international dialling codes, country codes, National Direct Dialling codes and area codes, and local numbers all vary in length and content. And because I use my Outlook contact list on my mobile phone, I need the number to be in a form that can be dialled from anywhere (all of this works fine on my mobile phone in any country, by the way - whatever code has been written in Windows Mobile - the platform on my mobile phone - it seems to handle numbers correctly).

I have been able to get my Outlook format numbers to work correctly if they are either local (i.e. the same area code I am dialling from - in my case 02) or national (i.e. the same country code - in my case 61). I can see why I have been able to make that happen fairly simply - the e164 processing options in 3CX allow me to specify which country I am in, whether or not I want to remove the country code, what area code I am in and whether or not I want to remove the area code.

I just can't figure out a way, though, to use Outbound Rules to process international numbers. Given the variety in the lengths of all these numbers, it seems I need a much more powerful Outbound Rule capability than 3CX currently provides. I would need, for example, the capacity to have a rule that only processes if a number was NOT another number - i.e. "if the first two digits of the number are NOT 61 (the Australian country code), then blah blah blah... But even that wouldn't help greatly as I would probably need to set up a separate outbound rule for every country ("if the first digit is 1 then I am calling the US and therefore the 4 numbers AFTER the 1 the area code including the National dialling code, so drop the first digit of that, reappend the country code and dial the number!" ... but of course I would need a different rule for, say, the UK as the country code is TWO digits - 44 - and the area code also uses a different format. I would also need the capacity to specify a rule that would process if a number was a variable length, say, more than 10 digits.

The only way I could see this could work simply is if the e164 processing section of 3CX was enhanced with extra options along the following lines:



Of course the field for "International dialling code" could be omitted if 3CX had an internal table that picked up the IDD code based on the country number specified in the first option.

Having said all of this, I'm finding it difficult to believe that NOBODY has sorted out this problem before - it would seem to be a very common requirement to me.
 
Hi Mark, I know we are about 12 hours time shift, but I'm just about to rush for an early morning meeting, and unless someone else replies to you, what I noticed in your log to Diana deBring, is the call is to +1180 So thats +11 80 and not to +11 18.

I didnt think you had to issue + (00) again once you had issued a +11 so calling uk would be +11 44

I'll have a look closer later today unless someone else see the problem but to me it looks like the correct international composition of the number is not being sent.

As I mentioned in my mail, I cant seem to get + working in outbound rules so use 00, so maybe someone from 3cx will mention that.

Regards

Phil
 
Hi Mark, well looking at the problem, I think to start with, you need to create exceptions in the outbound rules.

For calls within your country make an outbound rule in 3cx and place at the top of the outbound rules, which should look for prefix +61 and set it to remove the first 3 digits (+61) and put nothing in the outgoing prefix (unless you need to put one in, in the uk we add the 0 of course). This should deal with your local and national numbers dialled using the e164 format.

Now make a rule that will look for the + prefix and then set the rule to remove 1 digit (the +) and then in the outgoing prefix enter 0011. (3cx doesn’t like the + so you have to use 00) Place this rule after/below the +61 rule. This should remove the + and place your international dialing access code in front of the numbers that dont have your own country code in front of them.

Also remove the entries for the e164 configuration.

I can not see why this should not work except that 3cx doesnt recognise the + in the outbound rules, so 3cx should this work?

Phil
 
Hi

We are looking into this issue however we are unable to unable to confirm any dates for this.
 
Hi William, well if you could at least allow + to be used in the Apply his rule prefix check, it may help (in the more link it says + can be used but I guess its been overlooked) and I am not sure if it worked in eariler versions of 3cx.

Phil
 
Phil,

The number in the example looks like this in my Outlook contact list:

+1 (1805) 987-4499

The format for North American number is 1-xxx-xxx-xxxx the first number "1" is the country code. That number looks wrong to me it should look like this +1 (805) 987-4499

Adeolu
 
Hi folks,

An update. I "sort of" fixed this by setting up outbound rules to add 0011 (the international dialing code for Australia) to 11 digit numbers, 12 digit numbers, 13 etc (through to 16 just in case some country has particularly long numbers) on the basis that Australian numbers with an area code are all 10 digits max. This is rather crude and doesn't allow me to have numbers with, say, a pin number attached. I'm sure this could be fixed in the 3CX e164 processing.
 
Status
Not open for further replies.
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.