<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 2, 2017 at 1:25 PM, Dmitriy Serov <span dir="ltr"><<a href="mailto:serov.d.p@gmail.com" target="_blank">serov.d.p@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[sub-out-do-dial]<br>
exten => s,1,NoOp(Dial)<br>
 same => n,NoOp(FirstChannel: ${CHANNEL})<br>
 same => n,Dial(????,60,gF)<br>
 same => n,NoOp(SecondChannel: ${CHANNEL})<br>
 same => n,Return()<br>
<br>
[some]<br>
exten => s,1,GoSub(sub-out-do-dial,s,1)<br>
<br>
In case of the destination channel hangs up in log i see:<br>
ERROR[26570][C-000000e7] app_stack.c: Return without Gosub: stack is empty<br></blockquote><div><br></div><div>I think you mean if the calling channel hangs up you get the error message.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Yes. SecondChannel != FirstChannel.<br>
Is it a wrong way to use Dial(g)+Gosub? Or any Dial in sub?<span class="HOEnZb"><font color="#888888"><br></font></span></blockquote><div><br></div><div>The first channel (calling party) knows about being in the subroutine.  It was the</div><div>channel executing dialplan to get into the subroutine.  Use of the g option with this</div><div>dialplan is OK as the calling channel knows where the subroutine was called from.<br></div><div><br></div><div>The second channel (called party) knows nothing about being in a subroutine so it</div><div>cannot return from one.  It has not executed any dialplan before.  The F option simply</div><div>tells it to start executing dialplan at the priority after the dial application.  This dialplan</div><div>needs to be able to distinguish between the two channels and act accordingly.  Using</div><div>the F() option with a dialplan location is the simplest way to distinguish between the</div><div>two channels.</div><br><div>Richard</div><br></div></div></div>