[ext-group-custom]
; here we start goip call handling
exten => 991,1,Macro(user-callerid,)
exten => 991,n,GotoIf($["foo${BLKVM_OVERRIDE}" = "foo"]?skipdb)
exten => 991,n,GotoIf($["${DB(${BLKVM_OVERRIDE})}" = "TRUE"]?skipov)
exten => 991,n(skipdb),Set(__NODEST=)
exten => 991,n,Set(__BLKVM_OVERRIDE=BLKVM/${EXTEN}/${CHANNEL})
exten => 991,n,Set(__BLKVM_BASE=${EXTEN})
exten => 991,n,Set(DB(${BLKVM_OVERRIDE})=TRUE)
exten => 991,n(skipov),Set(RRNODEST=${NODEST})
exten => 991,n(skipvmblk),Set(__NODEST=${EXTEN})
exten => 991,n,GosubIf($[${DB_EXISTS(RINGGROUP/991/changecid)} = 1 & "${DB(RINGGROUP/991/changecid)}" != "default" & "${DB(RINGGROUP/991/changecid)}" != ""]?sub-rgsetcid,s,1)
exten => 991,n,AGI(callgroup_mapping.agi)
exten => 991,n,NoOP("NewCallGroup=${callgrp}")
exten => 991,n,NoOP("NewCallType=${calltype}")
exten => 991,n,Set(RecordMethod=Group)
exten => 991,n,Macro(record-enable,${callgrp},${RecordMethod})
exten => 991,n,Set(RingGroupMethod=${calltype})
exten => 991,n(DIALGRP),Macro(dial,20,${DIAL_OPTIONS},${callgrp})
exten => 991,n,Set(RingGroupMethod=)
exten => 991,n,GotoIf($["foo${RRNODEST}" != "foo"]?nodest)
exten => 991,n,Set(__NODEST=)
exten => 991,n,Noop(Deleting: ${BLKVM_OVERRIDE} ${DB_DELETE(${BLKVM_OVERRIDE})})
exten => 991,n,Goto(app-blackhole,hangup,1)
exten => 991,n(nodest),Noop(SKIPPING DEST, CALL CAME FROM Q/RG: ${RRNODEST})
as you can see the above, it calls the "callgroup_mapping.agi".
Refer to the /var/lib/asterisk/agi-bin/callgroup_mapping.agi
it search in the cdr table for the last extension call make out to the caller id .
Base on this ext., it searches for goip_callgroup table for the call routing numbers.
The routing number has to be in the format of the call group e.g
7109-60123836313# or 8109-8110-8111
The above is for the non-busy.. as for busy.. the GOIP's SIM FORWARD
to a special number - "0321069278" and for this number, it has customised as "incoming route" for below "extensions_custom.conf"
to call the 991
[ext-did-0002-custom]
exten => 60321069278,1,Set(__FROM_DID=${EXTEN})
exten => 60321069278,n,Gosub(app-blacklist-check,s,1)
exten => 60321069278,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => 60321069278,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => 60321069278,n,Set(CALLERPRES()=allowed_not_screened)
exten => 60321069278,n(dest-ext),Goto(ext-group,991,1)
So the above try to loop back to the 991.