1. Bicom Systems
  2. Solution home
  3. SERVERware
  4. HOWTOs SERVERware 5

HOWTO :: Asterisk dial plan examples

:: Filtring + from inbound CallerID ::


exten => _[+*0-9].,1,Noop(Filtering +...................)

exten => _[+*0-9].,2,GotoIf($["${CALLERID(num):0:1}" = "+"]?3:4)

exten => _[+*0-9].,3,Set(CALLERID(num)=0${CALLERID(num):2})

exten => _[+*0-9].,4,Agi(agi://127.0.0.1)


:: Filtering 33 from inbound CallerID ::


exten => _X.,1,Noop(Filtering 33...................)

exten => _X.,2,GotoIf($["${CALLERID(num):0:2}" = "+1"]?3:4)

exten => _X.,3,Set(CALLERID(num)=0${CALLERID(num):2})

exten => _X.,4,Agi(agi://127.0.0.1)


:: Altering CallerID name and CallerID number ::


[CallplusWholesale]

exten => _X.,1,Noop(Filtering 64...................)

exten => _X.,2,GotoIf($["${CALLERID(num):0:2}" = "64"]?3:6)

exten => _X.,3,Set(CALLERID(num)=0${CALLERID(num):2})

exten => _X.,4,GotoIf($["${CALLERID(name):0:2}" = "64"]?5:6)

exten => _X.,5,Set(CALLERID(name)=0${CALLERID(name):2})

exten => _X.,6,Agi(agi://127.0.0.1)


:: Extracting DID number from TO header if its not sent in INVITE header ::


[quescom]

exten => quescom,1,Set(VAR=${CUT(CUT(SIP_HEADER(To),@,1),:,2)})

exten => quescom,n,Set(VAR=${FILTER(0123456789,${VAR})})

exten => quescom,n,GotoIf($[${LEN(${VAR})} > 0]?go:hangup)

exten => quescom,n(go),GoTo(${VAR},1)

exten => quescom,n(hangup),Hangup()


For version 5 and above:


[quescom]

exten => quescom,1,Set(VAR=${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)})

exten => quescom,n,Set(VAR=${FILTER(0123456789,${VAR})})

exten => quescom,n,GotoIf($[${LEN(${VAR})} > 0]?go:hangup)

exten => quescom,n(go),GoTo(${VAR},1)

exten => quescom,n(hangup),Hangup()


:: Append 0 ::


[TrunkName]

exten => _[*0-9].,1,Noop(Append 0...)

exten => _[*0-9].,2,GotoIf($["${CALLERID(num):0:1}" != "0"]?3:4)

exten => _[*0-9].,3,Set(CALLERID(num)=0${CALLERID(num)})

exten => _[*0-9].,4,Agi(agi://127.0.0.1)


:: Outbound dialling patterns ::


exten => _0044XXX,1,Goto(TrunkContext,44*${EXTEN:-3},1)


exten => _0044XXX,1,Dial(IAX2/44*${EXTEN:-3}@MagratheaIAX)


exten => _112,1,Dial(SIP/31141220${EXTEN}@Trunk1)

exten => _112,2,GotoIf($[${DIALSTATUS}=CHANUNAVAIL]?3)

exten => _112,3,Dial(SIP/31141220${EXTEN}@Trunk2)


[t-xxx]

exten => 911,1,Noop(test)

exten => 911,n,Goto(${CONTEXT},9157441283,1)


:: Routing of inbound call from another system (if local ext is dialled) ::


[Class_Hosted]

exten => _201XXX,1,Goto(transfer-201,${EXTEN},1)


:: Stripping + from inbound DID number (not needed on 4.x versions) ::


[Tele2]

exten => _+X.,1,Goto(Tele2,${EXTEN:1},1)


::Replacing 61 with 0 for DID matching


[Tele2]

exten => _61X.,1,Goto(Tele2,0${EXTEN:2},1)


:: Inbound fax testing with custom conf values ::


[SWS0]

exten => 7144778763,1,Set(FAXOPT(ecm)=yes)

exten => 7144778763,n,Set(FAXOPT(modem)=V27)

exten => 7144778763,n,Set(FAXOPT(maxrate)=4800)

exten => 7144778763,n,Set(FAXOPT(minrate)=2400)

exten => 7144778763,n,Answer()      

exten => 7144778763,n,ReceiveFax(/tmp/bla.tiff,df) 


:: Add different city prefix for 1 extension on a tenant :: 


--------------------------------------------------------

[case1]

exten => _1XXXXX,1,Noop(test)

exten => _1XXXXX,2,GoTo(t-222,0038533${EXTEN},1)

include => case2


[case2]

exten => _[*0-9].,1,GoTo(t-222,${EXTEN},1)

--------------------------------------------------------


Explanation:


t-222 = tenant 222


_1XXXXX = all 6 digit numbers starting with number 1


GoTo(t-222,0038533${EXTEN},1) = If a number confirms the criteria, add a

prefix of 0038533 to it and send it back to the original context, if

not, send it to context case2.


case2 = Any number dialled send to tenant context.


Once added into extensions.conf, reload asterisk and add 'context =

case1' into extensions additional config.



:: Resetting privacy headers for inbound calls ::


exten => _X.,1,Set(CALLERID(num-pres)=allowed)

exten => _X.,2,Set(CALLERID(name-pres)=allowed)

exten => _X.,3,Agi(agi://127.0.0.1)

exten => _X.,4,Hangup();


Set CalleriD name as CallerID number in case Callerid name is received as Anonymous


[Trunk_name]

exten => _X.,1,Noop(Filtering Anonymous...................)

exten => _X.,2,GotoIf($["${CALLERID(name):0:9}" = "Anonymous"]?3:4)

exten => _X.,3,Set(CALLERID(name)=${CALLERID(num)})

exten => _X.,4,Agi(agi://127.0.0.1)

exten => _X.,5,Hangup()


Australia 1300 and 1800 numbers


[t-custom]

exten => _1800.,1,Noop(1800 PREFIX)

exten => _1800.,2,GoTo(${CONTEXT},0${EXTEN},1)

exten => _1300.,1,Noop(1300 PREFIX)

exten => _1300.,2,GoTo(${CONTEXT},0${EXTEN},1)

exten => _13[1-7]XXX,1,Noop(13 PREFIX)

exten => _13[1-7]XXX,2,GoTo(${CONTEXT},0${EXTEN},1)