<br><br><div class="gmail_quote">2013/3/26 Richard Mudgett <span dir="ltr">&lt;<a href="mailto:rmudgett@digium.com" target="_blank">rmudgett@digium.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">&gt; On 03/25/2013 05:17 PM, Olivier wrote:<br>
&gt; &gt; Hello,<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m giving hangup-handlers a try on a new Asterisk 11.2.1 setup.<br>
&gt; &gt; My plan is to use this handler to update my CDRs with values such<br>
&gt; &gt; as<br>
&gt; &gt; Asterish and Tech cause (see function HANGUP_CAUSE).<br>
&gt; &gt; I want to have my custom hangup-handler be run only once and when<br>
&gt; &gt; &quot;the<br>
&gt; &gt; second channel&quot; hangs up.<br>
&gt; &gt;<br>
&gt; &gt; At the moment, I&#39;m issuing a couple of &quot;channel originate<br>
&gt; &gt; Local/1@mycontext1 extension 123456789@mycontext2&quot; commands.<br>
&gt; &gt;<br>
&gt; &gt; I&#39;m observing that as I&#39;m using expressions such as<br>
&gt; &gt; Local/1@mycontext1,<br>
&gt; &gt; a Local &lt;ZOMBIE&gt; channel is hanged before the second channel stops<br>
&gt; &gt; ringing.<br>
&gt; &gt; When the second channel itself ends, my handler is not run anymore.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; What would you suggest me to do ?<br>
&gt; &gt; Should I delay my Set(CHANNEL(hangup_handler_wipe)= ...) statement<br>
&gt; &gt; till<br>
&gt; &gt; both channels are bridged together ?<br>
&gt; &gt;<br>
&gt;<br>
&gt; It is hard to say without seeing the dialplan that you&#39;re using. Most<br>
&gt; likely, the hangup handler has been attached to one half of the Local<br>
&gt; channel as opposed to the channel you want it attached to. Can you<br>
&gt; include the full dialplan that you&#39;re using?<br>
&gt;<br>
&gt;<br>
&gt; Yes, of course.<br>
&gt; I&#39;ll simplify it and post it here ASAP.<br>
&gt;<br>
&gt;<br>
&gt; Here it is:<br>
&gt;<br>
&gt; [hangup-handler]<br>
&gt; exten =&gt; s,1,Verbose(0,Entering context ${CONTEXT} in channel<br>
&gt; ${CHANNEL} with EXTEN and CID set to ${EXTEN} and ${CALLERID(num)})<br>
&gt;<br>
&gt;<br>
&gt; [to-foobar]<br>
&gt; exten =&gt; _X.,1,Verbose(0,Entering context ${CONTEXT} with EXTEN and<br>
&gt; CID set to ${EXTEN} and ${CALLERID(num)})<br>
&gt; same =&gt; n, Set(CHANNEL(hangup_handler_push)=hangup-handler,s,1)<br>
&gt; same =&gt; n, Dial(SIP/foobar/${EXTEN})<br>
&gt; same =&gt; n, Hangup()<br>
&gt;<br>
&gt;<br>
&gt; [from-foobar]<br>
&gt; exten =&gt; _X.,1,Verbose(0,Entering context ${CONTEXT} with EXTEN and<br>
&gt; CID set to ${EXTEN} and ${CALLERID(num)})<br>
&gt; same =&gt; n, Dial(SIP/foobar/${EXTEN})<br>
&gt; same =&gt; n, Hangup()<br>
&gt;<br>
&gt;<br>
&gt; The command I used is :<br>
&gt; channel originate Local/7005@from-foobar extension 7003@to-foobar<br>
&gt;<br>
&gt; Console prints:<br>
&gt; Entering context from-foobar with EXTEN and CID set to 7005 and<br>
&gt; Entering context to-foobar with EXTEN and CID set to 7003 and<br>
&gt; Entering context hangup-handler in channel<br>
&gt; Local/7005@from-foobar-00000008;1&lt;ZOMBIE&gt; with EXTEN and CID set to<br>
&gt; s and<br>
&gt;<br>
&gt; The first line is printed at soon as Enter key is pressed.<br>
&gt; The second and third lines are printed when originating channel<br>
&gt; answers (here extension SIP/foobar/7005)<br>
<br>
</div></div>The originate creates a chain of channels like so:<br>
SIP/foobar/7005 -- Local/7005@from-foobar;1 -- Local/7005@from-foobar;2 -- SIP/foobar/7003<br>
<br>
You put the hangup handler on the Local/7005@from-foobar;2 channel.  When<br>
the local channel optimizes itself out, the hangup handler is run on the<br>
hanging up local channel.<br>
<br>
What you need to do is use a pre-dial handler to put the hangup handler on<br>
the SIP/foobar/7003 channel.<br>
<br>
Richard<br>
<br>
[1] <a href="https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers</a><br>
[2] <a href="https://wiki.asterisk.org/wiki/display/AST/Pre-Dial+Handlers" target="_blank">https://wiki.asterisk.org/wiki/display/AST/Pre-Dial+Handlers</a><br>
<div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br>Thanks to the above suggestion, the dialplan bellow made it.<br>Thanks for helping.<br><br><br>[pre-dial-handler]<br>exten =&gt; s,1,Verbose(0,Entering context ${CONTEXT} in channel ${CHANNEL} with EXTEN and CID set to ${EXTEN} and ${CALLERID(num)})<br>
  same =&gt; n, Set(CHANNEL(hangup_handler_push)=hangup-handler,s,1)<br><br>[hangup-handler]<br>exten =&gt; s,1,Verbose(0,Entering context ${CONTEXT} in channel ${CHANNEL} with EXTEN and CID set to ${EXTEN} and ${CALLERID(num)})<br>
<br>[to-foobar]<br>exten =&gt; _X.,1,Verbose(0,Entering context ${CONTEXT} with EXTEN and CID set to ${EXTEN} and ${CALLERID(num)})<br>;  same =&gt; n, Set(CHANNEL(hangup_handler_push)=hangup-handler,s,1)<br>  same =&gt; n, Dial(SIP/foobar/${EXTEN},,b(pre-dial-handler^s^1))<br>
  same =&gt; n, Hangup()<br><br>[from-foobar]<br>exten =&gt; _X.,1,Verbose(0,Entering context ${CONTEXT} with EXTEN and CID set to ${EXTEN} and ${CALLERID(num)})<br>  same =&gt; n, Dial(SIP/foobar/${EXTEN})<br>  same =&gt; n, Hangup()<br>
<br><br><br><br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="HOEnZb"><div class="h5">
--<br>
_____________________________________________________________________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" target="_blank">http://www.api-digital.com</a> --<br>
New to Asterisk? Join us for a live introductory webinar every Thurs:<br>
               <a href="http://www.asterisk.org/hello" target="_blank">http://www.asterisk.org/hello</a><br>
<br>
asterisk-users mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-users" target="_blank">http://lists.digium.com/mailman/listinfo/asterisk-users</a><br>
</div></div></blockquote></div><br>