<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 15, 2016 at 8:21 AM, Ethy H. Brito <span dir="ltr"><<a href="mailto:ethy.brito@inexo.com.br" target="_blank">ethy.brito@inexo.com.br</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"><br>
Hi All<br>
<br>
I have some users that can access outside world telephone number.<br>
They have external numbers to be reached as well.<br>
<br>
Due to internal policy restrictions, they are not allowed to dial<br>
each other internal numbers. I Can't change that.<br>
<br>
When an internal user dials the external number for another internal user,<br>
I Dial(Local/...) the second user.<br>
<br>
So I end up with two channels:<br>
        SIP/origin to Local/dest_ext_num;1<br>
        and<br>
        Local/dest_ext_num;2 to SIP/destination<br>
<br>
When the call is hung up (h extension), I need to grab the stats of both<br>
legs (SIP/origin and SIP/destination) of the call, so I use:<br>
<br>
        ${RTPAUDIOQOS}<br>
<br>
to grab the origin leg stats and<br>
<br>
        Set(MyDESTCH=${CUT(CDR(<wbr>dstchannel),\;,1)}\;2)<br>
        Set(DESTCH=${IMPORT(${<wbr>MyDESTCH},BRIDGEPEER)})<br>
        Set(STATS=${IMPORT(${DESTCH},<wbr>CHANNEL(rtpqos,audio,all))})<br>
<br>
to grab the stats for destination leg.<br>
<br>
MyDESTCH is correctly set to "Local/dest_ext_num;2"<br>
DESTCH receives "SIP/destination"<br>
But STATS is ""<br>
<br>
What am I missing here?<br></blockquote><div><br></div><div>You cannot get information from a channel that no longer exists.<br>SIP/destination almost certainly no longer exists when the h exten<br></div><div>runs on SIP/origin.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Is there a smarter way for grabbing these?<br></blockquote><div><br></div><div>I would suggest using hangup handlers [1].  Add a hangup handler to<br></div><div>SIP/origin and SIP/destination.  The handler will run on the respective<br></div><div>channel when it hangs up.  These two channels will hang up at different<br></div><div>times so you can only get the current channel's information.  If you have<br></div><div>to process both channel's information then you are going to have to do that<br></div><div>after both channels have hung up.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Another questions: when the call is hung, in which context is "h extension" run? </blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Always originator? Always destination? Depends on what?<br>
What about in this scenario I describe (four contexts involved)?<br></blockquote><div><div><br></div><div>In your case, the h exten is run by SIP/origin and Local/dest_ext_num;2.  These<br>channels executed dialplan when the call was originally placed.  The h exten runs<br>on the respective channel in the last context the channel executed dialplan.  This<br>is usually at the Dial application.<br></div><br>Richard<br><br>[1] <a href="https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers">https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers</a><br></div></div><br></div></div>