Si Asterisk no va a hacer otra cosa que interactuar con la central, puedes prescindir del 8. Ese te lo puse para que si pensabas hacer llamadas a otro lado, pudieras identificar cuales se iban por la central y cuales por cualquier otro medio.
Otra cosa: puedes usar un Macro para simplificar el código. Te pongo el ejemplo:
**
[macro-llamada]
exten => s,1,Dial(vpb/0-1/${ARG1})
exten => s,2,Dial(vpb/0-2/${ARG1})
exten => s,3,Dial(vpb/0-3/${ARG1})
exten => s,4,Dial(vpb/0-4/${ARG1})
exten => s,5,Congestion
**
Ahora bien, puedes reutilzar este macro y reescribir lo que tienes arriba de una manera más simple
Llamadas internas:
exten => _XXX,1,Macro(llamada,${EXTEN})
Llamadas locales
exten => _0XXXXXXX,1,Macro(llamada,${EXTEN})
Llamadas LD
exten => _0XXXXXXXXXX,1,Macro(llamada,${EXTEN})
Con esto te funcionaría. Como lo tienes arriba, el _0XXXXXXX está bien, pero al usar ${EXTEN:1} le quitas el primer 0 al número y mandas a la central solo el XXXXXXX. Por lo que dices, la central necesita el 0 para dar el tono, de modo que ahi te estaría fallando.
El tercer ejemplo si funcionaría bien, pues mandas el 0091 como deberías.
Si mantienes todo como te lo pongo aquí, harías que Asterisk interactuara con la central como si estuvieras conectado a la central misma, pues el código de marcación sería idéntico.
Saludos,