I posted a simple PERL agi that uses hints to do a similar thing to Devstate last week. Here it is:
#!/usr/bin/perl use strict; use warnings; # define variables # show hints will get hint information from the dialplan my $cmda = '/usr/sbin/asterisk -rx "show hints" '; my $towatch = $ARGV[0]; # turn off I/O buffering $| = 1; # read the AGI environment while (<STDIN>) { chomp($_); last if 0 == length($_); } # assume idle print STDOUT "SET VARIABLE LINESTAT \"Idle\"\n"; <STDIN>; # get trunk information $SIG{'PIPE'} = 'IGNORE'; open (my $trunk_info, $cmda) or exit; while (<$trunk_info>) { if (($_ =~ /internal/) && ($_ =~ /$towatch/)) { my $c = unpack("x74 a16", $_); $c =~ s/\s//gx; print STDOUT "SET VARIABLE LINESTAT \"$c\"\n"; <STDIN>; } } close $trunk_info; Dialplan: exten => 2100,1,Noop(dial 102 after checking sippeer) exten => 2100,n,Set(LINESTAT=Idle) exten => 2100,n,AGI(steve.agi|102) exten => 2100,n,Wait(3) exten => 2100,n,Verbose(status is ${LINESTAT}) exten => 2100,n,Gotoif($["${LINESTAT}" != "Idle"]?inuse) exten => 2100,n,Dial(SIP/102,20,m) exten => 2100,n,Background(vm-goodbye) exten => 2100,n,Hangup exten => 2100,n(inuse),Voicemail(1...@default) exten => 2100,n,Background(vm-goodbye) just change 102 to your receptionists number _____ From: asterisk-users-boun...@lists.digium.com [mailto:asterisk-users-boun...@lists.digium.com] On Behalf Of Lenz Emilitri Sent: Monday, June 15, 2009 5:10 AM To: Asterisk Users Mailing List - Non-Commercial Discussion Subject: Re: [asterisk-users] Simple Queue Problem You could try this one: http://www.voip-info.org/wiki/view/Asterisk+func+Devstate If I can add a warning, be wary of having both ACD (Queue) and non-ACD traffic on the same operator - you risk having awful performance. Just my two eurocents, l. 2009/6/12 Lee, John (Sydney) <john....@compuware.com> I am running Asterisk 1.4.21.2 For reception, I defined a simple queue with one SIP phone as the only member. When I receive an incoming call, I test QUEUE_WAITING_COUNT to see if it is > 0. If it is > 0, then I will playback a message to tell the caller to be patient and then do a Queue(<queue-name>). If QUEUE_WAITING_COUNT is zero, then I will just Queue(<queue-name>, r) to ring the receptionist phone without playing any message. A problem arises if the receptionist is talking to someone on the phone. In this scenario, QUEUE_WAITING_COUNT is also zero but I will need to playback a pls-be-patient message as well. So, I need to find out whether the receptionist phone is busy even if QUEUE_WAITING_COUNT = 0. Do you know if there is anyway, without dialling a SIP channel, I can check if a SIP extension is engaged or not? _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users -- Loway - home of QueueMetrics - http://queuemetrics.com
_______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users