Summary:ASTERISK-11085: Queue and Transfer using Local channel
Reporter:Joel Vandal (jvandal)Labels:
Date Opened:2007-12-19 12:18:08.000-0600Date Closed:2008-01-09 12:20:55.000-0600
Versions:Frequency of
Description:I have setup Queue with some agents using SIP phones. I use Local channel with /n option.

If an agent transfers an answered ACD call to another extension the original agent remains in use and cannot receive any more ACD calls until the transferred call is torn down.


exten => _X.,1,NoCDR()
exten => _X.,2,Goto(default-local-devices,${EXTEN},1)
exten => _X.,3,Hangup()

exten => 6000,2,Dial(SIP/6000)

Agents on 'show queues' like :

Local/6000@default-agent/n (dynamic) (Not in use) has taken 7 calls (last was 114 secs ago)
Comments:By: Joel Vandal (jvandal) 2007-12-19 12:22:13.000-0600

Must read :

exten => 6000,1,Dial(SIP/6000)

By: Mark Michelson (mmichelson) 2007-12-19 13:14:25.000-0600

I think the problem would be solved if you did not use the /n on the Local channel. Is there something you are doing which is forcing you to use /n?

By: Joel Vandal (jvandal) 2007-12-19 13:16:25.000-0600

Problem is that when /n is removed, asterisk cannot see the status (inuse/not inuse) in 'show queues'

By: Jared Smith (jsmith) 2007-12-19 13:59:03.000-0600

For what it's worth, this bug has been around *forever* (since the early 1.2 days, at least). In fact, I wouldn't be surprised if it hadn't already been reported a few times.  And yes, the /n really is needed to be able to track device state.

Putnopvut, feel like tackling another sticky app_queue problem? :-)

By: Joshua C. Colp (jcolp) 2007-12-19 14:33:02.000-0600

The issue is that if you use /n the Local channel still sticks around, so when you perform a transfer you aren't actually transferring the caller, you are transferring the Local channel... which still sticks around.

By: Joel Vandal (jvandal) 2007-12-19 16:40:25.000-0600

Must read :

exten => 6000,1,Dial(SIP/6000)

By: David Brillert (aragon) 2008-01-02 08:20:18.000-0600

Any news on this bug?

We have written a real time ACD wallboard to see agent status.
The reports are needed for the agent members to see if they are logged and ready in the queues.
removing /n breaks our ability to see all realtime agent status' in the reports.
Including /n leaves agents "in use" when they transfer an ACD call.

By: Mark Michelson (mmichelson) 2008-01-02 09:16:51.000-0600

I took some time on Monday to analyze this, and unfortunately, if there is a way to fix this, it won't be easy.

Based on the scenario given, it seems like one of two potential fixes needs to be made. Either 1) Allow local channels with the /n specified to become available after transferring or 2) Modify app_queue so that it actually reads the device state of the underlying channel instead of a local channel so that the /n option is not necessary to be able to see availability.

Of these, 1) seems like a bad idea since it contradicts the idea behind why the /n is there to begin with.

2) seems more feasible, except that the actual channel structure for the local channel is not available to app_queue when it is getting information regarding device state changes.

I will look into possibility 2) more closely today and see how much of a change it would require in order to work.

By: rwjblue (rwjblue) 2008-01-03 16:12:32.000-0600

I just ran across this issue. Have you had a chance to determine whether app_queue can be modified to look at the actual device state?  At this point I will be making some dialplan changes to use SIP channel directly, but I would definitely prefer to use Local channels (so I can do more logic before sending the call).

By: Mark Michelson (mmichelson) 2008-01-03 17:14:05.000-0600

An update:

There's no way that app_queue (or anything) can be modified to allow for reporting of the underlying channel because there is simply no way to determine what the underlying channel is.

Having said that, I am working on a branch right now to work around this. It is located here:


Let me stress that this is a work in progress and SHOULD NOT be used in production yet. This modification allows for you to specify a second interface on the "member =>" line of queues.conf. The first interface specified will be the interface that the queue will actually attempt to call, whereas the second interface will be the interface where the queue monitors device state for that member. This would solve the problem of incorrectly reporting availability after a transfer for agent channels and local channels (as long as the local channel always called the same interface).

Now here's the bad news. This branch is created against trunk since new functionality is being introduced to the queue application, and it will not be officially backported to 1.4.

EDIT: I edited the URL above because the original one was not a publicly accessible one. Sorry about that.

By: Joel Vandal (jvandal) 2008-01-03 19:16:06.000-0600

putnopvut, will look your branches, but what about member that are added using AddQueueMember that arenot static (member => ...)

By: Joel Vandal (jvandal) 2008-01-03 19:24:01.000-0600

rwjblue, the problem we have when using directly the SIP channel is that we cannot  verify if the phone is in use on a NON-queue call (ex. voicemail, outgoing calls, etc). i.e. that if the agent check his voicemail (*98), he can receive new call.

Ok you can limit the SIP extension using call-limit=1 on sip.conf, but I've read (probably on mailing list) that call-limit can be deprecated in a future release and we must use GROUP function.

By: Mark Michelson (mmichelson) 2008-01-04 10:02:31.000-0600


The branch will account for members defined in queues.conf, realtime, through the dialplan, through the manager, and through the CLI. When I have completed the changes and merged them into trunk, I will update the necessary documentation areas to indicate how this is accomplished.

As far as progress on this branch goes, it appears to correctly monitor the secondary device specified in my small tests, but reloads currently cause big problems, so there's still work to be done in that regard.

By: Joel Vandal (jvandal) 2008-01-04 22:24:00.000-0600

putnopvut: excellent ! I have check changes you made on queue-state branches and compared it w/ trunk and branches/1.4 (to see if hard to backport) and this is very promising, thanks a lot !

By: Digium Subversion (svnbot) 2008-01-08 15:14:44.000-0600

Repository: asterisk
Revision: 97203

U   trunk/CHANGES
U   trunk/apps/app_queue.c
U   trunk/configs/queues.conf.sample

r97203 | mmichelson | 2008-01-08 15:14:44 -0600 (Tue, 08 Jan 2008) | 8 lines

Adding the option of specifying a second interface in a member definition for a queue. app_queue
will monitor this second device's state for the member, even though it actually calls the first
interface. This ability has been added for statically defined queue members, realtime queue members,
and dynamic queue members added through the CLI, dialplan, or manager.

(closes issue ASTERISK-11085, reported by acidv)



By: Digium Subversion (svnbot) 2008-01-09 12:20:55.000-0600

Repository: asterisk
Revision: 97535

_U  team/murf/bug11210/
U   team/murf/bug11210/CHANGES
U   team/murf/bug11210/apps/app_queue.c
U   team/murf/bug11210/apps/app_voicemail.c
U   team/murf/bug11210/channels/chan_console.c
U   team/murf/bug11210/channels/chan_mgcp.c
U   team/murf/bug11210/channels/chan_sip.c
U   team/murf/bug11210/configs/queues.conf.sample
U   team/murf/bug11210/funcs/func_groupcount.c
U   team/murf/bug11210/main/asterisk.c
U   team/murf/bug11210/main/autoservice.c
U   team/murf/bug11210/main/utils.c
U   team/murf/bug11210/res/res_jabber.c

r97535 | murf | 2008-01-09 12:20:51 -0600 (Wed, 09 Jan 2008) | 140 lines

Merged revisions 97125,97153-97154,97193,97196-97200,97203,97208,97248 via svnmerge from

r97125 | tilghman | 2008-01-08 12:06:27 -0700 (Tue, 08 Jan 2008) | 11 lines

Merged revisions 97077 via svnmerge from

r97077 | tilghman | 2008-01-08 12:02:13 -0600 (Tue, 08 Jan 2008) | 3 lines

Apply multiple crash fixes, found in issue ASTERISK-10897, but not completely
closing that issue.


r97153 | file | 2008-01-08 12:55:56 -0700 (Tue, 08 Jan 2008) | 12 lines

Merged revisions 97152 via svnmerge from

r97152 | file | 2008-01-08 15:53:52 -0400 (Tue, 08 Jan 2008) | 4 lines

If no group has been provided to the GROUP_COUNT dialplan function then use the first one specific to the channel.
(closes issue ASTERISK-10610)
Reported by: m4him


r97154 | file | 2008-01-08 13:06:52 -0700 (Tue, 08 Jan 2008) | 6 lines

Move common code for setting T38 capabilities and fix a bug with fax detection in the SIP RTP read callback. It's still sort of silly... but more on that later.
(closes issue ASTERISK-10758)
Reported by: dimas
     sipt38prop.patch uploaded by dimas (license 88)

r97193 | mmichelson | 2008-01-08 13:45:59 -0700 (Tue, 08 Jan 2008) | 17 lines

Merged revisions 97192 via svnmerge from

r97192 | mmichelson | 2008-01-08 14:42:07 -0600 (Tue, 08 Jan 2008) | 9 lines

Making some changes designed to not allow for a corrupted mailstream for a vm_state.

1. Add locking to the vm_state retrieval functions so that no linked list corruption occurs.
2. Make sure to always grab the persistent vm_state when mailstream access is necessary.
3. Correct an incorrect return value in the init_mailstream function.

(closes issue ASTERISK-10818, reported by dwhite)


r97196 | file | 2008-01-08 13:50:57 -0700 (Tue, 08 Jan 2008) | 14 lines

Merged revisions 97195 via svnmerge from

r97195 | file | 2008-01-08 16:48:20 -0400 (Tue, 08 Jan 2008) | 6 lines

Fix various DTMF issues in chan_mgcp.
(closes issue ASTERISK-10954)
Reported by: eferro
     dtmf_control_hybrid-inband-mode.patch uploaded by eferro (license 337)


r97197 | file | 2008-01-08 13:52:07 -0700 (Tue, 08 Jan 2008) | 2 lines

One line documentation ftw!

r97198 | tilghman | 2008-01-08 13:56:38 -0700 (Tue, 08 Jan 2008) | 11 lines

Merged revisions 97194 via svnmerge from

r97194 | tilghman | 2008-01-08 14:47:07 -0600 (Tue, 08 Jan 2008) | 3 lines

Increase constants to where we're less likely to hit them while debugging.
(Closes issue ASTERISK-11165)


r97199 | oej | 2008-01-08 13:58:56 -0700 (Tue, 08 Jan 2008) | 2 lines

Iksemel is alive in a new home. Release 1.3 is out with bug fixes.

r97200 | oej | 2008-01-08 14:01:46 -0700 (Tue, 08 Jan 2008) | 4 lines

Change reference to external library so it appears on the extref listing

r97203 | mmichelson | 2008-01-08 14:18:32 -0700 (Tue, 08 Jan 2008) | 8 lines

Adding the option of specifying a second interface in a member definition for a queue. app_queue
will monitor this second device's state for the member, even though it actually calls the first
interface. This ability has been added for statically defined queue members, realtime queue members,
and dynamic queue members added through the CLI, dialplan, or manager.

(closes issue ASTERISK-11085, reported by acidv)

r97208 | mmichelson | 2008-01-08 14:28:04 -0700 (Tue, 08 Jan 2008) | 10 lines

Blocked revisions 97206 via svnmerge

r97206 | mmichelson | 2008-01-08 15:24:48 -0600 (Tue, 08 Jan 2008) | 3 lines

Some coding guidelines-related cleanup


r97248 | twilson | 2008-01-08 14:56:57 -0700 (Tue, 08 Jan 2008) | 2 lines

Initialize new variable to NULL