[asterisk-users] vars in Macros called by DIAL with option M

Thomas Winter thowinter at googlemail.com
Tue Aug 5 14:19:44 CDT 2008


On Tuesday 05 August 2008 18:04, Tilghman Lesher wrote:
> On Tuesday 05 August 2008 10:47:34 Thomas Winter wrote:
> > Hi all,
> >
> > Iam using an DIAL Command wird Macro if callee is answer the call.
> >
> > exten => 123,n,DIAL(SIP/123 at provider,180,gM(test_connect))
> > exten => 123,n,NoOp( ${var_from_macro})
> >
> >
> > In Macro test_connect Iam generating an new variable var_from_macro and
> > would like to use this var in the original dialplan.
> > I tried also __var_from_macro but didnt work. How can I set vars in
> > macros called by DIAL so that I can use these vars in the Dialplan or in
> > the h extention.
>
> There isn't any good way to do that, period.  When it comes to inheritance,
> variables are only inherited from a master channel to a slave channel.  In
> the case of the Macro operating within the Dial, that Macro is occurring
> exclusively on the slave channel.  You cannot directly set variables on
> other channels (for obvious race-condition reasons).

I see..

> However, you could do this in a roundabout way, either by using a database
> or by using shared variables in trunk.  You'd need to first set (in the
> master channel, before the Dial) an inherited variable containing the name
> of the master channel, i.e. Set(_masterchan=${CHANNEL(name)}), then use
> that inherited variable to set the shared variable in the master channel
> from the slave channel, i.e. Set(SHARED(foo,${masterchan})=...).  Finally,
> you would be able to access the shared variable in the master channel with
> ${SHARED(foo)}.  Again, the SHARED function is only available in trunk at
> this time, although you could probably backport it to 1.4 with minimal
> trouble.

I dont want to use trunk, but thanks for info...



More information about the asterisk-users mailing list