To baldwincl - what a simple and creative solution! Star from me too.
To everyone who has participated on this thread looking for a solution to direct dialing of an extension using embedded voicemail auto-attendants, baldwincl's suggestion works well! With some programming effort, you can work around the embedded auto-attendant DialByNumber action and its requirement of a leading digit, * or # to dial an extension directly.
On the IP500 4.1.9 system that I referenced when starting this thread, the extensions are 301 to 324. This is my programming which includes some additional steps to handle callers who make a mistake while dialing an extension.
Main AAOpen: (incoming call route with time profile, call delivered here during working hours)
1 = sales
2 = customer service
3 = transfer to auto-attendant AA3x
.
etc.
AA3x:
0 = transfer to auto-attendant AA30x
1 = transfer to auto-attendant AA31x
2 = transfer to auto-attendant AA32x
3 to 9, * and # = transfer to auto-attendant AAInvalid
AA30x:
0 = transfer to x300
1 = transfer to x301
...
9 = transfer to x309
* and # = transfer to auto-attendant AABadExt
AA31x:
0 = transfer to x310
1 = transfer to x311
...
9 = transfer to x319
* and # = transfer to auto-attendant AABadExt
AA32x:
0 - 4 = transfer to x320 to x324
5 - 9, * and # = transfer to auto-attendant AABadExt
AAInvalid: (for handling 33, 34, ..., 39, 3# and 3* to "eat" the third and last digit of an expected three-digit extension)
all keys = transfer to auto-attendant AABadExt
AABadExt: (for handling any invalid or unused 3xx three-digit extension in your dial plan dialed by the caller)
all keys = transfer back to auto-attendant Main AAOpen
Notes:
This solution is probably superior to the existing embedded voicemail auto-attendant action DialByNumber since there is better handling of extension dialing errors. Before, using DialByNumber, callers accidentally pressing #327 (an invalid extension on my IP500) to direct dial x324 would have an 8 second delay followed by a transfer to the incoming call route fallback extension. On my IP500, and perhaps yours, it's better to tell the caller about the mistake and let them retry.
The auto-attendants have no recordings except for AABadExt which should say something like "Invalid extension entered, please press any key to return to the main menu". Once a caller reaches AABadExt they'll have to press something to go back to a point where they can re-try an extension (see the first caveat about input delays.) An alternative would be to have the recording say “Invalid extension, please try again or press 9 to return the main menu”, and program AABadExt option 3 to transfer to auto-attendant AA3x.
As with DialByNumber, extensions need to be consistent in length. Also, it reduces programming if extensions are within a small range.
Depending on your extension dial plan, it does takes several auto-attendants to accomplish, so baldwincl's solution will generally require 4.0+ since earlier versions will encounter the 4 auto-attendant limit (4.0+ embedded voicemail supports 40 auto-attendants.)
Caveats:
The default embedded timeout for auto-attendants is 8 seconds. If during this auto-attendant daisy-chaining a user pauses for 8+ seconds while dialing an extension, the call will be re-directed to the fallback extension specified on the incoming call route, probably denying the caller another opportunity to dial an extension directly.
There is an added requirement to keep active extensions and these "direct dial" auto-attendants in sync. If for example, ext 321 becomes unused, one needs to remember to change the AA32x auto-attendant key 1 action from transfer x321 to transfer to auto-attendant AABadExt. If the extension dialing plan changes, well, more programming!
There is a lack of flexibility once AABadExt is reached. For example, on my IP500 4.1.9 system, incoming calls are delivered to AAOpen, AAClosed, and AAHoliday using incoming call routing and time profiles. If a user miskeys or enters an invalid extension, you have to pick one auto-attendant to transfer to (after the caller presses any key to acknowledge the invalid extension recording.) In my case, I have to choose AAOpen even though it might be after hours or a holiday. (Anyone: is there a short code that could be used to transfer a call back through an incoming call route group?)
Finally:
Thank you again baldwincl for sharing your solution, and for everyone who contributed. While somewhat cumbersome, for most posters to this thread seeking a solution, there is a method available for direct dialing of an extension using embedded voicemail without using DialByNumber and without breaking anything. Once set up, it works well with a few caveats and doesn't require much ongoing maintenance or attention. No, it’s not VM Pro, but if you don’t need VM Pro for anything else, this is a less expensive solution.
Avaya - a new embedded voicemail auto-attendant action to direct dial an extension (without a leading digit, * or #) is still very much desirable and would certainly be easier to program. It seems like adding a new embedded AA action that means "the AA digit pressed is the first digit of my dial plan, transfer when an extension is recognized" is a relatively trivial variation of DialByNumber.