Fixlocalprefix: Could not understand pattern

when user dials “3399”, we want FreePBX dial-out a number “12345699”.
so we setup a route rule which is “3399”, and use trunk rule “3399|12345699+” for the route.
but we got errors like:

fixlocalprefix: Could not understand pattern 3399|12345699+

 i need to use trunk rule like "339|123456789+X" to make it work.

so trunk rule need wildcard characters like "NX."  is that necessary?
or i should use better method to archive what i need?


It depends on if it’s a single number (or a few numbers) or if it’s an entire block of numbers. For information on setting up routes and trunks, see

However what you want to do can be handled this way: Create a Misc Destination, give it any description you like, under Dial put the number to call as if you were dialing it in full (12345699 in your example). Then make a Misc Application, make the Feature Code the number you want to dial locally (3399 in your example), and make the destination the Misc. Destination you just created. This may seem cumbersome but keep in mind that the Misc destination can also be directly used in other FreePBX modules (for example you could have an IVR selection that goes to that Misc. Destination, so callers would not know that they are going to someone’s cell phone as opposed to a regular extension).

Obviously that’s a cumbersome way to do it if you need to translate an entire block of numbers, but for one-off speed dials that’s the way it’s done.

Or, you could just use the system speed dials or the directory.