Hi Sherwood,
Thanks for helping me with this. The reply was indeed to you - I didn't think
you could use Dial on a channel that had been hung up, so I have learnt
something. However I'm still struggling with it I'm afraid. I've tried using
Dial and I'm finding that when the original channel is hung up it all seems to
stop working.
In the hope you might help me more, I've run your example as it is (translated
into .conf cos that's what we use here - feel free to reply in ael) so I can
show you the output. I'm finding it hangs just before the call to Queue. I know
Queue(2) works because when I dial 400 it works as expected.
[intern]
exten => 300,1,Goto(test-in,s,1) ; experiment
exten => 400,1,Queue(2) ; control
[test-in]
exten => s,1,Set(__referencenum=foo)
exten => s,n,Hangup();
exten => h,1,NoOp(The reference number is still here! ${referencenum})
exten => h,n,Dial(Local/123@staffcalls)
[staffcalls]
exten => 123,1,NoOp(reference number is STILL here ${referencenum})
exten => 123,n,Queue(2)
-- Executing [300@intern:1] Goto("SIP/200-00000001", "test-in,s,1") in new
stack
-- Goto (test-in,s,1)
-- Executing [s@test-in:1] Set("SIP/200-00000001", "__referencenum=foo") in
new stack
-- Executing [s@test-in:2] Hangup("SIP/200-00000001", "") in new stack
== Spawn extension (test-in, s, 2) exited non-zero on 'SIP/200-00000001'
-- Executing [h@test-in:1] NoOp("SIP/200-00000001", "The reference number
is still here! foo") in new stack
-- Executing [h@test-in:2] Dial("SIP/200-00000001", "Local/123@staffcalls")
in new stack
-- Called 123@staffcalls
== Spawn extension (test-in, h, 2) exited non-zero on 'SIP/200-00000001'
-- Executing [123@staffcalls:1] NoOp("Local/123@staffcalls-c28c;2",
"reference number is STILL here foo") in new stack
===== then it just hangs here! ==========
Naomi
----- Original Message -----
From: "Sherwood McGowan" <[email protected]>
To: [email protected]
Sent: Monday, 11 April, 2011 5:26:05 PM
Subject: Re: [asterisk-users] Variable inheritance with dialplan command
Originate
On 4/11/2011 5:15 AM, Naomi Rosenberg wrote:
>
> Hi,
>
> The reason I think Dial isn't appropriate is not to do with the
> database call. Here's the wider context of the application I'm putting
> together:
>
> Punter calls in, leaves a message, gets a reference number, hangs up.
> System then initiates call to a queue of on-call staff and when one
> answers it plays them the ref and the punter's message.
>
> The Originate bit is when, after the punter's hung up, the system
> initiates an outgoing call.
>
> I've worked around the inheritance problem by using the reference
> number as the extension, which being the primary key then allows me to
> retrieve the rest of the data from the DB again once over the
> Originate hump.
>
> Passing it all in the extension is an idea, but would not suit this
> case since there is a lot of data and as the application develops the
> nature of the data may change.
>
> Naomi
>
I'm still not following why you think Dial is a bad idea. You're already
using a Local channel, which causes dialplan code to be executed upon
the start of the Local channel. Maybe you were replying to someone
else's post but hit reply on mine?
Your stated example in your email is pretty much EXACTLY what I'm
already accomplishing using Dial, Local Channels, and Variable
inheritance. Were it not for a Non-Disclosure Agreement that does not
allow me to share the specific code, I could show it to you and then
maybe you'd see what I'm trying to say.
Let's try a quickie example of what you're saying (I'm going to use AEL
this time, because typing same= > over and over drives me nuts)
context inbound {
// punter calls in
_X. => {
// code for recording the message and database junk
// code returns a reference number to the caller
Set(__referencenum=foo); // this is the inherited variable
Hangup(); }
h => {
Noop(The reference number is still here! ${referencenum})
// Here is where we trigger the queue call to the staff
Dial(Local/123@staffcalls) ;
} }
context staffcalls {
123 => {
Noop(reference number is STILL here ${referencenum});
// do your database lookup based on ${referencenum} here
Queue(staff) ; //obviously not a representation of your actual
queue request
} }
the above example accomplishes what you're talking about, without
inheritance problems, and is working in a callcenter without issues.
--
Sherwood McGowan <[email protected]>
Carrier, ITSP, Call Center, and PBX Solutions Consultant
--
_____________________________________________________________________
-- 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