Here is my sip.conf file
[general]
context=default
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
srvlookup=yes
subscribecontext=device-hints,device-hints,device-hints
subscribecontext=device-hints
subscribecontext=device-hints
allowexternaldomains=yes
allowguest=yes
allowsubscribe=yes
allowtransfer=yes
alwaysauthreject=no
autodomain=no
bindaddr=192.168.16.49
bindport=5060
callevents=no
canreinvite=yes
checkmwi=10
compactheaders=no
defaultexpiry=120
domain=
dtmfmode=
dumphistory=no
externrefresh=10
fromdomain=
g726nonstandard=no
jbenable=no
jbforce=no
jbimpl=
jblog=no
jbmaxsize=
jbresyncthreshold=
language=
maxcallbitrate=384
maxexpiry=3600
minexpiry=60
mohinterpret=default
mohsuggest=
mwi_from=
nat=yes
notifyringing=yes
pedantic=no
progressinband=never
promiscredir=no
realm=asterisk
recordhistory=no
registerattempts=0
registertimeout=20
relaxdtmf=no
rtpholdtimeout=
rtptimeout=
sendrpid=no
sipdebug=no
t1min=100
t38pt_udptl=no
tos_audio=none
tos_sip=none
tos_video=none
trustrpid=no
useragent=Asterisk PBX
usereqphone=no
videosupport=no
localnet=192.168.16.49
disallow=all
allow=ulaw,alaw,gsm,speex
subscribecontext=device-hints
subscribecontext=device-hints
subscribecontext=device-hints
[authentication]
Here is the extensions.conf
[general]
static=yes
writeprotect=no
clearglobalvars=no
[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2
TRUNKMSD=1
FEATURES=
DIALOPTIONS=
RINGTIME=20
FOLLOWMEOPTIONS=
PAGING_HEADER=Intercom
CID_6000=6000
CID_6001=6001
trunk_1=SIP/trunk_1
timeinterval_all_day_every_day=,sun-sat,,*
[dundi-e164-canonical]
[dundi-e164-customers]
[dundi-e164-via-pstn]
[dundi-e164-local]
include=dundi-e164-canonical
include=dundi-e164-customers
include=dundi-e164-via-pstn
[dundi-e164-switch]
switch=DUNDi/e164
[dundi-e164-lookup]
include=dundi-e164-local
include=dundi-e164-switch
[macro-dundi-e164]
exten=s,1,Goto(${ARG1},1)
include=dundi-e164-lookup
[iaxtel700]
exten=_91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel)
[iaxprovider]
[trunkint]
exten=_9011.,1,Macro(dundi-e164,${EXTEN:4})
exten=_9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})
[trunkld]
exten=_91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})
exten=_91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
[trunklocal]
exten=_9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
[trunktollfree]
exten=_91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten=_91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten=_91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
exten=_91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
[international]
ignorepat=9
include=longdistance
include=trunkint
[longdistance]
ignorepat=9
include=local
include=trunkld
[local]
ignorepat=9
include=default
include=trunklocal
include=iaxtel700
include=trunktollfree
include=iaxprovider
include=parkedcalls
[outbound-freenum]
exten=_XX!,1,Goto(outbound-freenum2,${EXTEN},1)
exten=_XXX!,1,Goto(outbound-freenum2,${EXTEN},1)
exten=_XXXX!,1,Goto(outbound-freenum2,${EXTEN},1)
exten=_XXXXX!,1,Goto(outbound-freenum2,${EXTEN},1)
exten=_XXXXXX!,1,Goto(outbound-freenum2,${EXTEN},1)
exten=_XXXXXXX!,1,Goto(outbound-freenum2,${EXTEN},1)
[outbound-freenum2]
exten=_X!,1,Verbose(2,Performing ISN lookup for ${EXTEN})
same=n,Set(SUFFIX=${CUT(EXTEN,*,2-)})
same=n,GotoIf($["${FILTER(0-9,${SUFFIX})}" != “${SUFFIX}”]?fn-CONGESTION,1)
same=n,Set(TIMEOUT(absolute)=10800)
same=n,Set(isnresult=${ENUMLOOKUP(${EXTEN},sip,1,freenum.org)})
same=n,GotoIf($["${isnresult}" != “”]?from)
same=n,Set(DIALSTATUS=CONGESTION)
same=n,Goto(fn-CONGESTION,1)
same=n(from),Set(SIPFROMUSER=${CALLERID(num)})
same=n,GotoIf($["${GLOBAL(FREENUMDOMAIN)}" = “”]?dial)
same=n,Set(SIPFROMDOMAIN=${GLOBAL(FREENUMDOMAIN)})
same=n(dial),Dial(SIP/${isnresult},40)
same=n,Goto(fn-${DIALSTATUS},1)
exten=fn-BUSY,1,Busy()
exten=_f[n]-.,1,NoOp(ISN: ${DIALSTATUS})
same=n,Congestion()
[macro-trunkdial]
exten=s,1,Dial(${ARG1})
exten=s,n,Goto(s-${DIALSTATUS},1)
exten=s-NOANSWER,1,Hangup
exten=s-BUSY,1,Hangup
exten=_s-.,1,NoOp
[stdexten]
exten=_X.,50000(stdexten),NoOp(Start stdexten)
exten=_X.,n,Set(LOCAL(ext)=${EXTEN})
exten=_X.,n,Set(LOCAL(dev)=${ARG1})
exten=_X.,n,Set(LOCAL(cntx)=${ARG2})
exten=_X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? “@${cntx}” :: “”])
exten=_X.,n,Dial(${dev},20)
exten=_X.,n,Goto(stdexten-${DIALSTATUS},1)
exten=stdexten-NOANSWER,1,Voicemail(${mbx},u)
exten=stdexten-NOANSWER,n,NoOp(Finish stdexten NOANSWER)
exten=stdexten-NOANSWER,n,Return()
exten=stdexten-BUSY,1,Voicemail(${mbx},b)
exten=stdexten-BUSY,n,NoOp(Finish stdexten BUSY)
exten=stdexten-BUSY,n,Return()
exten=_stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1)
exten=a,1,VoicemailMain(${mbx})
exten=a,n,Return()
[stdPrivacyexten]
exten=_X.,60000(stdPrivacyexten),NoOp(Start stdPrivacyexten)
exten=_X.,n,Set(LOCAL(ext)=${ARG1})
exten=_X.,n,Set(LOCAL(dev)=${ARG2})
exten=_X.,n,Set(LOCAL(dontcntx)=${ARG3})
exten=_X.,n,Set(LOCAL(tortcntx)=${ARG4})
exten=_X.,n,Set(LOCAL(cntx)=${ARG5})
exten=_X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? “@${cntx}” :: “”])
exten=_X.,n,Dial(${dev},20,p)
exten=_X.,n,Goto(stdexten-${DIALSTATUS},1)
exten=stdexten-NOANSWER,1,Voicemail(${mbx},u)
exten=stdexten-NOANSWER,n,NoOp(Finish stdPrivacyexten NOANSWER)
exten=stdexten-NOANSWER,n,Return()
exten=stdexten-BUSY,1,Voicemail(${mbx},b)
exten=stdexten-BUSY,n,NoOp(Finish stdPrivacyexten BUSY)
exten=stdexten-BUSY,n,Return()
exten=stdexten-DONTCALL,1,Goto(${dontcntx},s,1)
exten=stdexten-TORTURE,1,Goto(${tortcntx},s,1)
exten=_stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1)
exten=a,1,VoicemailMain(${mbx})
exten=a,n,Return
[macro-page]
exten=s,1,ChanIsAvail(${ARG1},s)
exten=s,n,GoToIf($[${AVAILORIGCHAN} = “”]?fail:autoanswer)
exten=s,n(autoanswer),Set(_ALERT_INFO=“RA”)
exten=s,n,SIPAddHeader(Call-Info: Answer-After=0)
exten=s,n,NoOp()
exten=s,n,Dial(${ARG1})
exten=s,n(fail),Hangup
[demo]
include=stdexten
exten=s,1,Wait(1)
exten=s,n,Answer
exten=s,n,Set(TIMEOUT(digit)=5)
exten=s,n,Set(TIMEOUT(response)=10)
exten=s,n(restart),BackGround(demo-congrats)
exten=s,n(instruct),BackGround(demo-instruct)
exten=s,n,WaitExten
exten=2,1,BackGround(demo-moreinfo)
exten=2,n,Goto(s,instruct)
exten=3,1,Set(LANGUAGE()=fr)
exten=3,n,Goto(s,restart)
exten=1000,1,Goto(default,s,1)
exten=1234,1,Playback(transfer,skip)
exten=1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))
exten=1234,n,Goto(default,s,1)
exten=1235,1,Voicemail(1234,u)
exten=1236,1,Dial(Console/dsp)
exten=1236,n,Voicemail(1234,b)
exten=#,1,Playback(demo-thanks)
exten=#,n,Hangup
exten=t,1,Goto(#,1)
exten=i,1,Playback(invalid)
exten=500,1,Playback(demo-abouttotry)
exten=500,n,Dial(IAX2/guest@pbx.digium.com/s@default)
exten=500,n,Playback(demo-nogo)
exten=500,n,Goto(s,6)
exten=600,1,Playback(demo-echotest)
exten=600,n,Echo
exten=600,n,Playback(demo-echodone)
exten=600,n,Goto(s,6)
exten=76245,1,Macro(page,SIP/Grandstream1)
exten=7XXX,1,Macro(page,SIP/${EXTEN})
exten=7999,1,Set(TIMEOUT(absolute)=60)
exten=7999,2,Page(Local/Grandstream1@page&Local/Xlite1@page&Local/1234@page/n,d)
exten=8500,1,VoicemailMain
exten=8500,n,Goto(s,6)
[page]
exten=X.,1,Macro(page,SIP/${EXTEN})
[default]
exten=#6XXX,1,Set(MBOX=${EXTEN:1}@default)
exten=#6XXX,n,VoiceMail(${MBOX})
exten=a,1,VoicemailMain(${MBOX})
exten=*98,1,VoiceMailMain(${CALLERID(num)}@default)
[time]
exten=_X.,30000(time),NoOp(Time: ${EXTEN} ${timezone})
exten=_X.,n,Wait(0.25)
exten=_X.,n,Answer()
exten=_X.,n,Set(FUTURETIME=$[${EPOCH} + 12])
exten=_X.,n,SayUnixTime(${FUTURETIME},Zulu,HNS)
exten=_X.,n,SayPhonetic(z)
exten=_X.,n,SayUnixTime(${FUTURETIME},${timezone},HNS)
exten=_X.,n,Playback(spy-local)
exten=_X.,n,WaitUntil(${FUTURETIME})
exten=_X.,n,Playback(beep)
exten=_X.,n,Return()
[ani]
exten=_X.,40000(ani),NoOp(ANI: ${EXTEN})
exten=_X.,n,Wait(0.25)
exten=_X.,n,Answer()
exten=_X.,n,Playback(vm-from)
exten=_X.,n,SayDigits(${CALLERID(ani)})
exten=_X.,n,Wait(1.25)
exten=_X.,n,SayDigits(${CALLERID(ani)})
exten=_X.,n,Return()
[macro-stdexten]
exten=s,1,Set(_DYNAMIC_FEATURES=${FEATURES})
exten=s,2,Set(ORIG_ARG1=${ARG1})
exten=s,3,GotoIf($["${FOLLOWME${ARG1}}" = “1”]?6:4)
exten=s,4,Dial(${ARG2},${RINGTIME},${DIALOPTIONS})
exten=s,5,Goto(s-${DIALSTATUS},1)
exten=s,6,Macro(stdexten-followme,${ARG1},${ARG2})
exten=s-NOANSWER,1,Voicemail(${ORIG_ARG1},u)
exten=s-NOANSWER,2,Goto(default,s,1)
exten=s-BUSY,1,Voicemail(${ORIG_ARG1},b)
exten=s-BUSY,2,Goto(default,s,1)
exten=_s-.,1,Goto(s-NOANSWER,1)
exten=a,1,VoicemailMain(${ORIG_ARG1})
[macro-stdexten-followme]
exten=s,1,Answer
exten=s,2,Set(ORIG_ARG1=${ARG1})
exten=s,3,Dial(${ARG2},${RINGTIME},${DIALOPTIONS})
exten=s,4,Set(__FMCIDNUM=${CALLERID(num)})
exten=s,5,Set(__FMCIDNAME=${CALLERID(name)})
exten=s,6,Followme(${ORIG_ARG1},${FOLLOWMEOPTIONS})
exten=s,7,Voicemail(${ORIG_ARG1},u)
exten=s-NOANSWER,1,Voicemail(${ORIG_ARG1},u)
exten=s-BUSY,1,Voicemail(${ORIG_ARG1},b)
exten=s-BUSY,2,Goto(default,s,1)
exten=_s-.,1,Goto(s-NOANSWER,1)
exten=a,1,VoicemailMain(${ORIG_ARG1})
[macro-pagingintercom]
exten=s,1,SIPAddHeader(Alert-Info: ${PAGING_HEADER})
exten=s,2,Page(${ARG1},${ARG2})
exten=s,3,Hangup
[conferences]
[ringgroups]
[queues]
[voicemenus]
[voicemailgroups]
[directory]
exten=*97,1,Directory(default,default,)
[page_an_extension]
[pagegroups]
[asterisk_guitools]
exten=executecommand,1,System(${command})
exten=executecommand,n,Hangup()
exten=record_vmenu,1,Answer
exten=record_vmenu,n,Playback(vm-intro)
exten=record_vmenu,n,Record(${var1},0,500,k)
exten=record_vmenu,n,Playback(vm-saved)
exten=record_vmenu,n,Playback(vm-goodbye)
exten=record_vmenu,n,Hangup
exten=play_file,1,Answer
exten=play_file,n,Playback(${var1})
exten=play_file,n,Hangup
[macro-trunkdial-failover-0.3]
exten=s,1,GotoIf($[${LEN(${FMCIDNUM})} > 6]?1-fmsetcid,1)
exten=s,2,GotoIf($[${LEN(${GLOBAL_OUTBOUNDCIDNAME})} > 1]?1-setgbobname,1)
exten=s,3,Set(CALLERID(num)=${IF($[${LEN(${CID_${CALLERID(num)}})} > 2]?${CID_${CALLERID(num)}}:)})
exten=s,n,GotoIf($[${LEN(${CALLERID(num)})} > 6]?1-dial,1)
exten=s,n,Set(CALLERID(all)=${IF($[${LEN(${CID_${ARG3}})} > 6]?${CID_${ARG3}}:${GLOBAL_OUTBOUNDCID})})
exten=s,n,Goto(1-dial,1)
exten=1-setgbobname,1,Set(CALLERID(name)=${GLOBAL_OUTBOUNDCIDNAME})
exten=1-setgbobname,n,Goto(s,3)
exten=1-fmsetcid,1,Set(CALLERID(num)=${FMCIDNUM})
exten=1-fmsetcid,n,Set(CALLERID(name)=${FMCIDNAME})
exten=1-fmsetcid,n,Goto(1-dial,1)
exten=1-dial,1,Dial(${ARG1})
exten=1-dial,n,Gotoif(${LEN(${ARG2})} > 0 ?1-${DIALSTATUS},1:1-out,1)
exten=1-CHANUNAVAIL,1,Dial(${ARG2})
exten=1-CHANUNAVAIL,n,Hangup()
exten=1-CONGESTION,1,Dial(${ARG2})
exten=1-CONGESTION,n,Hangup()
exten=1-out,1,Hangup()
[queue-member-manager]
exten=handle_member,1,Verbose(2, Looping through queues to log in or out queue members)
exten=handle_member,n,Set(thisActiveMember=${CHANNEL(channeltype)}/${CHANNEL(peername)})
exten=handle_member,n,Set(queue_field=1)
exten=handle_member,n,Set(thisQueueXtn=${CUT(QUEUES,${queue_field})})
exten=handle_member,n,While($[${EXISTS(${thisQueueXtn})}])
exten=handle_member,n,Macro(member-loginlogout)
exten=handle_member,n,Set(queue_field=$[${queue_field} + 1])
exten=handle_member,n,Set(thisQueueXtn=${CUT(QUEUES,${queue_field})})
exten=handle_member,n,EndWhile()
[macro-member-loginlogout]
exten=s,1,Verbose(2, Logging queue member in or out of the request queue)
exten=s,n,Set(thisQueue=${thisQueueXtn})
exten=s,n,Set(queueMembers=${QUEUE_MEMBER_LIST(${thisQueue})})
exten=s,n,MacroIf("${queueMembers}" = “”]?q_login)
exten=s,n,Set(field=1)
exten=s,n,Set(logged_in=0)
exten=s,n,Set(thisQueueMember=${CUT(queueMembers,${field})})
exten=s,n,While($[${EXISTS(${thisQueueMember})}])
exten=s,n,GotoIf($["${thisQueueMember}" != “${thisActiveMember}”]?check_next)
exten=s,n,Set(logged_in=1)
exten=s,n,ExitWhile()
exten=s,n(check_next),Set(field=$[${field} + 1])
exten=s,n,Set(thisQueueMember=${CUT(queueMembers,${field})})
exten=s,n,EndWhile()
exten=s,n,MacroIf($[${logged_in} = 0]?q_login:q_logout)
[macro-q_login]
exten=s,1,Verbose(2, Logging ${thisActiveMember} into the ${thisQueue} queue)
exten=s,n,AddQueueMember(${thisQueue},${thisActiveMember})
exten=s,n,Playback(silence/1)
exten=s,n,ExecIf($["${AQMSTATUS}" = “ADDED”]?Playback(agent-loginok):Playback(an-error-has-occurred))
[macro-q_logout]
exten=s,1,Verbose(2, Logged ${thisActiveMember} out of ${thisQueue} queue)
exten=s,n,RemoveQueueMember(${thisQueue},${thisActiveMember})
exten=s,n,Playback(silence/1)
exten=s,n,ExecIf($["${AQMSTATUS}" = “REMOVED”]?Playback(agent-loggedoff):Playback(an-error-has-occurred))
[DID_trunk_1]
include=DID_trunk_1_default
[DID_trunk_1_default]
[DLPN_internal]
include=default
include=parkedcalls
include=conferences
include=ringgroups
include=voicemenus
include=queues
include=voicemailgroups
include=directory
include=pagegroups
include=page_an_extension