Yo he realizado varias aplicaciones sobre Asterisk utilizando la siguiente metodologia.
Un DialPlan en donde cada contexto realiza 1 o mas llamadas a AGI, pasando datos de variables.
Los AGI, basicamente hacen consultas a MySQL y dependiendo de los datos que se obtengan devuelven variables a Asterisk, tambien actualizan la base, agregan o modifican datos.
Por otro lado existe una interface Web realizada en PHP con formularios, en donde realizo querys en MySQL buscando, actualizando, insertando y borrando registros.
Lamentablemente si no sabes PHP o PERL que son las herramientas mas faciles para realizar aplicaciones, estas complicado.
Tengo entendido que Asterisk soporta python, java y por suspuesto C. y no se que otro lenguaje para realizar AGIs. pero para realizar una interface web para parametrizar las opciones de los usuarios, deberas utilizar PHP y MySQL, o de ultima PHP y escribir en archivos planos, para que luego los AGI lean de esos archivos en vez de utilizar MySQL.
Una idea para tu problema es:
Deberas uncluir un contexto en asterisk por cada destino, me refiero a que locales, ld, ldi, cels, iax, deberan tener su contexto separada.
En cada uno de ellos antes de realizar el Dial, deberas pasarle a un AGI, el numero de extension del usuario que esta realizando la llamada y el nombre contexto.
El AGI, realizara una busqueda en MySQL buscando por el numero de extension, y obtendra todos los campos o el campo que haga referencia al contexto, esto depende de como quieras realizar el SELECT, luego con un simple if consultas si esta en "1" o en "0" y envias una variable a asterisk.
Cuando el control vuelva a Asterisk (Cuando termina de ejecutarse el AGI), debes utilizar un GotoIf consultando por la variable que recibiste, si esta esta en 1 lo dejas continuar con el Dial, sino lo envias a otro contexto o prioridad que le informe que no puede realizar la llamada y le cortas o lo envias a otro lado.
Por otro lado necesitaras alimentar la base.
Esto lo podes hacer mediando una pagina en PHP que actualice los datos en MySQL, haces un ABM de los usuarios en la base.
En fin asi es como lo haria yo.
Saludos.