I really like just dialing "1" after the AA prompt, so here's an alternate solution:
Add to the SPx inbound route:
{18005551212:aa($1)},{1234567:aa(AAA$2)},
Modify AA digit map:
([1-9]x?*(Mpli)|[1-9]|[1-9][0-9]|<00:$1>|0<$1>|**1(Msp1)|**2(Msp2)|**8(Mli)|**9(Mpp)|(Mpli))
Modify AA outbound route:
{(AAA@@.):ph},{(<0AAA:>(Mpli)):pli},{([1-9]x?*(Mpli)):pp},{018005551212:ph},{(<**1:>(Msp1)):sp1},{(<**2:>(Msp2)):sp2},{(<**8:>(Mli)):li},{(<**9:>(Mpp)):pp},{(Mpli):pli}
OR
{(AAA@@.):ph},{(<0AAA:>(Mpli)):pli},{([1-9]x?*(Mpli)):pp},{(0xx.):ph},{(<**1:>(Msp1)):sp1},{(<**2:>(Msp2)):sp2},{(<**8:>(Mli)):li},{(<**9:>(Mpp)):pp},{(Mpli):pli}
The 1st rule in the inbound route is for the standard features. The 2nd rule is for my added feature.
After dialing 1 the resulting zero will be suffixed. When using the standard features the zero will be suffixed with the callerid of the inbound call. The only way I could tell that you entered just a zero or trying to call a number that begins with a zero (like 011......) is to also check for the callerid. Change 18005551212 to your callerid in the inbound and outbound routes. If multiple callerids are routed to the AA then you must check for all of them. If you don't call numbers beginning with zero then you can use the 2nd outbound route. This checks for a number beginning with zero, no need to check for callerid.