Because the VoiceBlue is only 4 channels and I am supporting 100 cell users,
I needed a way to overflow calls to the PRI of all 4 channels are full.
Unfortunately, there seems to be no built-in mechanism to determine if the
gateway is full, so this script parses the output of "asterisk -rx sip show
channels XXX.XXX.XXX.XXX" to determine the number of channels currently in
use. Hope this helps someone. 

Notes:

1. Execute from /var/lib/asterisk/agi-bin as 'querygsmgateway.agi'
2. Replace .201 with the last dotted quad of your gateway's IP address (in
this example, 192.168.1.201 is the IP of the gateway)
3. Assumes that the variable ${DIALSTRING} is set with the NAMA number of
the mobile to call

querygamgateway.agi:

#!/bin/bash
GSMCHANNEL=`asterisk -rx "SIP SHOW CHANNELS" | grep -a -A0 ".201"`

CURRENTCHANNEL1=${GSMCHANNEL:55:7}
CURRENTCHANNEL2=${GSMCHANNEL:118:7}
CURRENTCHANNEL3=${GSMCHANNEL:181:7}
CURRENTCHANNEL4=${GSMCHANNEL:244:7}

TOTALCHANNELS=0


if [ "${GSMCHANNEL:55:7}" != "" ]
then
if [ $CURRENTCHANNEL1 = "ulaw" ]
then
TOTALCHANNELS=$((TOTALCHANNELS+1))
fi
fi


if [ "${GSMCHANNEL:118:7}" != "" ]
then
if [ $CURRENTCHANNEL2 = "ulaw" ]
then
TOTALCHANNELS=$((TOTALCHANNELS+1))
fi
fi


if [ "${GSMCHANNEL:181:7}" != "" ]
then
if [ $CURRENTCHANNEL3 = "ulaw" ]
then
TOTALCHANNELS=$((TOTALCHANNELS+1))
fi
fi



if [ "${GSMCHANNEL:244:7}" != "" ]
then
if [ $CURRENTCHANNEL4 = "ulaw" ]
then
TOTALCHANNELS=$((TOTALCHANNELS+1))
fi
fi

echo "SET VARIABLE GSMCHANNELS \"$TOTALCHANNELS\""

extensions.conf:

exten => dial,1,AGI(/var/lib/asterisk/agi-bin/querygsmgateway.agi) 'Query
the gateway
exten => dial,3,Gotoif($[$["${DIALSTRING:7:3}" = "902"]]?4:20) 'Determine if
the dialled # is a mobile. If so, use the gateway
exten => dial,4,Gotoif($[${GSMCHANNELS} >= 4]?20:7)'If the gateway is
currently full, dial using the PRI, otherwise
exten => dial,5,ChanIsAvail(SIP/${SECONDARYDIALSTRING:7:[EMAIL PROTECTED])
'If the gateway is down, dial the PRI
exten => dial,6,Dial(SIP/${DIALSTRING:7:[EMAIL PROTECTED],25,Tr) 'Dial using
the gateway
exten => dial,7,InsertVoicemailHandlerHere

exten => dial,20,Dial(ZAP/g0/${DIALSTRING:7:7},25,Tr) 'Dial using the PRI
exten => dial,21,InsertVoicemailHandlerHere

exten => dial,106,Dial(ZAP/g0/${DIALSTRING:7:7},25,Tr) 'Dial using the PRI
if the gateway is down
exten => dial,107,InsertVoicemailHandlerHere


_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

Asterisk-Users mailing list
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to