Recognizing int'l numbers - What am I missing?

I’m a telephony newbie, setting up Asterisk to manage my home phones. One of my goals is to make the system as transparent as possible for “normal” calls – no “dial 9 to get out” and no need to press # or wait through a timeout to place a call.

My wife is Peruvian, so international dialing needs to meet the same user experience criteria. My current international extension definitely doesn’t do this:

It’s reasonably straightforward to add extensions for Peru (although it’s complicated by the fact that the patterns for Lima/non-Lima and terrestrial/mobile differ). An extension for terrestrial lines in Lima, for example, might look like this:

However, this wouldn’t dial immediately, because of the “catchall” international extension above. The catchall international extension could be reswizzled to not match the Peruvian country code, although it will take more than one extension to do so. Add cousins in the U.K. and Spain, a friend in Germany, etc., and crafting a catchall international extension that doesn’t interfere with matching numbers in those countries is going to become almost impossible.

I can’t escape the feeling that I’m missing something. I’ve read about the use of the exclamation point in patterns, but that requires an unambiguous match, so it won’t help. (At least not if I understand the meaning of the word unambiguout.)

How are people doing this? Thanks!

In Bulgaria user experience is 00[countrycode][sity code][number]
If only number - then in same city.
All providers try to keep this experience.

Of course you could make fast dial - for every user its own fast dial numbers.
Anything else could put you in really deep problems.