USING DID at DialPlan

Hi,
we’re using an Asterisk based PBX as our main.
We have a pair of 902 xxx xxx numbers over an isdn number with six channels.
We wanna process in a different way incoming calls depending upon from wich 902 the calls originate.
Inorder to get that,we have a new DID for the second 902.
How can i process the DDI call and transfer the call to a fixed extension (i.e. 2219) ?

Here it’s how looks like my actual extensions.conf

; Core de llamadas inter-extensiones
#include macro-estado.conf
; Core de servicios (desvios, fuera_oficina …)
#include svc-apps.conf
; Marca de razon de cuelgue
#include macro-resultado-llamada.conf
; Core de black_listing
#include macro-blist.conf
; Core disciminacion de horario
#include macro-horario.conf
; Core disriminacion de fechas
;#include macro-calendario.conf

[general]
static=yes
writeprotect=yes

[globals]

; Numero de cabecera RDSI
numrdsi=937208222

; Grupo para RDSI
; NOTA:
; Variable que define el grupo ZAP al que pertenecen
; los canales de la RDSI

RDSI=ZAP/g0

; Grupo para GSM
; NOTA:
; En caso que no hubiera modulos GSM instalados
; debemos definir la variable con el grupo ZAP
; para llamadas salientes. Es necesario para que
; los desvios a movil desde la macro-estado
; alcancen su objetivo

GSM=ZAP/g1

; Grupo para GSM_INTEGRA
; NOTA:
; En caso que no hubiera modulos GSM instalados
; debemos definir la variable con el grupo ZAP
; para llamadas salientes. Es necesario para que
; los desvios a movil desde la macro-estado
; alcancen su objetivo

GSM_INT=ZAP/g3

; Salida para desvios
; NOTA:
; Es necesario definir esta variable para que las
; llamadas desiadas desde la macro-estado puedan
; alcanzar su destino.
;

DIAL=ZAP/g0

; Num maximo de extension interna
; NOTA:
; Este valor define el numero maximo de ext interna.
; si un desvio es mayor al valor de la variable
; se considerara llamar por PSTN.

MAXEXTEN=8888

; Numero del buzon general

BUZONGENERAL=2214

; definimos una variable para establecer el timeout de la cola
; de llamadas entrantes a la operadora

COLA_TIMEOUT=60

[default]

; el contexto default es donde van por defecto las llamadas si no se
; indica otra cosa

; Evento de cuelge
exten => h,1,ResetCDR(w)
exten => h,2,Macro(resultado-llamada)
; Evento ext invalida
exten => i,1,PlayBack(invalid)
exten => i,2,Hangup() ;invalid event
; Evento TimeOut
exten => t,1,Hangup() ;timeout event

;
;Llamadas entrantes mediante la linea Analogica
;

;Llamadas entrantes

[incoming]

exten => s,1,Goto(incoming,s,300)

exten => s,300,Answer()
exten => s,301,Set(DESTINO=0)
exten => s,302,NoOp(${DESTINO})
exten => s,303,Goto(incoming,s,2)

exten => s,2,Set(LANGUAGE()=es)
exten => s,3,Macro(horario,incoming,s,4)
exten => s,4,goto(incoming,s,30)
exten => s,5,DBget(DND-estado=DND/2200)
exten => s,6,goto(incoming,s,20)
exten => s,106,Background(menubienvenida)
exten => s,107,Background(silence/3)
exten => s,108,goto(incoming,s,8)

exten => s,8,Dial(SIP/2200,25,tTwWm)
exten => s,9,Queue(MyQueue1|tT|||${COLA_TIMEOUT})
exten => s,10,Read(DESTINO,cola,1)
exten => s,11,GotoIf($[${DESTINO} < 3]?12:13)
exten => s,109,Queue(MyQueue1|tT|||${COLA_TIMEOUT})
exten => s,110,Read(DESTINO,cola,1)
exten => s,111,GotoIf($[${DESTINO} < 3]?12:13)
exten => s,20,Background(menubienvenida)
exten => s,21,Background(silence/3)
exten => s,22,Queue(MyQueue1|tT|||${COLA_TIMEOUT})
exten => s,23,Read(DESTINO,cola,1)
exten => s,24,GotoIf($[${DESTINO} < 3]?12:13)

exten => s,12,Goto(incoming|${DESTINO}|1|||3)
exten => s,13,Voicemail(su${BUZONGENERAL})

exten => s,30,GotoIf($[${CALLERID(num):0:1}=6]?5:31)
exten => s,31,Set(CALLERID(num)=${CALLERID(num):1})
exten => s,32,goto(incoming,s,5)

exten => 0,1,Goto(incoming,s,20)
exten => 1,1,Goto(incoming,s,20)
exten => 2,1,Voicemail(sb${BUZONGENERAL})

exten => fax,1,Dial(Zap/14,30,tTwWr)
exten => fax,2,Macro(resultado-llamada)
exten => fax,102,Macro(resultado-llamada)

exten => 2200,1,Dial(SIP/2200,25,tTwWm)
exten => 2200,2,goto(incoming,s,9)
exten => 2200,102,goto(incoming,s,9)

exten => 2201,1,Dial(SIP/2201,25,tTwWm)
exten => 2201,2,goto(incoming,s,9)
exten => 2201,102,goto(incoming,s,9)

exten => 334,1,Set(DESTINO=0)
exten => 334,2,Queue(MyQueue1|tT|||${COLA_TIMEOUT})
exten => 334,3,Read(DESTINO,cola,1)
exten => 334,4,GotoIf($[${DESTINO} < 3]?5:1)
exten => 334,5,goto(incoming,334,1)

s is used when there is no match.

So since you know the actual DID that will be coming in, add an extension line.

Find out how many digits the phone company is passing you. Sometimes, its all of the number, other times, its the last 3 or 4 digits. Depends on how it was setup.

Say 9022222222 is your second DID.

exten => 90222222222,1,Dial(SIP/2219)