Pause queue member

Hi,

I’d like to give my agents the ability to set their phone to Lunch or Meeting but I’m not sure how to implement this in Freepbx.

I know I can type this in CLI:
queue pause member Local/6801@from-queue/n queue 1200 reason Lunch

But how can I put this in a dialplan?
The agents are always logged in (static agents).
Preferably pause in all queues if possible.

Thanks in advance!

Edit by xrobau much later:
I noticed that when I was googling for the actual feature code, this is the first hit, and doesn’t actually give you the answer. The answer is ‘*46’ and you can also use *46XXXX where XXXX is the queue number (you can also pause OTHER queue members with *46*YYY*XXXX where ‘YYY’ is the extension you want to pause).

It’s on the list to add queue pausing to the FreePBX module.

However, there is quite a bit of additional functionality for queues including reporting and queue management in tools such as iSymphony as well as some XML phone applications for the Aastra phones.

So, if you have some heavier call center needs you may want to look into some of these other tools as they give you much more extensive control of your queue as well as include functionality such as pausing and a lot more.

Hi

Try this

NOTE: This is a macro, you need to send/define {THEUSER} and if you wish, {PAUSEREASON}

;;pausing
exten => s,n,PauseQueueMember(,“Local/${THEUSER}@from-queue/n”,${PAUSEREASON})

;;unpausing
exten => s,n,UnpauseQueueMember(,Local/${THEUSER}@from-queue/n,${PAUSEREASON})

Hi,

Thanks for the reply!

In the meantime I got it working. The solution is not pretty but it does the job:

exten => *111,1,Macro(agent-pause)
exten => *115,1,Macro(agent-unpause)

[macro-agent-pause]

exten => s,1,Answer
exten => s,1,Wait(1)
exten => s,n,Macro(user-callerid,SKIPTTL,)
exten => s,n,Set(CALLBACKNUM=${AMPUSER})
exten => s,n,PauseQueueMember(,Local/${CALLBACKNUM}@from-queue/n)
exten => s,n,System( echo “${EPOCH}|${UNIQUEID}|NONE|Agent/${CALLBACKNUM}|AGENTPAUSED|-” >> /var/log/asterisk/queue_log )
exten => s,n,UserEvent(RefreshQueue)
exten => s,n,Wait(1)
exten => s,n,Playback(extension)
exten => s,n,Playback(dictate/paused)
exten => s,n,Wait(1)
exten => s,n,Hangup

; end of [macro-agent-pause]

[macro-agent-unpause]

exten => s,1,Answer
exten => s,1,Wait(1)
exten => s,n,Macro(user-callerid,SKIPTTL,)
exten => s,n,Set(CALLBACKNUM=${AMPUSER})
exten => s,n,UnpauseQueueMember(,Local/${CALLBACKNUM}@from-queue/n)
exten => s,n,System( echo “${EPOCH}|${UNIQUEID}|NONE|Agent/${CALLBACKNUM}|AGENTUNPAUSED|-” >> /var/log/asterisk/queue_log )
exten => s,n,UserEvent(RefreshQueue)
exten => s,n,Wait(1)
exten => s,n,Playback(dictate/pause)
exten => s,n,Playback(cancelled)
exten => s,n,Wait(1)
exten => s,n,Hangup

; end of [macro-agent-pause]

1 Like

Thank You for a great and working way to implement queue pausing in FreePBX:-)
This should be included in queues module from now on:)

works like a charm for me in 4 queues enviroment:)

Well, no credits to me, the pause script is from voip-info. The unpause script is basically the same.

But I totally agree this should be implemented in FreePBX. An agents status is very important in a callcenter environment.
A good callcenter module is what is missing in FreePBX anyway…

It would be great to write another macro to add toggle for pausing/unpausing, but i’m not good enough to do it by myslef:/ anyone have an idea how to make an app like this?.
I thibnk it should check if extension is paused,
if yes, than it shoud run macro "pause"
else run macro “unpause”

that way we would have only one feature code for our users to remember.

Hi,

What i wrote was simply to add a database value (astdb) when pausing (set to 1 for instance), then when unpausing, set it back to 0.

Then i wrote a custom app (e.g *700), then the app will

  1. Read the extension number from the channel variables
  2. Check to see if flag 1 or 0
  3. If 1 do unpause, if 0 do pause

And so on…