[Asterisk-Users] OT: HOWTO: Query channel state on an Ateus Voice Blue GSM gateway

Colin Anderson ColinA at landmarkmasterbuilder.com
Wed Mar 29 10:08:09 MST 2006


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:7}@192.168.1.201)
'If the gateway is down, dial the PRI
exten => dial,6,Dial(SIP/${DIALSTRING:7:7}@192.168.1.201,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





More information about the asterisk-users mailing list