#include ext-radius.conf #include ext-radius.conf [general] [general] static=yes static=yes autofallthrough=yes autofallthrough=yes [forbidden] [forbidden] exten => _[*0-9]!,1,NoOp(-- No context for host ${SIPCHANINFO | exten => h,1,Hangup(21) exten => _[*0-9]!,n,Hangup(21) | exten => _[0-9a-zA-Z*+#]!,1,NoOp(-- No context for host ${CHA > same => n,Log(NOTICE,UC from ${CALLERID(name)} ${ > same => n,Hangup(21) [h323-id] [h323-id] exten => _[*0-9]!,1,NoOp(-- H323 ID --) | exten => _[#+*0-9]!,1,NoOp(-- H323 ID --) exten => _[*0-9]!,n,Set(ID=${SIP_HEADER(h323-conf-id)}) | same => n,Set(ID=${SIP_HEADER(h323-conf-id)}) exten => _[*0-9]!,n,ExecIf($[ "${ID}" = "" ],Set,ID=${RAND(30 | same => n,ExecIf($[ "${ID}" = "" ]?Set(ID=${RAND( exten => _[*0-9]!,n,Set(H323_ID=${ID}) | same => n,Set(H323_ID=${ID}) exten => _[*0-9]!,n,Set(H323_ID_HEX=${MATH(${CUT(ID,,1)}+0,he | same => n,Set(H323_ID_HEX=${MATH(${CUT(ID,,1)}+0, exten => _[*0-9]!,n,SIPAddHeader(h323-conf-id: ${H323_ID}) | same => n,SIPAddHeader(h323-conf-id: ${H323_ID}) exten => _[*0-9]!,n,Set(CDR(h323id)=${H323_ID_HEX}) | same => n,Set(CDR(h323id)=${H323_ID_HEX}) exten => _[*0-9]!,n,Return() | same => n,Return() [fromhost] [fromhost] exten => _[*0-9]!,1,NoOp(-- Inbound Authentication for cusrom | exten => _[*0-9]!,1,NoOp(-- Inbound Authentication for cust exten => _[*0-9]!,n,Gosub(h323-id,${EXTEN},1) | same => n,Set(CDR(CustomerType)=IpAuth) exten => _[*0-9]!,n,Set(CDR(accountcode)=${SIPCHANINFO(recvip | same => n,Set(CDR(accountcode)=${CHANNEL(recvip)} exten => _[*0-9]!,n,Set(MYCALLID=${SIPCALLID}) | same => n,Gosub(h323-id,${EXTEN},1) exten => _[*0-9]!,n,Set(CDR(CustomerType)=IpAuth) | same => n,Set(MYCALLID=${SIPCALLID}) exten => _[*0-9]!,n,AGI,agi-rad-auth.pl|Routing=SIP&Authorize | same => n,AGI(/var/lib/asterisk/agi-bin/agi-rad-a exten => _[*0-9]!,n,Set(CDR(disconnect-reason)=${h323-return- | same => n,Set(CDR(disconnect-reason)=${h323-retur exten => _[*0-9]!,n,Goto(rad-auth,${EXTEN},1) | same => n,Goto(rad-auth,${VERIFIED_EXTEN},1) [fromnode] [fromnode] exten => _[*0-9]!,1,NoOp(-- Inbound Authentication --) | exten => _[*0-9]!,1,NoOp(-- Inbound Authentication --) exten => _[*0-9]!,n,Gosub(h323-id,${EXTEN},1) | same => n,Set(CDR(CustomerType)=PeerAuth) exten => _[*0-9]!,n,Set(CDR(accountcode)=${SIPCHANINFO(recvip | same => n,Set(CDR(accountcode)=${CHANNEL(recvip)} exten => _[*0-9]!,n,Set(MYCALLID=${SIPCALLID}) | same => n,Gosub(h323-id,${EXTEN},1) exten => _[*0-9]!,n,Set(CDR(CustomerType)=PeerAuth) | same => n,Set(MYCALLID=${SIPCALLID}) exten => _[*0-9]!,n,AGI,agi-rad-auth.pl|Routing=SIP&Authorize | same => n,AGI(/var/lib/asterisk/agi-bin/agi-rad-a exten => _[*0-9]!,n,Set(CDR(disconnect-reason)=${h323-return- | same => n,Set(CDR(disconnect-reason)=${h323-retur exten => _[*0-9]!,n,Goto(rad-auth,${EXTEN},1) | same => n,Goto(rad-auth,${VERIFIED_EXTEN},1) [fromaccount] [fromaccount] exten => _[*0-9]!,1,NoOp(-- SIP Authentication --) | exten => _[#+*0-9]!,1,NoOp(-- SIP Authentication --) exten => _[*0-9]!,n,Gosub(h323-id,${EXTEN},1) | same => n,Set(CDR(CustomerType)=SipAuth) exten => _[*0-9]!,n,Set(SIP_Authorization=${SIP_HEADER(Proxy- | same => n,Set(CDR(accountcode)=${SIP_Username}) exten => _[*0-9]!,n,Set(CDR(CustomerType)=SipAuth) | same => n,Gosub(h323-id,${EXTEN},1) exten => _[*0-9]!,n,AGI,agi-rad-auth.pl|Routing=SIP&Authorize | same => n,Set(SIP_Authorization=${SIP_HEADER(Prox exten => _[*0-9]!,n,Set(CDR(accountcode)=${SIP_Username}) | same => n,Execif($[ "${SIP_Authorization}" = "" ] exten => _[*0-9]!,n,Set(CDR(disconnect-reason)=${h323-return- | same => n,AGI(/var/lib/asterisk/agi-bin/agi-rad-a exten => _[*0-9]!,n,Goto(rad-auth,${EXTEN},1) | same => n,Goto(rad-auth,${VERIFIED_EXTEN},1) [rad-auth] [rad-auth] exten => _[*0-9]!,1,NoOp() | exten => _[*0-9]!,1,NoOp() ;exten => _[*0-9]!,n,Progress | same => n,Set(RECVIP=${CHANNEL(recvip)}) exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "1" ]?i | same => n,Set(PBCLD=${PBCLD}) exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "2" ]?w | same => n,Set(CDR(disconnect-reason)=${h323-retur exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "3" ]?i | same => n,GotoIf($[ "${h323-return-code}" = "1" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "4" ]?z | same => n,GotoIf($[ "${h323-return-code}" = "2" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "5" ]?a | same => n,GotoIf($[ "${h323-return-code}" = "3" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "6" ]?c | same => n,GotoIf($[ "${h323-return-code}" = "4" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "7" ]?u | same => n,GotoIf($[ "${h323-return-code}" = "5" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "8" ]?n | same => n,GotoIf($[ "${h323-return-code}" = "6" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "9" ]?n | same => n,GotoIf($[ "${h323-return-code}" = "7" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "10" ]? | same => n,GotoIf($[ "${h323-return-code}" = "8" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "12" ]? | same => n,GotoIf($[ "${h323-return-code}" = "9" ] exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "0" | " | same => n,GotoIf($[ "${h323-return-code}" = "10" exten => _[*0-9]!,n,Goto(cannot-complete-temp-error,${EXTEN}, | same => n,GotoIf($[ "${h323-return-code}" = "12" > same => n,GotoIf($[ "${h323-return-code}" = "14" > same => n,GotoIf($[ "${h323-return-code}" = "0" | > same => n,Goto(cannot-complete-temp-error,${EXTEN [welcome-msg] [welcome-msg] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,ExecIf($[ ${XTOT} < 1 ],Gosub,check_ua,${ | exten => _[*0-9]!,n,ExecIf($[ ${XTOT} < 1 ]?Gosub(check_ua,${ exten => _[*0-9]!,n,GotoIf($[ ${XTOT} < 1 & "${multipleUA}" = exten => _[*0-9]!,n,GotoIf($[ ${XTOT} < 1 & "${multipleUA}" = exten => _[*0-9]!,n,Set(User_Agent=${SIP_HEADER(User-Agent)}) exten => _[*0-9]!,n,Set(User_Agent=${SIP_HEADER(User-Agent)}) exten => _[*0-9]!,n,Set(CDR(User-Agent)=User-Agent:${User_Age exten => _[*0-9]!,n,Set(CDR(User-Agent)=User-Agent:${User_Age exten => _[*0-9]!,n,Set(Nextext=3) | exten => _[*0-9]!,n,Progress exten => _[*0-9]!,n,ExecIf($[ "${User_Agent:0:7}" = "Linksys" | ;exten => _[*0-9]!,n,Wait(0.5) exten => _[*0-9]!,n,GotoIf($[ "${h323-return-code}" = "13" ]? | exten => _[*0-9]!,n,ExecIf($[ "${h323-return-code}" = "13" ]? exten => _[*0-9]!,n,Goto(normal-call,${EXTEN},${Nextext}) < < [free-call] < exten => _[*0-9]!,1,Wait(0.5) < exten => _[*0-9]!,n,Playback(free-calls,noanswer) < exten => _[*0-9]!,n,Goto(routing,${EXTEN},1) < < [normal-call] < exten => _[*0-9]!,1,Wait(0.5) < exten => _[*0-9]!,n,Playback(beep,noanswer) < exten => _[*0-9]!,n,Goto(routing,${EXTEN},1) exten => _[*0-9]!,n,Goto(routing,${EXTEN},1) [MyRoute] [MyRoute] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,ExecIf($[ "${ActivePrivacy}" = "1" ],SetC | exten => _[*0-9]!,n,ExecIf($[ "${ActivePrivacy}" = "1" ]?SetC exten => _[*0-9]!,n,Set(multipleUA=0) exten => _[*0-9]!,n,Set(multipleUA=0) exten => _[*0-9]!,n,GotoIf($["${connid}" = ""]?MyRoute-error, exten => _[*0-9]!,n,GotoIf($["${connid}" = ""]?MyRoute-error, exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} CALL\ set_ | exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} CALL set_r exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} SELECT\ ge | exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} SELECT get exten => _[*0-9]!,n,MYSQL(Fetch fetchid ${resultid} myROUTE) exten => _[*0-9]!,n,MYSQL(Fetch fetchid ${resultid} myROUTE) exten => _[*0-9]!,n,GotoIf($[ "${myROUTE}"="NULL" | "${myROUT exten => _[*0-9]!,n,GotoIf($[ "${myROUTE}"="NULL" | "${myROUT exten => _[*0-9]!,n,MYSQL(Clear ${resultid}) exten => _[*0-9]!,n,MYSQL(Clear ${resultid}) exten => _[*0-9]!,n,MYSQL(Disconnect ${connid}) exten => _[*0-9]!,n,MYSQL(Disconnect ${connid}) exten => _[*0-9]!,n,Set(VDNID=${PBCLD}) exten => _[*0-9]!,n,Set(VDNID=${PBCLD}) > exten => _[*0-9]!,n,Set(ROUTEIP=${NAS_IP_Address}) exten => _[*0-9]!,n,Dial(${myROUTE},30,${CALL_LIMIT}) exten => _[*0-9]!,n,Dial(${myROUTE},30,${CALL_LIMIT}) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP [MyRoute-error] [MyRoute-error] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,Dial(SIP/${PBCLD},30,${CALL_LIMIT}) exten => _[*0-9]!,n,Dial(SIP/${PBCLD},30,${CALL_LIMIT}) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP [check_ua] [check_ua] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,MYSQL(Connect connid localhost ${dbuser} exten => _[*0-9]!,n,MYSQL(Connect connid localhost ${dbuser} exten => _[*0-9]!,n,GotoIf($["${connid}" = ""]?error) exten => _[*0-9]!,n,GotoIf($["${connid}" = ""]?error) exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} SELECT\ 1\ | exten => _[*0-9]!,n,MYSQL(Query resultid ${connid} SELECT 1 F exten => _[*0-9]!,n,MYSQL(Fetch fetchid ${resultid} multipleU exten => _[*0-9]!,n,MYSQL(Fetch fetchid ${resultid} multipleU exten => _[*0-9]!,n,ExecIf($[ "${multipleUA}"="NULL" | "${mul | exten => _[*0-9]!,n,ExecIf($[ "${multipleUA}"="NULL" | "${mul exten => _[*0-9]!,n,MYSQL(Clear ${resultid}) exten => _[*0-9]!,n,MYSQL(Clear ${resultid}) exten => _[*0-9]!,n,ExecIf($[ "${multipleUA}" = "0" ],MYSQL,D | exten => _[*0-9]!,n,ExecIf($[ "${multipleUA}" = "0" ]?MYSQL(D exten => _[*0-9]!,n(error),Return() exten => _[*0-9]!,n(error),Return() [routing] [routing] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,ExecIf($[ "${CALLERID(name)}" = "Anonymou | exten => _[*0-9]!,n,ExecIf($[ "${CALLERID(name)}" = "Anonymou exten => _[*0-9]!,n,ExecIf($[ ${multipleUA} = 0 ],Gosub,check | exten => _[*0-9]!,n,ExecIf($[ "${multipleUA}" = "0" ]?Gosub(c exten => _[*0-9]!,n,GotoIf($[ ${multipleUA} = 1 ]?MyRoute,${E | exten => _[*0-9]!,n,GotoIf($[ "${multipleUA}" = "1" ]?MyRoute exten => _[*0-9]!,n(loop),NoOp() exten => _[*0-9]!,n(loop),NoOp() exten => _[*0-9]!,n,GotoIf($[ ${II} = 1 ]?SingleRoute) | exten => _[*0-9]!,n,GotoIf($[ "${II}" = "1" ]?SingleRoute) exten => _[*0-9]!,n,Playback(the-next,noanswer) exten => _[*0-9]!,n,Playback(the-next,noanswer) exten => _[*0-9]!,n(SingleRoute),Set(KK=0) exten => _[*0-9]!,n(SingleRoute),Set(KK=0) exten => _[*0-9]!,n,Set(SUM_ROUTE=${XSUM_${II}}) exten => _[*0-9]!,n,Set(SUM_ROUTE=${XSUM_${II}}) exten => _[*0-9]!,n(loop1),NoOp() exten => _[*0-9]!,n(loop1),NoOp() exten => _[*0-9]!,n,Set(TARGET_ROUTE=${XROUTE_${II}_${KK}}) exten => _[*0-9]!,n,Set(TARGET_ROUTE=${XROUTE_${II}_${KK}}) exten => _[*0-9]!,n,Set(TARGET_EXPIRE=${XEXP_${II}_${KK}}) exten => _[*0-9]!,n,Set(TARGET_EXPIRE=${XEXP_${II}_${KK}}) exten => _[*0-9]!,n,Set(TARGET_CLI=${XCLI_${II}_${KK}}) exten => _[*0-9]!,n,Set(TARGET_CLI=${XCLI_${II}_${KK}}) exten => _[*0-9]!,n,Set(CALLERID(all)=${TARGET_CLI} <${TARGET exten => _[*0-9]!,n,Set(CALLERID(all)=${TARGET_CLI} <${TARGET exten => _[*0-9]!,n,Set(MYDNID=${CUT(TARGET_ROUTE,@,1)}) exten => _[*0-9]!,n,Set(MYDNID=${CUT(TARGET_ROUTE,@,1)}) exten => _[*0-9]!,n,Set(VDNID=${CUT(MYDNID,/,2)}) exten => _[*0-9]!,n,Set(VDNID=${CUT(MYDNID,/,2)}) exten => _[*0-9]!,n,Set(ROUTEIP=${CUT(TARGET_ROUTE,@,2)}) exten => _[*0-9]!,n,Set(ROUTEIP=${CUT(TARGET_ROUTE,@,2)}) > exten => _[*0-9]!,n,GotoIf($[ "${ROUTEIP}" = "" ]?not_avail,$ exten => _[*0-9]!,n,GotoIf($[ "${ActivePrivacy}" != "1" ]?nop exten => _[*0-9]!,n,GotoIf($[ "${ActivePrivacy}" != "1" ]?nop exten => _[*0-9]!,n,GotoIf($[ "${ROUTEIP}" != "${NAS_IP_Addre exten => _[*0-9]!,n,GotoIf($[ "${ROUTEIP}" != "${NAS_IP_Addre exten => _[*0-9]!,n,SetCallerPres(prohib_not_screened) ; this exten => _[*0-9]!,n,SetCallerPres(prohib_not_screened) ; this exten => _[*0-9]!,n,Goto(noprivacy) exten => _[*0-9]!,n,Goto(noprivacy) exten => _[*0-9]!,n(extprivacy),NoOp() exten => _[*0-9]!,n(extprivacy),NoOp() exten => _[*0-9]!,n,SIPAddHeader(Remote-Party-ID:"${CALLERID( exten => _[*0-9]!,n,SIPAddHeader(Remote-Party-ID:"${CALLERID( exten => _[*0-9]!,n(noprivacy),NoOp() exten => _[*0-9]!,n(noprivacy),NoOp() exten => _[*0-9]!,n,Dial(${IF($[ "${CUT(TARGET_ROUTE,@,2)}" = | exten => _[*0-9]!,n,Dial(${IF($[ "${ROUTEIP}" = "${NAS_IP_Add exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP | exten => _[*0-9]!,n,Set(HANGUPCAUSE2=${HANGUPCAUSE}) > exten => _[*0-9]!,n,Execif($[ "${ROUTEIP}" = "${NAS_IP_Addres > exten => _[*0-9]!,n,Set(CDR(Hangupcause)=Hangupcause:${HANGUP exten => _[*0-9]!,n,Set(KK=$[${KK}+1]) exten => _[*0-9]!,n,Set(KK=$[${KK}+1]) exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "BUSY" | "${D exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "BUSY" | "${D exten => _[*0-9]!,n,GotoIf($[${KK} < ${SUM_ROUTE} ]?loop1:end exten => _[*0-9]!,n,GotoIf($[${KK} < ${SUM_ROUTE} ]?loop1:end exten => _[*0-9]!,n(end1),NoOp() exten => _[*0-9]!,n(end1),NoOp() exten => _[*0-9]!,n,Set(II=$[${II}+1]) exten => _[*0-9]!,n,Set(II=$[${II}+1]) exten => _[*0-9]!,n,GotoIf($[${II} <= ${XTOT} ]?loop:end) exten => _[*0-9]!,n,GotoIf($[${II} <= ${XTOT} ]?loop:end) exten => _[*0-9]!,n(end),NoOp() exten => _[*0-9]!,n(end),NoOp() exten => _[*0-9]!,n,Goto(Error-Info,${EXTEN},1) exten => _[*0-9]!,n,Goto(Error-Info,${EXTEN},1) [Error-Info] [Error-Info] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,GotoIf($[ ${XTOT} > 1 ]?Ter) exten => _[*0-9]!,n,GotoIf($[ ${XTOT} > 1 ]?Ter) exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE}" = "17" ]?curre | exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE2}" = "17" ]?curr exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE}" = "28" ]?ISUP2 | exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE2}" = "126" ]?not exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE}" = "1" | "${HAN | exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE2}" = "28" ]?ISUP exten => _[*0-9]!,n,GotoIf($[ ${HANGUPCAUSE} >= 90 ]?cannot-c | exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE2}" = "1" | "${HA > exten => _[*0-9]!,n,GotoIf($[ ${HANGUPCAUSE2} >= 90 ]?cannot- exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CANCEL" ]?ca exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CANCEL" ]?ca exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE}" = "34" | "${HA | exten => _[*0-9]!,n,GotoIf($[ "${HANGUPCAUSE2}" = "34" | "${H exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CHANUNAVAIL" exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CHANUNAVAIL" exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CONGESTION" exten => _[*0-9]!,n,GotoIf($[ "${DIALSTATUS}" = "CONGESTION" exten => _[*0-9]!,n(Ter),Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n(Ter),Hangup(${HANGUPCAUSE2}) [ISUP28] [ISUP28] exten => _[*0-9]!,1,SET(error_message="incomplete-num") exten => _[*0-9]!,1,SET(error_message="incomplete-num") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [currentlybusy] [currentlybusy] exten => _[*0-9]!,1,SET(error_message="the-number-u-dialed&is exten => _[*0-9]!,1,SET(error_message="the-number-u-dialed&is exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [user_denied] [user_denied] exten => _[*0-9]!,1,SET(error_message="user_denied") exten => _[*0-9]!,1,SET(error_message="user_denied") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [cannot-complete-otherend-error] [cannot-complete-otherend-error] exten => _[*0-9]!,1,SET(error_message="cannot-complete-othere exten => _[*0-9]!,1,SET(error_message="cannot-complete-othere exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [cancelled] [cancelled] exten => _[*0-9]!,1,SET(error_message="cancelled") exten => _[*0-9]!,1,SET(error_message="cancelled") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [not_avail] [not_avail] exten => _[*0-9]!,1,SET(error_message="not_avail") exten => _[*0-9]!,1,SET(error_message="not_avail") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [invalid_account] [invalid_account] exten => _[*0-9]!,1,SET(error_message="invalid_account") exten => _[*0-9]!,1,SET(error_message="invalid_account") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [wrong_passwd] [wrong_passwd] exten => _[*0-9]!,1,SET(error_message="wrong_passwd") exten => _[*0-9]!,1,SET(error_message="wrong_passwd") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [account_expired] [account_expired] exten => _[*0-9]!,1,SET(error_message="account_expired") exten => _[*0-9]!,1,SET(error_message="account_expired") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [credit_limit] [credit_limit] exten => _[*0-9]!,1,SET(error_message="credit_limit") exten => _[*0-9]!,1,SET(error_message="credit_limit") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [zero_balance] [zero_balance] exten => _[*0-9]!,1,SET(error_message="zero_balance") exten => _[*0-9]!,1,SET(error_message="zero_balance") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [in_use] [in_use] exten => _[*0-9]!,1,SET(error_message="simul-call-limit-reach exten => _[*0-9]!,1,SET(error_message="simul-call-limit-reach exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [insufficient_balance] [insufficient_balance] exten => _[*0-9]!,1,SET(error_message="insufficient_balance") exten => _[*0-9]!,1,SET(error_message="insufficient_balance") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [retries] [retries] exten => _[*0-9]!,1,SET(error_message="retries") exten => _[*0-9]!,1,SET(error_message="retries") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [cannot-complete-temp-error] [cannot-complete-temp-error] exten => _[*0-9]!,1,SET(error_message="cannot-complete-temp-e exten => _[*0-9]!,1,SET(error_message="cannot-complete-temp-e exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [no-route-exists-to-dest] [no-route-exists-to-dest] exten => _[*0-9]!,1,SET(error_message="no-route-exists-to-des exten => _[*0-9]!,1,SET(error_message="no-route-exists-to-des exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [Not-Found] [Not-Found] exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,1,NoOp() exten => _[*0-9]!,n,Set(NotFoundContext=Not-Found-${IF($[ "${ | exten => _[*0-9]!,n,Set(NotFoundContext=Not-Found-${IF($[ ${C exten => _[*0-9]!,n,Goto(${NotFoundContext},${EXTEN},1) exten => _[*0-9]!,n,Goto(${NotFoundContext},${EXTEN},1) [Not-Found-1] [Not-Found-1] exten => _[*0-9]!,1,SET(error_message="not-found") exten => _[*0-9]!,1,SET(error_message="not-found") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [Not-Found-2] [Not-Found-2] exten => _[*0-9]!,1,SET(error_message="you-dialed-wrong-numbe exten => _[*0-9]!,1,SET(error_message="you-dialed-wrong-numbe exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [telephone-number-temp-disconnected] [telephone-number-temp-disconnected] exten => _[*0-9]!,1,SET(error_message="the-number-u-dialed&te exten => _[*0-9]!,1,SET(error_message="the-number-u-dialed&te exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [all-outgoing-lines-unavailable] [all-outgoing-lines-unavailable] exten => _[*0-9]!,1,SET(error_message="all-outgoing-lines-una exten => _[*0-9]!,1,SET(error_message="all-outgoing-lines-una exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [an-error-has-occured] [an-error-has-occured] exten => _[*0-9]!,1,SET(error_message="an-error-has-occured") exten => _[*0-9]!,1,SET(error_message="an-error-has-occured") exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Gosub(playerror,${EXTEN},1) exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE}) | exten => _[*0-9]!,n,Hangup(${HANGUPCAUSE2}) [playerror] [playerror] exten => _[*0-9]!,1,Set(COUNTER=0) exten => _[*0-9]!,1,Set(COUNTER=0) > exten => _[*0-9]!,n,Progress() exten => _[*0-9]!,n,Wait(0.5) exten => _[*0-9]!,n,Wait(0.5) exten => _[*0-9]!,n(loop),Wait(1) exten => _[*0-9]!,n(loop),Wait(1) exten => _[*0-9]!,n,Playback(beeperr,noanswer) exten => _[*0-9]!,n,Playback(beeperr,noanswer) exten => _[*0-9]!,n,Playback(${error_message},noanswer) exten => _[*0-9]!,n,Playback(${error_message},noanswer) exten => _[*0-9]!,n,Set(COUNTER=$[${COUNTER} + 1]) exten => _[*0-9]!,n,Set(COUNTER=$[${COUNTER} + 1]) exten => _[*0-9]!,n,GotoIf($[${COUNTER}<=5]?loop) exten => _[*0-9]!,n,GotoIf($[${COUNTER}<=5]?loop) exten => _[*0-9]!,n,Return exten => _[*0-9]!,n,Return