Help in the change of the DialPlan, Block only external call

I gurus of Asterisk
I have found and asterisk System. In this system are 22 annexes created (from 801 to 822). All annexes can call to external network, (to PSTN, to Cellular network, International Call, etc)

I copy the sip.conf file


[general]
bindport=5060
bindaddr=0.0.0.0
dtmfmode=rfc2833
context=default
sendrpid = yes
language=es
disallow=all
allow=gsm
allow=ulaw
allow=alaw
canreinvite=yes
qualify=yes

#include sip_anexos.conf

**********Archivo sip_anexos.conf ***********
[805]
qualify=yes
nat=no
pickupgroup=1
callerid=<805>
context=latin
call-limit=99
canreinvite=no
vexten=805
host=dynamic
username=805
callgroup=1
subscribecontext=hints
dtmfmode=rfc2833
type=friend
mailbox=805
disallow=all
allow=alaw,ulaw

; the same extension from 801 to 822, as you know latin is the context that all the extension are using.

And the extesion file is:


[general]
static=yes
writeprotect=yes

[globals]
INCOMIMG_LIMIT = 1
AGENT_INCOMING_LIMIT = 1
DYNAMIC_FEATURES=pickupexten#automon#atxfer

[default]
exten => _X.,1,Congestion()

[latin]
include => funcion-desvioinmediato
include => anexos-panasonic
;include => desvio
include => anexos
include => local
include => nacional
include => cel-local123
include => cel-localrpc
include => cel-nacional
include => internacional
exten => _X.,hint,NoOp()

#include extensions_anexos.conf
#include extensions_macros.conf
#include extensions_entrada.conf
#include extensions_funciones.conf
#include extensions_salidas.conf
#include extensions_desvio.conf

***********Archivo extensions_anexos.conf*******************************
[macro-stdexten]

;1) Inicio: Verificacion tipo extension
exten => s,1,Set(CHECK_EXTEN=${MACRO_EXTEN})
exten => s,n,Gosub(checktechtype)
exten => s,n,Goto(checkforward)

;2) Revisar opciones de desvio de llamada
exten => s,n(checkforward),NoOp(EXTEN SOLICITADA: ${DIAL_EXTEN})
exten => s,n,GotoIf(${DB_EXISTS(DESVIOIM/${MACRO_EXTEN})}?desvio:nodesvio)
exten => s,n(desvio),NoOp(EXTENSION ${DIAL_EXTEN} DESVIADA A ${DB_RESULT})
exten => s,n,Set(CHECK_EXTEN=${DB_RESULT})
exten => s,n,GotoIf($[${LEN(${DB_RESULT})} = 9]?issccp1:continua)
exten => s,n(continua),Gosub(checktechtype)
exten => s,n,Goto(checkrecording)
exten => s,n(nodesvio),NoOp(NO DESVIO, EXTEN DESTINO: ${DIAL_EXTEN} -- CHECK EXTEN: ${CHECK_EXTEN})
exten => s,n,Goto(checkrecording)

; 3) Revisar opciones de grabacion de llamada
; NOTA: comando "removeempty.sh" opcional para sistemas con pocas grabaciones
exten => s,n(checkrecording),GotoIf(${DB_EXISTS(CALLRECORD/${CHECK_EXTEN})}?record:norecord)
exten => s,n(record),GotoIf($[$["${DB_RESULT}" = "IN"] | $["${DB_RESULT}" = "ALL"]]?:15)
exten => s,n,NoOp(GRABACION DE LLAMADA INTERNA ACTIVADA PARA EXT: ${DIAL_EXTEN})
exten => s,n,Gosub(checkdir)
exten => s,n,Set(RECROUTEFILE=${MES}/${DIA}/IN-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${CHECK_EXTEN}-${UNIQUEID}.gsm)
exten => s,n,Set(RECSRC=${CALLERID(num)})
exten => s,n,Set(RECDST=${CHECK_EXTEN})
exten => s,n,Set(RECDTE=${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)})
exten => s,n,NoOp(); Paso para ejecutar un posible AGI
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/${RECROUTEFILE},b,sh /var/spool/asterisk/monitor/removeempty.sh)
exten => s,n,Goto(checktimer)
exten => s,n(norecord),NoOp(GRABACION ENTRANTE DESACTIVADA PARA EXT: ${DIAL_EXTEN})
exten => s,n,Goto(checktimer)
; 4) Revisar Opciones de Temporizacion de Llamada
exten => s,n(checktimer),GotoIf(${DB_EXISTS(TEMPORIZADOR/${CHECK_EXTEN})}?:nodialopts)
exten => s,n,Set(DIALOPTS=tTrwWS(${DB_RESULT}))
exten => s,n,Goto(dial)
exten => s,n(nodialopts),Set(DIALOPTS=tTrRwW)
exten => s,n,Goto(dial)
exten => s,n(dial),Dial(${DIAL_EXTEN},40,${DIALOPTS})
exten => s,n,Goto(s-${DIALSTATUS},1)

; Subrutina CHECKTECHTYPE
exten => s,n(checktechtype),NoOp(Revisando disponibilidad de SIP/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(SIP/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "SIP/${CHECK_EXTEN}"]?issip)
exten => s,n,NoOp(Revisando disponibilidad de IAX2/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(IAX2/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "IAX2/${CHECK_EXTEN}"]?isiax)
exten => s,n,NoOp(Revisando disponibilidad de Dahdi/g1/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(Dahdi/g1/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "Dahdi/g1/${CHECK_EXTEN}"]?issccp)
exten => s,n,NoOp(Revisando disponibilidad de Dahdi/g0/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(Dahdi/g0/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "Dahdi/g0/${CHECK_EXTEN}"]?issccp1)
exten => s,n,Goto(checkvoicemail)
exten => s,n(issip),Set(DIAL_EXTEN=SIP/${CHECK_EXTEN})
exten => s,n,Return()
exten => s,n(isiax),Set(DIAL_EXTEN=IAX2/${CHECK_EXTEN})
exten => s,n,Return()
exten => s,n(issccp),Set(DIAL_EXTEN=Dahdi/g1/${CHECK_EXTEN})
exten => s,n,Return()
exten => s,n(issccp1),Dial(Dahdi/g0/${CHECK_EXTEN},40,${DIALOPTS})
exten => s,n,Return()

; Subrutina CHECKDIR
exten => s,n(checkdir),Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,n,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,n,System(sh /usr/local/sbin/checkDayDir.sh ${MES} ${DIA})
exten => s,n,Return
; Bloque CHECKVOICEMAIL
exten => s,n(checkvoicemail),MailboxExists(${CHECK_EXTEN})
exten => s,n,NoOp(VOICEMAIL STATUS: ${VMBOXEXISTSSTATUS})
exten => s,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "FAILED"]?s-CHANUNAVAIL,1)
exten => s,n,Goto(s-NOANSWER,1)
exten => s-ANSWER,1,Goto(s-CLEANEXIT,2)
;
exten => s-BUSY,1,Voicemail(b${MACRO_EXTEN})
exten => s-BUSY,2,Goto(s-CLEANEXIT,1)
;
exten => s-CANCEL,1,Goto(s-CLEANEXIT,1)
;
exten => s-CHANUNAVAIL,1,Playback(pbx-invalid)
exten => s-CHANUNAVAIL,n,Goto(s-CLEANEXIT,1)
;
exten => s-NOANSWER,1,Voicemail(u${MACRO_EXTEN})
exten => s-NOANSWER,n,Goto(s-CLEANEXIT,1)
;
exten => s-.,1,Goto(s-CLEANEXIT,1)
;
exten => s-CLEANEXIT,1,Hangup
exten => s-CLEANEXIT,2,NoOp

[macro-inrecordingcheck]
; Macro de control de grabacion de llamadas entrantes
;
; ARG1 = origen de la llamada
; ARG2 = extension destino de la llamada
;
exten => s,1,NoOp(VERIFICACION DE CONTROL DE GRABACION PARA EXT: ${ARG2})
exten => s,2,GotoIf(${DB_EXISTS(CALLRECORD/${ARG2})}?10:14)
exten => s,3,GotoIf($[$["${DB_RESULT}" = "IN"] | $["${DB_RESULT}" = "ALL"]]?4:11)
exten => s,4,NoOp(GRABACION DE LLAMADA ENTRANTE ACTIVADA PARA EXT: ${ARG2})
exten => s,5,Set(HOME=/var/spool/asterisk/monitor/)
exten => s,6,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,7,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,8,System(sh /usr/local/sbin/checkDayDir.sh ${MES} ${DIA})
exten => s,9,MixMonitor(/var/spool/asterisk/monitor/${MES}/${DIA}/IN-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${ARG1}-${ARG2}.gsm,b)
exten => s,10,Goto(s-EXIT,1)
exten => s,11,NoOp(GRABACION ENTRANTE DESACTIVADA PARA EXT: ${ARG2})
exten => s,12,Goto(s-EXIT,1)

exten => s,103,NoOp(NO SE HA DEFINIDO CONTROL DE GRABACION PARA EXT: ${ARG2})
exten => s,104,Goto(s-EXIT,1)
;
exten => s-EXIT,1,MacroExit
[macro-outrecordingcheck]
exten => s,1,NoOp(VERIFICACION DE CONTROL DE GRABACION PARA EXT: ${ARG1})
exten => s,2,GotoIf(${DB_EXISTS(LOCALEXT/Ext-${ARG1})}?AGENT:3)
exten => s,3,GotoIf(${DB_EXISTS(CALLRECORD/${ARG1})}?4:104)
exten => s,4,GotoIf($[$["${DB_RESULT}" = "OUT"] | $["${DB_RESULT}" = "ALL"]]?7:5)
exten => s,5,NoOp(GRABACION SALIENTE DESACTIVADA PARA EXT: ${ARG1})
exten => s,6,Goto(s-EXIT,1)
;
exten => s,7,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,8,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,9,System(sh /usr/local/sbin/checkDayDir.sh ${MES} ${DIA})
;
exten => s,10,MixMonitor(/var/spool/asterisk/monitor/${MES}/${DIA}/OUT-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${ARG1}-${ARG2}.gsm,b)
exten => s,11,NoOp(GRABACION SALIENTE ACTIVADA PARA EXT: ${ARG1}!!!)
exten => s,12,Goto(s-EXIT,1)
;
exten => s,104,NoOp(NO SE HA DEFINIDO CONTROL DE GRABACION PARA EXT: ${ARG1})
exten => s,105,Goto(s-EXIT,1)
exten => s,n(AGENT),NoOp(AGENTE REGISTRADO EN LA EXTENSION: ${ARG1})
exten => s,n,Set(AGENTE=${DB(LOCALEXT/Ext-${ARG1})})
exten => s,n,Set(MES=${STRFTIME(${EPOCH},,%Y%m)})
exten => s,n,Set(DIA=${STRFTIME(${EPOCH},,%d)})
exten => s,n,System(sh /usr/local/sbin/checkAgentDir.sh ${MES} ${DIA})
exten => s,n,MixMonitor(/var/spool/asterisk/monitor/agents/${MES}/${DIA}/AGENTOUT-${AGENTE}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${ARG1}-${ARG2}.gsm,b)
exten => s,n,Goto(s-EXIT,1)
;
exten => s-EXIT,1,MacroExit
[macro-call-limit]
; Macro de Extensiones con control de llamada simultanea
;
exten => s,1,Set(GROUP()=${MACRO_EXTEN})
exten => s,2,Set(GROUPCOUNT=${GROUP_COUNT(${MACRO_EXTEN})})
exten => s,3,GotoIf($[${GROUPCOUNT} > ${INCOMING_LIMIT}]?100)
exten => s,4,Dial(SIP/${MACRO_EXTEN},30)
exten => s,5,Goto(s-${DIALSTATUS},1)

exten => s,100,NoOp(Agente en ${MACRO_EXTEN} sobrepasa limite de ${INCOMING_LIMIT})
exten => s,105,1,Goto(s-BUSY,1)

exten => s-BUSY,1,Noop(Agente en ${MACRO_EXTEN} ocupado)
exten => s-NOANSWER,1,NoOp(Agente en ${MACRO_EXTEN} no contesta)
exten => _s-.,1,Noop(Agente en ${MACRO_EXTEN} no recibe llamada por estado: ${EXTEN})

[macro-checktimelimit]
; Macro para control de tiempo en llamadas salientes
;
; ARG1 = extension que hace la llamada
;
exten => s,1,NoOp(VERIFICACION DE CONTROL DE TIEMPO PARA EXT: ${ARG1})
exten => s,2,GotoIf(${DB_EXISTS(TEMPORIZADOR/${ARG1})}?3:6)
exten => s,3,NoOp(Limite de Tiempo: ${DB_RESULT} en extension: ${ARG1})
exten => s,4,Set(DIALOPTS=tTrwWS(${DB_RESULT}))
exten => s,5,Goto(s-EXIT,1)
exten => s,6,NoOp(Sin Limite de Tiempo para extension: ${ARG1})
exten => s,7,Set(DIALOPTS=tTrwW)
exten => s,8,Goto(s-EXIT,1)
;
exten => s-EXIT,1,MacroExit

[funcion-desvioinmediato]
;
exten => _7102,1,Answer
exten => _7102,2,Read(EXTDESV,call-forward,3)
exten => _7102,3,Set(DB(DESVIOIM/${CALLERID(num)})=${EXTDESV})
exten => _7102,4,Playback(call-forwarding)
exten => _7102,5,Playback(beep)
exten => _7102,6,Hangup

; Cancelar el desvio de una extension (*72)
; Solicita marcar 1 para cancelar el desvio
;
exten => _7100,1,Answer
;exten => _7100,2,Read(ANULDESV,call-forward)
;exten => _7100,3,GotoIf($["${ANULDESV}" = "1"]?4:2)
exten => _7100,2,Set(delvar=${DB_DELETE(DESVIOIM/${CALLERID(num)})})
exten => _7100,3,Playback(call-fwd-cancelled)
exten => _7100,4,Hangup

exten => _7106,1,Answer
exten => _7106,2,Read(EXTDESV,call-forward,9)
exten => _7106,3,Set(DB(DESVIOIM/${CALLERID(num)})=${EXTDESV})
exten => _7106,4,Playback(call-forwarding)
exten => _7106,5,Playback(beep)
exten => _7106,6,Hangup

[desvios]
exten => _*9.,1,NoOp(${EXTEN})
exten => _*9.,n,Set(Aux=${EXTEN:2})
exten => _*9.,n,GotoIf($[${LEN(${Aux})} = 7]?desloclat:descellat)
exten => _*9.,n(desloclat),Dial(Dahdi/g0/${EXTEN:2},60)
exten => _*9.,n(descellat),Dial(Dahdi/g1/${EXTEN:2},60)
exten => _*9.,n,Busy()
exten => _*9.,n,Hangup
***************Archivo extensions_macros.conf*******************************
[anexos]

exten => 701,1,Macro(stdexten,701)
exten => 700,1,Macro(stdexten,700)
exten => 702,1,Macro(stdexten,702)
exten => 703,1,Macro(stdexten,703)
exten => 800,1,Macro(stdexten,800)
exten => 801,1,Macro(stdexten,801)
exten => 802,1,Macro(stdexten,802)
exten => 803,1,Macro(stdexten,803)
exten => 804,1,Macro(stdexten,804)
exten => 805,1,Macro(stdexten,805)
exten => 806,1,Macro(stdexten,806)
; this is the same from 807 to 822
exten => 2001,1,Macro(stdexten,2001)
exten => 4500,1,Macro(stdexten,4500)
exten => 3960,1,Macro(stdexten,3960)
exten => 3970,1,Macro(stdexten,3970)
exten => 3900,1,Macro(stdexten,3900)
exten => 3901,1,Macro(stdexten,3901)

*******************Archivo extensions_entrada.conf***************************
[mde-g1]
;include => latin
include => cel-local
;include => cel-local-gratis
;include => cel-local123

;exten => 8XX,1,Dial(SIP/${EXTEN})
;exten => _9XX.,1,Dial(Dahdi/11/${EXTEN})

exten => s,1,Set(TIMEOUT(digit)=10)
exten => s,n,Set(TIMEOUT(response)=30)
;exten => s,n,DISA(no-password|latin) 

;exten => s,n,Dial(SIP/${EXTEN})

;exten => s,2,Dial(SIP/802)
;exten => s,2,Dial(SIP/800)

;exten => _8XX,1,Dial(SIP/${EXTEN})
;exten => _8XX,2,Congestion

exten => _[1-7]XXXXXX,1,Dial(DAHDI/1/${EXTEN},,TtRr)
exten => _[1-7]XXXXXX,2,Busy

exten => _8XX,1,Macro(stdexten,${EXTEN})

[from-zaptel]

exten => s,1,Answer()
exten => s,n,Set(TIMEOUT(digit)=10)
exten => s,n,Set(TIMEOUT(response)=30)
exten => s,n,Dial(DAHDI/g1/165)
exten => s,n,Hangup()

exten => 0,1,Goto(anexos,101,1)
exten => 1,1,Goto(anexos,218,1)
exten => 2,1,Goto(anexos,103,1)
exten => 3,1,Goto(anexos,110,1)
exten => 4,1,Goto(anexos,105,1)
exten => 5,1,Goto(anexos,304,1)
exten => 6,1,Goto(anexos,402,1)

;para tomar las llamadas de avaya
include => avayaarg-entrada
include => conferencia
include => anexos
;include => pruebas
include => directos
include => local
include => cel-local
include => internacional

[ivrcampo]
exten => s,1,Answer()
exten => s,n,Background(/opt/ivrcampo)
exten => s,n,WaitExten(3)
;ENTRADA INVALIDA
exten => i,1,Playback(invalid)
exten => i,n,Goto(entrada,7129401,2)
;TIEMPO EXCEDIDO
exten => t,1,Dial(IAX2/402,60,r)
;OPCIONES
exten => 1,1,Goto(anexos,403,1)
exten => 2,1,Goto(anexos,402,1)
exten => 3,1,Goto(anexos,405,1)
exten => 4,1,Goto(anexos,404,1)

[chip-celular]
exten => s,1,Answer()
exten => s,n,Background(/opt/ivrlatin)
exten => s,n,WaitExten(3)
;exten => i,1,Playback(invalid)
exten => i,1,Goto(chip-celular,s,1)
exten => t,1,Dial(SIP/101,60,r)

exten => 0,1,Goto(anexos,101,1)
exten => 1,1,Goto(anexos,218,1)
exten => 2,1,Goto(anexos,103,1)
exten => 3,1,Goto(anexos,110,1)
exten => 4,1,Goto(anexos,105,1)
exten => 5,1,Goto(anexos,304,1)
exten => 6,1,Goto(anexos,402,1)

exten => _54XXXX,1,Dial(H323/${EXTEN:2}@10.0.0.201:1720,40,TtwW)

[chip-celular-campo]
exten => s,1,Answer()
exten => s,n,Background(/opt/ivrcampo)
exten => s,n,WaitExten(3)
;ENTRADA INVALIDA
exten => i,1,Playback(invalid)
exten => i,n,Goto(entrada,7129401,2)
;TIEMPO EXCEDIDO
exten => t,1,Dial(IAX2/402,60,r)
;OPCIONES
exten => 1,1,Goto(anexos,403,1)
exten => 2,1,Goto(anexos,402,1)
exten => 3,1,Goto(anexos,405,1)
exten => 4,1,Goto(anexos,404,1)


*****************Archivo extensions_funciones.conf*************
;--------------------------------------------------------------------------------------------------------
;********************************************************************************************************
;								FUNCIONES
;********************************************************************************************************
;-------------------------------------------------------------------------------------------------------

[funciones]

;*******************----------------------		Correo de Voz	----------------------***************

exten => *98,1,VoicemailMain(${CALLERID(num)})
exten => *98,n,Hangup

exten => *97,1,VoicemailMain()
exten => *97,n,Hangup

exten => 701,1,Playback(vm-enter-num-to-call)
exten => 701,2,Hangup()

;*******************----------------------		No Molestar	----------------------**************

;Activado
exten => 70,1,Answer()
exten => 70,n,Wait(0.5)
exten => 70,n,Playback(do-not-disturbed)
exten => 70,n,Set(DB(funciones/${CALLERID(num)}/DND/Status)=1)
exten => 70,n,Playback(activated)
exten => 70,n,Wait(2)
exten => 70,n,Hangup

;Desactivado
exten => 71,1,Answer()
exten => 71,n,Wait(0.5)
exten => 71,n,Playback(do-not-disturbed)
exten => 71,n,Set(DB(funciones/${CALLERID(num)}/DND/Status)=0)
exten => 71,n,Playback(de-activated)
exten => 71,n,Wait(2)
exten => 71,n,Hangup

;*******************---------------------		Llamada en espera	------------------*********

;Activado
exten => 72,1,Answer()
exten => 72,n,Wait(0.5)
exten => 72,n,Playback(call-waiting)
exten => 72,n,Set(DB(funciones/${CALLERID(num)}/ESPERA/Status)=1)
exten => 72,n,Playback(activated)
exten => 72,n,Wait(2)
exten => 72,n,Hangup

;Desactivado
exten => 73,1,Answer()
exten => 73,n,Wait(0.5)
exten => 73,n,Playback(call-waiting)
exten => 73,n,Set(DB(funciones/${CALLERID(num)}/ESPERA/Status)=0)
exten => 73,n,Playback(de-activated)
exten => 73,n,Wait(2)
exten => 73,n,Hangup

;*******************----------------------		Jalar Llamada	----------------------**************

exten => _77.,1,Pickup(${EXTEN:2})

;*******************----------------------		Conferencias	----------------------**************

[conferencia]
exten => 800,1,Meetme(800,M)
exten => 801,1,Meetme(801,M)
exten => 802,1,Meetme(802,M)
exten => 803,1,Meetme(803,M)
exten => 804,1,Meetme(804,M)
exten => 805,1,Meetme(805,M)

;*******************----------------------		Desvio de Llamadas----------------------*************

[desvio]
exten => 81,1,Answer()
exten => 81,n,Wait(0.5)
exten => 81,n,Playback(call-forward)
exten => 81,n,Read(NUM_DESV,enter-num,0,,5,5)
exten => 81,n,Agi(compara.agi.pl,${NUM_DESV})
exten => 81,n,GotoIf($["${NRO}" = "INTERNO"]?set)
exten => 81,n,GotoIf($["${NRO}" = "EXTERNO"]?pass)
exten => 81,n,Playback(invalid)
exten => 81,n,Hangup
exten => 81,n(pass),Read(CLAVE,pass,0,,5,5)
exten => 81,n,Agi(desvio.agi.pl,${NUM_DESV},${CLAVE})
exten => 81,n,GotoIf($["${DESV}" = "CORRECTO"]?set)
exten => 81,n,Playback(invalid)
exten => 81,n,Hangup
exten => 81,n(set),Set(DB(funciones/${CALLERID(num)}/DESVIO/Nuevonum)=${NUM_DESV})
exten => 81,n,Set(DB(funciones/${CALLERID(num)}/DESVIO/Status)=1)
exten => 81,n,Playback(call-forward)
exten => 81,n,Playback(activated)
exten => 81,n,Wait(2)
exten => 81,n,Hangup

;Desactivado
exten => 82,1,Answer()
exten => 82,n,Wait(0.5)
exten => 82,n,Set(DB(funciones/${CALLERID(num)}/DESVIO/Status)=0)
exten => 82,n,Playback(call-forward)
exten => 82,n,Playback(de-activated)
exten => 82,n,Wait(2)
exten => 82,n,Hangup

;*******************------------------- 	Directos		----------------------*******************

[directos]
;exten => 7129415,1,Goto(anexos,107,1)
;exten => 7129416,1,Goto(anexos,201,1)
;exten => 7129417,1,Goto(anexos,206,1)
;exten => 7129418,1,Goto(anexos,203,1)
;exten => 7129419,1,Goto(anexos,204,1)
;exten => 7129420,1,Goto(anexos,205,1)
;exten => 7129421,1,Goto(anexos,301,1)
;exten => 7129422,1,Goto(anexos,401,1)
;exten => 7129423,1,Goto(anexos,212,1)
;exten => 7129424,1,Goto(anexos,402,1)
;exten => 7129429,1,Goto(anexos,112,1)
;exten => 7129411,1,Goto(anexos,399,1)

;*******************--------------		Mensaje		------------------*******************

[msje]
exten => s,1,Background(/opt/no_disponible)
exten => s,n,WaitExten(4)

exten => 0,1,Goto(anexos,101,1)

exten => *,1,Background(vm-enter-num-to-call)
exten => *,n,WaitExten(4)
exten => t,1,Goto(anexos,101,1)
exten => i,1,Goto(msje,s,1)

exten => 1,1,Playback(buzon/frase1)
exten => 1,n,Voicemail(${Anexo},su)

include => anexos

**********Archivo extensions_salidas.conf  *******************

[anexos-panasonic]
exten => _[1-6]XX,1,Dial(DAHDI/g1/${EXTEN},30,Ttr)
exten => _[1-6]XX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
exten => _[1-6]XX,n(unavail), Voicemail(600,u)
exten => _[1-6]XX,n,Hangup
exten => _[1-6]XX,n(busy), Voicemail(600,b)
exten => _[1-6]XX,n,Hangup()

[gratis]
exten => _9080[01].,1,Dial(Dahdi/g0/${EXTEN:1},60)
exten => _9080[01].,n,Busy()
exten => _9080[01].,n,Hangup

exten => _910X,1,Dial(Dahdi/g0/${EXTEN:1},60)
exten => _910X,n,Busy()
exten => _910X,n,Hangup

[local]
;exten => _[2-7]XXXXXX,1,Authenticate(/etc/asterisk/codigo_local,a)
exten => _9[2-7]XXXXXX,1,Dial(DAHDI/1/${EXTEN:1},60,Ttr)
;exten => _9[2-7]XXXXXX,2,Dial(DAHDI/g1/9${EXTEN:1},60,Ttr)
exten => _9[2-7]XXXXXX,n,Busy()
exten => _9[2-7]XXXXXX,n,Hangup

[nacional]
;exten => _90ZX[2-7]XXXXX,1,Authenticate(/etc/asterisk/codigo_nacional,a)
exten => _90ZX[2-7]XXXXX,1,Dial(Dahdi/1/${EXTEN:1},60)
exten => _90ZX[2-7]XXXXX,n,Busy()
exten => _90ZX[2-7]XXXXX,n,Hangup

[cel-local]
;exten => _9[489]XXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_local,a)
exten => _99XXXXXXXX,1,Dial(DAHDI/11/${EXTEN:1},60)
exten => _99XXXXXXXX,2,Dial(DAHDI/12/${EXTEN:1},60)
;exten => _99XXXXXXXX,3,Playback(invalid)
exten => _99XXXXXXXX,3,Hangup

[cel-localrpc]
;exten => _9[489]XXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_local,a)
exten => _99XXXXXXXX,1,Set(RPC=${EXTEN:1:6})
exten => _99XXXXXXXX,2,GotoIf($["${RPC}" = "989021"]?3:5) 
;exten => _99XXXXXXXX,1,GotoIf($["${CALLERID(num):0:7}" = "9890219"]?2:5)
exten => _99XXXXXXXX,3,Dial(DAHDI/11/${EXTEN:1},60)
exten => _99XXXXXXXX,4,Dial(DAHDI/12/${EXTEN:1},60)
;exten => _99XXXXXXXX,5,Playback(invalid)
exten => _99XXXXXXXX,5,Hangup

;[cel-local-gratis]
;exten => _9[489]XXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_local,a)
;exten => _998902XXXX,1,Dial(DAHDI/11/${EXTEN:1},60)
;exten => _998902XXXX,n,Dial(DAHDI/12/${EXTEN:1},60)
;exten => _998902XXXX,n,Busy()
;exten => _998902XXXX,n,Hangup

[cel-local123]
exten => _60XXXX9XXXXXXXXX,1,Set(SALIDA=${EXTEN:2:4})
exten => _60XXXX9XXXXXXXXX,2,Set(NUMERO=${EXTEN:7:9})
exten => _60XXXX9XXXXXXXXX,3,GotoIf(${DB_EXISTS(CELULAR/${SALIDA})}?4:7)
exten => _60XXXX9XXXXXXXXX,4,Dial(DAHDI/11/${EXTEN:7:9},60)
exten => _60XXXX9XXXXXXXXX,5,Dial(DAHDI/12/${EXTEN:7:9},60)
exten => _60XXXX9XXXXXXXXX,6,hangup
exten => _60XXXX9XXXXXXXXX,7,Playback(agent-incorrect)
exten => _60XXXX9XXXXXXXXX,8,hangup

;exten => _60XXXX9XXXXXXXXX,1,Set(SALIDA=${EXTEN:2:4})
;exten => _60XXXX9XXXXXXXXX,2,Set(NUMERO=${EXTEN:7:9})
;exten => _60XXXX9XXXXXXXXX,3,GotoIf(${DB_EXISTS(CELULAR/${SALIDA})}?4:7)
;exten => _60XXXX9XXXXXXXXX,4,Dial(DAHDI/11/${EXTEN:7:9},60)
;exten => _60XXXX9XXXXXXXXX,5,Dial(DAHDI/12/${EXTEN:7:9},60)
;exten => _60XXXX9XXXXXXXXX,6,hangup
;exten => _60XXXX9XXXXXXXXX,7,Playback(agent-incorrect)
;exten => _60XXXX9XXXXXXXXX,8,hangup

[cel-nacional]
;exten => _90ZX[89]XXXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_nacional,a)
exten => _90XX9XXXXXXXX,1,Dial(Dahdi/11/${EXTEN:1},60)
exten => _90XX9XXXXXXXX,n,Dial(Dahdi/12/${EXTEN:1},60)
exten => _90XX9XXXXXXXX,n,Busy()
exten => _90XX9XXXXXXXX,n,Hangup

;-----------------------------------------------------------------------
exten => _99[4-7]XXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_nacional,a)
exten => _99[4-7]XXXXXXX,n,Dial(Dahdi/g1/${EXTEN:1},60)
exten => _99[4-7]XXXXXXX,n,Busy()
exten => _99[4-7]XXXXXXX,n,Hangup

exten => _998[2-4]XXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_nacional,a)
exten => _998[2-4]XXXXXX,n,Dial(Dahdi/g1/${EXTEN:1},60)
exten => _998[2-4]XXXXXX,n,Busy()
exten => _998[2-4]XXXXXX,n,Hangup

[internacional]
exten => _900.,1,Authenticate(/etc/asterisk/codigo_internacional,a)
exten => _900.,n,Dial(Dahdi/g0/${EXTEN:1},60)
exten => _900.,n,Busy()
exten => _900.,n,Hangup

[saldir]
exten => _[2-7]XXXXXX,1,Dial(Dahdi/g0/${EXTEN},30,TtRr)
exten => _[2-7]XXXXXX,n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
exten => _[2-7]XXXXXX,n(unavail), Voicemail(600,u)
exten => _[2-7]XXXXXX,n,Hangup
exten => _[2-7]XXXXXX,n(busy), Voicemail(600,b)
exten => _[2-7]XXXXXX,n,Hangup()

exten => _9[89]XXXXXXX,n,Dial(Dahdi/g1/${EXTEN},60)
exten => _9[89]XXXXXXX,n,Busy()
exten => _9[89]XXXXXXX,n,Hangup

;**************''''''''''''''//////////////////////**************''''''''''''''//////////////////////**************''''''''''''''//////////////////////**************'''''''''''''
;**************''''''''''''''//////////////////////**************			SALIDAS PARA CAMPO		   ''''''''''''''//////////////////////**************'''''''''''''
;**************''''''''''''''//////////////////////**************''''''''''''''//////////////////////**************''''''''''''''//////////////////////**************'''''''''''''

[campo]
;---------	Celular
;Local
exten => _99[89]XXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_local,a)
exten => _99[89]XXXXXXX,n,Dial(Dahdi/g2/${EXTEN:1},60)
exten => _99[89]XXXXXXX,n,Busy()
exten => _99[89]XXXXXXX,n,Hangup
;Nacional
exten => _90ZX[89]XXXXXXXX,1,Authenticate(/etc/asterisk/codigo_celular_nacional,a)
exten => _90ZX[89]XXXXXXXX,n,Dial(Dahdi/g2/${EXTEN:1},60)
exten => _90ZX[89]XXXXXXXX,n,Busy()
exten => _90ZX[89]XXXXXXXX,n,Hangup

;Funciones
;include => local
include => conferencia
include => desvio
include => funciones
include => anexos
include => gratis
include => salidas-local-campo
include => nacional
include => internacional
include => avayaarg
include => avayaarg-entrada
;exten => _X.,hint,NoOp()

[salidas-local-campo]
;exten =>_9[2-7]XXXXXX,1,Noop(${EXTEN})
;exten =>_9[2-7]XXXXXX,n,set(ANE=${CALLERID})
;exten =>_9[2-7]XXXXXX,1,agi(llamadas.php)
;exten =>_9[2-7]XXXXXX,n,set(Tiempo=$[${VAL}])
;exten =>_9[2-7]XXXXXX,n,GotoIf($[${Tiempo} < 1]?nocre)
;exten =>_9[2-7]XXXXXX,n,GotoIf($[${Tiempo} >= 1]?llama)
;exten =>_9[2-7]XXXXXX,n,Playback(invalid)
;exten =>_9[2-7]XXXXXX,n,Hangup
;exten =>_9[2-7]XXXXXX,n(nocre),Playback(bye)
;exten =>_9[2-7]XXXXXX,n,Hangup
;exten =>_9[2-7]XXXXXX,n(llama),Authenticate(/etc/asterisk/codigo_local,a)
exten =>_9[2-7]XXXXXX,1,Authenticate(/etc/asterisk/codigo_local,a)
;exten =>_9[2-7]XXXXXX,n,set(Limite=$[${VAL}*60000])
;exten =>_9[2-7]XXXXXX,n,Playback(vm-youhave) 
;exten =>_9[2-7]XXXXXX,n,saynumber(${Tiempo},c)
;exten =>_9[2-7]XXXXXX,n,Playback(vm-minutes)
;exten =>_9[2-7]XXXXXX,n,Dial(Dahdi/g0/${EXTEN:1},30,TtrL(${Limite}:60000:30000)); esta en milisegundos 1 seg=1000; 1 min=60000
;exten =>_6749[2-7]XXXXXX,n,Dial(Dahdi/g0/${EXTEN:1},30,Ttr)
;exten =>_6749[2-7]XXXXXX,n,Busy()
;exten =>_6749[2-7]XXXXXX,n,Hangup
;exten =>_9[2-7]XXXXXX,n,DeadAGI(upllamadas.php)

***********Archivo extensions_desvio.conf  ****************
[pruebas]
include => funcion-desvioinmediato

exten => 561,1,Macro(stdexten,561)
exten => 101,1,Macro(stdexten,101)
exten => 399,1,Macro(stdexten,399)
exten => 300,1,Macro(stdexten,300)

[funcion-desvioinmediato]
;
exten => _*71,1,Answer
exten => _*71,n,Playback(call-forward)
exten => _*71,n,Read(EXTDESV,enter-num,0,,5,5)
exten => _*71,n,Gotoif($[ "${LEN(${EXTDESV})}" > "4"]?pass:interno)
exten => _*71,n(pass),Authenticate(/etc/asterisk/codigo_desvio,a)
exten => _*71,n,Set(DB(DESVIOIM/${CALLERID(num)})=${EXTDESV})
exten => _*71,n,Playback(call-forwarding)
exten => _*71,n,Playback(added)
exten => _*71,n,Playback(beep)
exten => _*71,n,Hangup
exten => _*71,n(interno),Set(DB(DESVIOIM/${CALLERID(num)})=${EXTDESV})
exten => _*71,n,Playback(call-forwarding)
exten => _*71,n,Playback(added)
exten => _*71,n,Playback(beep)
exten => _*71,n,Hangup

; Cancelar el desvio de una extension (*72)
;
exten => _*72,1,Answer
exten => _*72,n,Playback(call-forward)
exten => _*72,n,Set(delvar=${DB_DELETE(DESVIOIM/${CALLERID(num)})})
exten => _*72,n,Playback(call-fwd-cancelled)
exten => _*72,n,Hangup

[macro-stdexten]
;

;1) Inicio: Verificacion tipo extension
;exten => s,1,Set(CHECK_EXTEN=${EXTEN})
exten => s,1,Set(CHECK_EXTEN=${MACRO_EXTEN})

;2) Revisar opciones de desvio de llamada
exten => s,n(checkforward),NoOp(EXTEN SOLICITADA: ${DIAL_EXTEN})
exten => s,n,GotoIf(${DB_EXISTS(DESVIOIM/${MACRO_EXTEN})}?numdesvio:nodesvio)
exten => s,n(numdesvio),Gotoif($[ "${LEN(${DB_RESULT})}" > "4"]?calle:desvio)  
exten => s,n(calle),Dial(DAHDI/g1/${DB_RESULT},60)
exten => s,n(desvio),NoOp(EXTENSION ${DIAL_EXTEN} DESVIADA A ${DB_RESULT})
exten => s,n,Set(CHECK_EXTEN=${DB_RESULT})
exten => s,n,Gosub(checktechtype)
exten => s,n(nodesvio),NoOp(NO DESVIO, EXTEN DESTINO: ${DIAL_EXTEN} -- CHECK EXTEN: ${CHECK_EXTEN})

; Subrutina CHECKTECHTYPE
exten => s,n(checktechtype),NoOp(Revisando disponibilidad de SIP/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(SIP/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "SIP/${CHECK_EXTEN}"]?writesip:checkiax)
exten => s,n(writesip),Set(TECHTYPE1=SIP)
exten => s,n,NoOp(TECHTYPE1=${TECHTYPE1})
exten => s,n(checkiax),NoOp(Revisando disponibilidad de IAX2/${CHECK_EXTEN}...)
exten => s,n,ChanIsAvail(IAX2/${CHECK_EXTEN})
exten => s,n,GotoIf($["${AVAILORIGCHAN}" = "IAX2/${CHECK_EXTEN}"]?writeiax:choicedial)
exten => s,n(writeiax),Set(TECHTYPE2=IAX)
exten => s,n,NoOp(TECHTYPE2=${TECHTYPE2})
exten => s,n,Goto(choicedial)
exten => s,n(choicedial),NoOp(ChoiceDial)
exten => s,n,GotoIf($[$["${TECHTYPE1}" = "SIP"] && $["${TECHTYPE2}" = "IAX"]]?isboth)
exten => s,n,GotoIf($[$["${TECHTYPE1}" = "SIP"] && $["${TECHTYPE2}" = ""]]?issip)
exten => s,n,GotoIf($[$["${TECHTYPE1}" = ""] && $["${TECHTYPE2}" = "IAX"]]?isiax)
exten => s,n,Goto(checkvoicemail)

exten => s,n(issip),Set(DIAL_EXTEN=SIP/${CHECK_EXTEN})
exten => s,n,Return()
exten => s,n(isiax),Set(DIAL_EXTEN=IAX2/${CHECK_EXTEN})
exten => s,n,Return()
exten => s,n(isboth),Set(DIAL_EXTEN="SIP/${CHECK_EXTEN}&IAX2/${CHECK_EXTEN}")
exten => s,n,Return()

; Bloque CHECKVOICEMAIL
exten => s,n(checkvoicemail),MailboxExists(${CHECK_EXTEN})
exten => s,n,NoOp(VOICEMAIL STATUS: ${VMBOXEXISTSSTATUS})
exten => s,n,GotoIf($["${VMBOXEXISTSSTATUS}" = "FAILED"]?s-CHANUNAVAIL,1)
exten => s,n,Goto(s-NOANSWER,1)

; Bloque de Cierre de Llamada
exten => s-ANSWER,1,Goto(s-CLEANEXIT,2)
;
exten => s-BUSY,1,Voicemail(b${MACRO_EXTEN})
exten => s-BUSY,2,Goto(s-CLEANEXIT,1)
;
exten => s-CANCEL,1,Goto(s-CLEANEXIT,1)
;
exten => s-CHANUNAVAIL,1,Playback(pbx-invalid)
exten => s-CHANUNAVAIL,n,Goto(s-CLEANEXIT,1)
;
exten => s-NOANSWER,1,Voicemail(u${MACRO_EXTEN})
exten => s-NOANSWER,n,Goto(s-CLEANEXIT,1)
;
exten => s-.,1,Goto(s-CLEANEXIT,1)
;
exten => s-CLEANEXIT,1,Hangup
exten => s-CLEANEXIT,2,NoOp

As you can observe in the configuration show above any extension (from 801 to 822) can call to external network (to pstn, to cellular network, to international call, etc).
The request is that the new user that I must be create can not call to external network. Please, Correct me if I’m wrong. If I add another contect (“forinternaluseonly”), like this

..............
...............

[default]
exten => _X.,1,Congestion()

[latin]
include => funcion-desvioinmediato
include => anexos-panasonic
;include => desvio
include => anexos
include => local
include => nacional
include => cel-local123
include => cel-localrpc
include => cel-nacional
include => internacional
exten => _X.,hint,NoOp()

[forinternaluseonly]
include => funcion-desvioinmediato
include => anexos-panasonic
include => anexos
exten => _X.,hint,NoOp()

#include extensions_anexos.conf
#include extensions_macros.conf
#include extensions_entrada.conf
#include extensions_funciones.conf
#include extensions_salidas.conf
#include extensions_desvio.conf

And assign this new context “forinternaluseonly” to new extention that I will be create like these for example:

[830]
qualify=yes
nat=no
pickupgroup=1
callerid=<830>
context=forinternaluseonly
call-limit=99
canreinvite=no
vexten=830
host=dynamic
username=830
callgroup=1
subscribecontext=hints
dtmfmode=rfc2833
type=friend
mailbox=830
disallow=all
allow=alaw,ulaw

[831]
qualify=yes
nat=no
pickupgroup=1
callerid=<831>
context=forinternaluseonly
call-limit=99
canreinvite=no
vexten=831
host=dynamic
username=831
callgroup=1
subscribecontext=hints
dtmfmode=rfc2833
type=friend
mailbox=831
disallow=all
allow=alaw,ulaw

These new extention (830 and 831) could call to old extension (801 to 822)???
These new extention (830 and 831) could call to old analog extension?? (The asterisk is connecting to analog PBX by E1 Trunk. This PBX has analogs extensions)
These new extention can not call to externat network???
From the external network is posible to call to this new extention (830 and 831).
In resume, The new extensions that I must be create can not call to external network (pstn, cellular network), any other possible the new extension can do

I hope your comments / suggestion