Monday, October 27, 2014

Tables to support the GoIP incoming for both line is either non-busy or busy

When the GSM line is non-busy, GOIP allows user to configure the "Forward to VOIP number", For this case, I have set the VOIP number to 991 (call group in asterisk). And in the asterisk, I customised the 991 in the "/etc/asterisk" extensions_custom.conf with the following code

[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. 






Sunday, October 19, 2014

Open trunk or extension for MyPBX to connect to

You can either define new trunk with the following information on the
User Context =
User Details
type=friend
secret=1234Goip
qualify=yes
host=dynamic
dtmfmode=rfc2833
context=from-internal
canreinvite=no

However this option, it will not able to pass thru the a2billing since the accountcode is not defined.

To enable this, you need to define the account in the user context.

The other method is to define a new extension but for this option, you unable to pass thru the CLI as it will always follow the CLI defined at the extension level.

Monday, October 6, 2014

GOIP - handling incoming for multiple tenants

The GOIP single server mode will help in supporting the multiple tenants. The call within the GOIP  trunk will be randomly assigned to the any of the available channel. However, as for the incoming, we will have to configure the PSTN to VOIP forwarding. The good thing is that the GOIP allows you to specify the call group ext number. hence, I defined a generic call group no. 991 for all the SIM.

As for the 991, I customised the "extensions_custom.conf" and the 991 will call the agi in the "callgroup_mapping.agi" /var/lib/asterisk/agi-bin/

within this agi, it will select the last extension e.g 7109 which calls the caller id. the script will then check on the "goip_callgroup" table. in this table, you shall define which call group that the call shall route to for incoming. e.g if any of the caller calling 7109, it will route to the same ext. or you have an option to divert the call to another ext or even to a group of ext e.g 7109-6012xxxxx#-2701

With the above, I can upsell the sim base trunk to customer with more attractive rate.