[asterisk-users] Finding the status of an extension

Andre Courchesne - Consultant courchea at net-forces.com
Tue Nov 27 10:46:34 CST 2007


Hi,

  Here is a small AGI script that get you the hint status of the extension simply call AGI(script.agi,SIP/100)

!/usr/bin/perl
#
# page.agi - Original file was allpage.agi by Rob Thomas 2005.
#               With parts of allcall.agi Original file by John Baker
#               Modified by Adam Boeglin to allow for paging sccp phones
#Modified/Updated by Jeremy Betts 6/1/2006 for improved efficiency..
#               We now use AGI to set the dialplan variable.. much smarter!
#Modifier by Andre Courchesne 11-27-2007 (acourchesne at prival.ca)
#               Modified to return the hint status of a single extension
#               Tested with SIP extension only
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of Version 2 of the GNU General
# Public License as published by the Free Software Foundation
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
#
# This works with both my aastra, polycom, sipura/linksys and cisco sccp phones.
# It should be easily modified for other sip phones
#
# Documentation:
#  Simply returns channel variable MYSTATE
#       0: Extension is busy
#       1: Extension is available
#
#
#
use Asterisk::AGI;
$AGI = new Asterisk::AGI;

@bypass = "@ARGV";

@sips = `sudo /usr/sbin/asterisk -rx "show hints" | grep -a "$bypass[0]"`;


#foreach $sipline (@sips)
#{
#       print "Noop $sipline\n";
#}
#print "Noop -------------------\n";
#foreach $argline (@bypass)
#{
#       print "Noop $argline\n";
#}


$mystate=0;

my ($junk0, $junk1, $junk2, $exten, $state, $junk2) = split(/ +/, $sips[0],6);
my ($type, $extension) = split(/\//,$chan,2);
print "Noop Comparing [".$exten."] and [".$bypass[0]."] $state\n";

if($state eq "State:Idle")
{
  $mystate=1;
  print "Noop Found extension $exten to be Idle\n";
}



More information about the asterisk-users mailing list