<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Nov 27, 2016 at 8:07 AM, Jonathan H <span dir="ltr"><<a href="mailto:lardconcepts@gmail.com" target="_blank">lardconcepts@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Thanks, Max.<br>
<br>
Yes, of course, you are right, and I am an idiot because I was tired<br>
and putting underscores before the variable name when I read it back!<br>
Then I forgot to post the followup email to say I had figured it out.<br>
<br>
Now, this SHARED was not something I was aware of, but looked like an<br>
ideal solution to passing variables BACK from to the parent channel.<br>
<br>
However, it does not seem to be very reliable.<br>
<br>
Code:<br>
<br>
[svtest1]<br>
exten => s,1,Answer()<br>
    same => n,Verbose(1,Answered channel:${CHANNEL})<br>
    same => n,Dial(Local/s@svtest2,,g)<br>
    same => n,Verbose(1,***In channel:${CHANNEL} sharedVar:<br>
${SHARED(sharedVar,Local/s@<wbr>svtest2)} )<br>
    same => n,Hangup()<br>
<br>
[svtest2]<br>
exten => s,1,NoOp()<br>
    same => n,Set(SHARED(sharedVar,Local/<wbr>s@svtest2)="I have been set<br>
in svtest2")<br>
    same => n,Verbose(1,***In channel:${CHANNEL} sharedVar:<br>
${SHARED(sharedVar,Local/s@<wbr>svtest2)})<br>
    same => n,Answer()<br>
    same => n,Hangup()<br></blockquote><div><br></div><div>There are a few problems with the way you are trying to use SHARED<br></div><div>here.<br></div><div>1)  Dial with the g option continues in the dialplan when the called channel<br>hangs up and you are accessing a SHARED variable on the called channel<br>while it is being destroyed.  Thus it may or may not still exist when you<br>attempt to access it.<br>2) You are using local channels.  Remember local channels always come<br>in pairs.  The local channel name you are using to reference the SHARED<br></div><div>variable is ambiguous.  Not only do you not know which half of a local<br>channel pair you will get, you may not even get one of the local channels<br>the Dial created for this call if you have more than one of these calls<br>happening in parallel.<br><br></div><div>Executing this CLI command:<br>CLI> originate local/s@svtest1 application echo<br></div><div><br></div><div>Your dialplan creates this channel chain when Local/s@svtest2 executes<br>the Answer:<br><br></div><div>Echo() -- Local/s@svtest1-00000000;1 -- Local/s@svtest1-00000000;2 --<br></div><div>    Local/s@svtest2-00000001;1 -- Local/s@svtest2-00000001;2 -- Answer()<br></div><br></div><div class="gmail_quote">These problems can be avoided if we make a couple of changes.<br>1) Change which channel maintains the SHARED variables to the calling channel.<br>2) Pass the calling channel name to the called channel using variable inheritance.<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">[svtest1]<br></div><div class="gmail_quote">exten = s,1,NoOp()<br>same = n,Answer()<br></div><div class="gmail_quote">same = n,Set(__MY_CALLER=${CHANNEL(name)})<br></div><div class="gmail_quote">same = n,Dial(Local/s@svtest2,,g)<br></div><div class="gmail_quote">same = n,NoOp(Returned SHARED(sharedVar) = '${SHARED(sharedVar)'}<br></div><div class="gmail_quote">same = n,Hangup()<br><br></div><div class="gmail_quote">[svtest2]<br></div><div class="gmail_quote">exten = s,1,NoOp()<br></div><div class="gmail_quote">exten = n,Set(SHARED(sharedVar,MY_CALLER)="I have been set in svtest2 by ${CHANNEL(name)}")<br></div><div class="gmail_quote">exten = n,Answer()<br></div><div class="gmail_quote">exten = n,Hangup()<br></div><div class="gmail_quote"><br><div>Richard<br></div></div><br></div></div>