[Asterisk-Users] Queues and local channels

Julian Lyndon-Smith asterisk at dotr.com
Thu Jun 15 00:32:15 MST 2006


I am using AddQueueMember to add a local channel to a queue. My 
(simplified) dial plan is

[AddMember]
exten => 789,1,AddQueueMember(SomeQ|Local/456 at Agent)

[Queue]
exten => 123,1,Queue(SomeQ|nt|||120)
exten => 123,2,Hangup()

exten => h,1,NoOp(InQ)

[Agent]
exten => 456,1,Dial(SIP/456)
exten => 456,2,Set(SomeVar=SomeValue)
exten => 456,3,Hangup

exten => h,1,NoOp(InAgent)

when a call comes into the Queue, it is passed to the 456 agent. All is 
fine and well.

So, what's my problem ? Well, I want to be able to trap the hangup 
event, but with data created in the [Agent] context. I noticed that the 
hangup in the [agent] context *is* executed, but when the agent picks up 
the call :) I suspect that this is because it is the local channel that 
is being hung up as the call in the Queue has been connected to the 
sip/456 call.

When the agent or caller hangs up, the h extension in [Queue] is 
executed. However, I want the data set by the 456,2 extension.

Is there any way of passing variables back up from the local channel to 
the other channels ?

I can use db put / get but would rather not ..

Julian



More information about the asterisk-users mailing list