if you collect 1 digit, but the caller presses multiple digits, the extra digits are stored in buffer, so you can use it later.
if you have vector variables, you can concatenate the digits, I do that to allow the caller to press 1 digit for the menu promp, but also to dial the direct 4 digit extension. If all of your extensions start with the same digit it is pretty easy to do..
so you could
01 collect 1 digit after announcement XXXX for A
02 route to 1234 if digit = 2
03 route to 1236 if digit = 3
04 goto step XX if digit = 4 (assuming your extensions are 4xxx)
..
..
..
XX collect 3 digits after announcement none for B
X1 set C = A CATR B
X2 route to number C with cov Y if unconditionally...