Summary:ASTERISK-06474: [patch][post 1.4] One-touch pause/unpause for agents (big efficiency gain).
Reporter:Matt King, M.A. Oxon. (kebl0155)Labels:
Date Opened:2006-03-04 06:02:06.000-0600Date Closed:2011-06-07 14:03:00
Versions:Frequency of
Environment:Attachments:( 0) 20071207__bug6650.diff.txt
( 1) newpatch.patch

I've installed Asterisk for a very busy call centre, and have migrated them to the Asterisk ACD.  In order to provide the functionality required, I had to patch chan_agent.c

As it's had a huge and positive impact on their performance, I thought I should share this immediately with the community.

My apologies if this is a feature request, rather than a minor bug - for this customer it was critical (i.e. no sale without it!).


The customer didn't want a room full of ringing phones, so I couldn't use AgentCallbackLogin.

Some of their incoming calls require wrap up time, others don't.  I therefore used AgentLogin, and set ackcall=always in the queues.conf file, however the customer was still unhappy as:

1) Agents were bothered by beeps while they were completing their wrap up (due to other callers being presented inappropriately).

2) Agents had to acknowledge every call, even when no wrap up was required.

This was leading to a big drop in efficiency compared to their legacy system, which fed callers automatically to agents unless they were paused (i.e. agents had to specifically request wrap up time during the call).

I decided that agents needed to be able to pause and unpause themselves with the handset.  As '*' is hang up, '#' is transfer (or acknowledge), I've made '0' Pause (during a call) and Unpause (after a call, whilst paused).

I wanted to do this with features.conf, but dynamic features are not supported within agent channels (or so it seems), so I had to patch chan_agent.c (attached - from version 1.2.4) to call PauseQueueMember and UnpauseQueueMember.  For best results use the attached patch with ackcall=no and short wrapup times.

My edits are preceded with a //MATT comment.

Comments:By: Olle Johansson (oej) 2006-03-04 08:35:29.000-0600

Please add a patch file, not the complete channel source code. We need to see your changes. The patch file has to be for SVN trunk, where all additional features are added. (Read the bug guidelines).

Thanks for sharing this and wanting to contribute to the community!

By: Matt King, M.A. Oxon. (kebl0155) 2006-03-04 11:11:41.000-0600

OK have created diff file as per instructions at http://www.asterisk.org/developers/Patch_Howto .  There doesn't appear to be an svn diff -u option (though this is mentioned explicitly in the bug posting guidelines).

Matt (OrderlyQ).

By: Jeffrey C. Ollie (jcollie) 2006-04-23 21:43:44

"svn diff -u" is probably there because all occurences of "cvs" were replaced with "svn".  "cvs diff -u" was the appropriate command when the Asterisk source code was managed using CVS.  Subversion diffs always use the unified diff format  therefore Subversion does not have a "-u" option to select it.

By: Tilghman Lesher (tilghman) 2006-04-25 18:12:44

This patch also needs to be against trunk, as new features will not be added to the 1.2 tree.  Currently this patch has 100% failures against trunk.

By: Matt King, M.A. Oxon. (kebl0155) 2006-04-25 19:05:26

Hmm was working against trunk when I posted original patch.

Will update and see what's up.

By: Serge Vecher (serge-v) 2006-05-08 11:58:20

Matt: any luck with updates here?

By: BJ Weschke (bweschke) 2006-05-10 08:43:56

I like the idea, but I probably wouldn't "hardcode" a particular digit to perform this function as we consider this for trunk. Additionally, we probably want to verify that we can find an app before trying to execute it and put out an error message if appropriate.

By: Matt King, M.A. Oxon. (kebl0155) 2006-05-10 16:47:02

Sorry been super-busy last couple of weeks; hoping to get to this this weekend.

Haven't forgotten,


By: Jason Parker (jparker) 2006-05-22 15:15:25

Maybe I'm missing part of the problem, but wouldn't this be easy to do as a feature code in features.conf?

By: Matt King, M.A. Oxon. (kebl0155) 2006-05-24 17:14:49

Yes I did orignally look to features.conf for a solution.  Couldn't get it to work because:

1) Dynamic features are not supported for agent channels, so no Pause could be added, and

2) Once the agent is paused, if they are not taking calls, they are on a special channel which doesn't respond to any input, let alone features.conf.  So, no Unpause.

You're welcome to try this if you like.  Once again, sorry it's taking me so long to get to this - am closing a funding round here in the UK.


By: Serge Vecher (serge-v) 2006-06-05 20:08:05

matt: looks like a good feature, but we need an updated patch here in order for this to make it into 1.4 beta...

By: Matt King, M.A. Oxon. (kebl0155) 2006-06-16 13:14:56

New patch uploaded.  Sorry it took so long...

This one definitely works against today's trunk.

By: Serge Vecher (serge-v) 2006-06-19 12:52:09

thanks matt. At this point this will be considered for the trunk once 1.4 beta is forked. Thanks

By: Jared Smith (jsmith) 2006-09-28 19:54:41

Now that 1.4 has been branched, can we take another look at getting this feature added?

By: Serge Vecher (serge-v) 2006-09-29 09:12:19

ok, kebl0155: can you please update the patch to current trunk and fix a few formatting issues?
1) Use tabs instead of spaces for indentation
2) Give ample spacing in places like:
  if(a>x)   => if (a > x)
3) Don't wrap comment end tag to the next line
4) Don't leave commented out code.


By: jmls (jmls) 2006-10-31 11:08:04.000-0600

kebl0155: any news on an updated patch ?

By: Matt King, M.A. Oxon. (kebl0155) 2006-10-31 11:41:35.000-0600

We've just moved into new premises so I've been a bit busy - but I haven't forgotten and this is nearing the top of my tasklist.

Hope this helps,


By: jmls (jmls) 2007-01-07 03:02:35.000-0600

has this reached the top of your list yet ? ;)

By: Jason Parker (jparker) 2007-04-06 14:09:24

or the bottom of the list?

By: Matt King, M.A. Oxon. (kebl0155) 2007-04-10 05:19:17

Sorry.  I'll see if I can get to this this week.


By: Michiel van Baak (mvanbaak) 2007-09-08 05:38:01

How about this week ?
Any progress ?

By: Matt King, M.A. Oxon. (kebl0155) 2007-09-08 12:56:08

Hi there,

We found out that the keypress was interrupting the audio stream, so we do this with the OrderlyQ Agent Bar now (rather than from the phone).

By: Tilghman Lesher (tilghman) 2007-12-07 15:41:05.000-0600

Updated patch to current trunk.

By: Mark Michelson (mmichelson) 2008-03-10 16:00:25

I've taken a look at this and discussed this with some folks, and the problem is that this patch seems like it would only serve a very specific set of circumstances and seems like it is outside the scope of what Asterisk tries to provide. In addition, this patch makes assumptions about the use of the agents in question (it assumes that by definition, agents are queue members).

There are numerous ways to program either dialplan logic or features to have a one-touch pause extension or log on/log off. Placing this type of logic in the agent channel driver is not the proper approach.

It's nice that you have shared this contribution with the community, and the latest patch will remain up for those who wish to use it, but it will not be going into the core Asterisk source. Please don't be discouraged by the decision not to include your patch.