Re: [asterisk-users] Determining if a queue member is paused in Dialplan logic. [1.8]

2015-03-26 Thread Dale Noll
I use a Perl script that monitors AMI events.  It also checks the state of
all queues and members and generates some basic HTML pages for monitoring
the queues. It's not perfect, nor would I call it pretty, but it gets the
job done.

If you are interested, I can send it to you.

Dale

On Wed, Mar 25, 2015 at 7:18 PM, John Kiniston johnkinis...@gmail.com
wrote:

 Thank you Kevin, I've looked at your solution and while I agree it's not
 ideal it does appear to be something that might work for me.

 I'll see if I can maybe backport the QUEUE_MEMBER stuff to 1.8 from 11.

 I'm also exploring an idea with a co-worker of using an AMI listener that
 will fire off actions in response to the member being paused and doing
 things that way.

 I looked at parsing the log but sadly the log uses the Member Name in the
 log instead of the actual device so I don't have a way of knowing what
 handset they are logged into the queue from.

 On Wed, Mar 25, 2015 at 12:13 PM, Kevin Larsen 
 kevin.lar...@pioneerballoon.com wrote:


 First, let me say I feel dirty for even posting this. It is probably far
 from ideal, but it does get the job done. I had the same issue. Also, I am
 using Asterisk 11. I just looked and it doesn't appear that the
 QUEUE_MEMBER function supports the paused option in 1.8. To be honest, I am
 not sure if there is a good replacement for what I have done below in the
 1.8 series.

 It isn't elegant and if you have a lot of queues/queue members to check,
 it will constitute a lot of looping, but it does work. Like you, I would
 like to have a way to check the pause status of a member easier. If the
 queue application could call a subroutine with it autopaused someone, that
 would actually make an elegant solution, but for now, this was the way I
 could see to do it.

 You could maybe call a script that would parse the queue_log file looking
 for an agents status and pass that back into the dialplan.
 --
 _
 -- Bandwidth and Colocation Provided by http://www.api-digital.com --
 New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

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




 --
 A human being should be able to change a diaper, plan an invasion, butcher
 a hog, conn a ship, design a building, write a sonnet, balance accounts,
 build a wall, set a bone, comfort the dying, take orders, give orders,
 cooperate, act alone, solve equations, analyze a new problem, pitch manure,
 program a computer, cook a tasty meal, fight efficiently, die gallantly.
 Specialization is for insects.
 ---Heinlein

 --
 _
 -- Bandwidth and Colocation Provided by http://www.api-digital.com --
 New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

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

-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

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

Re: [asterisk-users] Determining if a queue member is paused in Dialplan logic. [1.8]

2015-03-25 Thread Kevin Larsen
asterisk-users-boun...@lists.digium.com wrote on 03/25/2015 01:38:26 PM:
 I'm looking at enabling autopause on one of my queues where my queue
 members are bad about leaving their desks without pausing.

 The problem I see is that when the queue pauses an Member it doesn't
 jump into the dialplan to do so which means my handy device state 
 and asterisk database driven Light for the Member showing their 
 paused status won't update.

 My idea for solving this problem is to check the status of my Member
 in the queue before I send the calls into it and toggle on the 
 Members Paused light at that point in time if they are paused.

 Sadly I don't see a way to determine if my Staff are paused or not 
 from the dialplan, There doesn't appear to be a function to retrieve
 the status of the members in the queue.

 Does the list have any suggestions?

First, let me say I feel dirty for even posting this. It is probably far 
from ideal, but it does get the job done. I had the same issue. Also, I am 
using Asterisk 11. I just looked and it doesn't appear that the 
QUEUE_MEMBER function supports the paused option in 1.8. To be honest, I 
am not sure if there is a good replacement for what I have done below in 
the 1.8 series.

[sub_autopause_status]
exten = s,1,NoOp(Checking for autopaused members for ${arg1} queue)
  same = n,Set(MEMBERS=${QUEUE_MEMBER_LIST(${arg1})})
  same = n,Set(i=1)
  same = n,Set(max=${FIELDQTY(MEMBERS,,)})

  same = n,While($[${i} = ${max}])
  same = n,Set(MEMBER=${CUT(MEMBERS,\,,${i})})
  same = n,Set(STATUS=${QUEUE_MEMBER(${arg1},paused,${MEMBER})})
  same = n,Set(MEMBER_EXT=${CUT(MEMBER,\/,2)})
  same = n,ExecIf($[${STATUS} = 0]?System(echo IN  
/var/spool/asterisk/status/agent-${MEMBER_EXT}-status.txt))
  same = n,ExecIf($[${STATUS} = 1]?System(echo PAU  
/var/spool/asterisk/status/agent-${MEMBER_EXT}-status.txt))
  same = n,NoOp(${MEMBER}: ${STATUS})
  same = n,Set(i=$[${i} + 1])
  same = n,EndWhile()

  same = n,Return()


So, as an explanation, I have multiple queues and agents who autopause. I 
show their status on their phones, hence the System(echo...) commands to 
the /var/spool/asterisk/status directory. Those files are used to generate 
a simple web page that is shown on their phones that lets them see their 
status. You should be able to adapt that to what you do.

Basically, you pass the queue name into the subroutine as arg1. The 
subroutine gets a list of every person logged into that queue and then 
loops through checking the status of each person using the QUEUE_MEMBER 
function.

It isn't elegant and if you have a lot of queues/queue members to check, 
it will constitute a lot of looping, but it does work. Like you, I would 
like to have a way to check the pause status of a member easier. If the 
queue application could call a subroutine with it autopaused someone, that 
would actually make an elegant solution, but for now, this was the way I 
could see to do it.

You could maybe call a script that would parse the queue_log file looking 
for an agents status and pass that back into the dialplan.-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

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

Re: [asterisk-users] Determining if a queue member is paused in Dialplan logic. [1.8]

2015-03-25 Thread John Kiniston
Thank you Kevin, I've looked at your solution and while I agree it's not
ideal it does appear to be something that might work for me.

I'll see if I can maybe backport the QUEUE_MEMBER stuff to 1.8 from 11.

I'm also exploring an idea with a co-worker of using an AMI listener that
will fire off actions in response to the member being paused and doing
things that way.

I looked at parsing the log but sadly the log uses the Member Name in the
log instead of the actual device so I don't have a way of knowing what
handset they are logged into the queue from.

On Wed, Mar 25, 2015 at 12:13 PM, Kevin Larsen 
kevin.lar...@pioneerballoon.com wrote:


 First, let me say I feel dirty for even posting this. It is probably far
 from ideal, but it does get the job done. I had the same issue. Also, I am
 using Asterisk 11. I just looked and it doesn't appear that the
 QUEUE_MEMBER function supports the paused option in 1.8. To be honest, I am
 not sure if there is a good replacement for what I have done below in the
 1.8 series.

 It isn't elegant and if you have a lot of queues/queue members to check,
 it will constitute a lot of looping, but it does work. Like you, I would
 like to have a way to check the pause status of a member easier. If the
 queue application could call a subroutine with it autopaused someone, that
 would actually make an elegant solution, but for now, this was the way I
 could see to do it.

 You could maybe call a script that would parse the queue_log file looking
 for an agents status and pass that back into the dialplan.
 --
 _
 -- Bandwidth and Colocation Provided by http://www.api-digital.com --
 New to Asterisk? Join us for a live introductory webinar every Thurs:
http://www.asterisk.org/hello

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




-- 
A human being should be able to change a diaper, plan an invasion, butcher
a hog, conn a ship, design a building, write a sonnet, balance accounts,
build a wall, set a bone, comfort the dying, take orders, give orders,
cooperate, act alone, solve equations, analyze a new problem, pitch manure,
program a computer, cook a tasty meal, fight efficiently, die gallantly.
Specialization is for insects.
---Heinlein
-- 
_
-- Bandwidth and Colocation Provided by http://www.api-digital.com --
New to Asterisk? Join us for a live introductory webinar every Thurs:
   http://www.asterisk.org/hello

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