<div dir="ltr">Forgot to clarify, I am also trying to pass some headers on response, i.e 180, 183</div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">Kelvin Chua</div></div>
<br><div class="gmail_quote">On Wed, Nov 16, 2016 at 12:22 PM, Kelvin Chua <span dir="ltr"><<a href="mailto:kelchy@gmail.com" target="_blank">kelchy@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra">thanks for the insights, i'm doing this as a proof of concept.</div><div class="gmail_extra">i relaized there are a lot of things which is a blocker by design.</div><div class="gmail_extra">what i initially tried is to get the bridged channel (of course this could pose a problem when in multiples)</div><div class="gmail_extra">ast_channel_bridge_peer(<wbr>session->channel)<br></div><div class="gmail_extra">then found out that this won't work because during this state, it's not yet bridged.</div><div class="gmail_extra">looks like there is no way to get the ast_channel of the downstream while call is not yet established, or is there?</div><div class="gmail_extra"><br></div><div class="gmail_extra">on earlier versions, there is struct ast_channel *dialed and struct ast_channel *dialing for this right?</div><div class="gmail_extra">
 <br><div class="gmail_quote"><div><div class="h5">On Wed, Nov 16, 2016 at 1:40 AM, Matthew Jordan <span dir="ltr"><<a href="mailto:mjordan@digium.com" target="_blank">mjordan@digium.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="h5"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="m_6068871434601097452gmail-">On Tue, Nov 15, 2016 at 6:17 AM, Joshua Colp <span dir="ltr"><<a href="mailto:jcolp@digium.com" target="_blank">jcolp@digium.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"><span>On Mon, Nov 14, 2016, at 03:46 AM, Kelvin Chua wrote:<br>
> playing around chan_pjsip/res_pjsip<br>
><br>
> i have some data i want to pass from upstream to downstream on reponse<br>
> for<br>
> example, P-Associated-URI<br>
><br>
> i figured that datastore on ast_sip_session only handles either the<br>
> upstream channel or the downstream channel. I can already parse the<br>
> header<br>
> on upstream but stuck on how to write<br>
> this to the reply downstream. any pointers?<br>
<br>
</span>There is no generic mechanism for doing this currently: specifically<br>
passing data back on a response or answer. The closest thing would be to<br>
add a new frame type (frame.h) to Asterisk, put data on it (in an<br>
ast_frame), propagate it through, and have it read/handled on the other<br>
side. If you end up with specific questions you can respond back with<br>
them, but you are sort of venturing into uncharted territory unless<br>
someone else has an idea on how to better do it.<br>
<br></blockquote><div><br></div></span><div>I'd throw out there as well that this _may_ not be worth doing, particularly automatically. As a B2BUA, you're always going to be fighting against Asterisk's model of channels and bridges if you want to automatically propagate information from an inbound channel to an outbound channel.</div><div><br></div><div>Things you have to think through:</div><div>(1) What happens when there are Local channels?</div><div>(2) What happens if there are multiple outbound channels (parallel dial)?</div><div>(3) What happens if I'm in a bridge with multiple channels (conference)?</div><div>(4) If the information can be provided in a re-INVITE, what occurs if I pass this information along before or after an answer?</div><div><br></div><div>One of the safer ways of handling the notion of passing things from an inbound to an outbound channel is to have the dialplan do it. You can use functions like PJSIP_HEADER to read values off of an inbound channel, store them in a channel variable with inheritance, then use a pre-dial handler with PJSIP_HEADER (or CHANNEL, etc.) to modify the outbound channel(s) prior to dialing. Doing that gives you more control over exactly _when_ you pass information along, and helps you avoid the many, many edge cases that can occur. </div></div><span class="m_6068871434601097452gmail-HOEnZb"><font color="#888888"><div><br></div>-- <br><div class="m_6068871434601097452gmail-m_1965551653693003684gmail_signature">Matthew Jordan<br>Digium, Inc. | CTO<br>445 Jan Davis Drive NW - Huntsville, AL 35806 - USA<br>Check us out at: <a href="http://digium.com" target="_blank">http://digium.com</a> & <a href="http://asterisk.org" target="_blank">http://asterisk.org</a></div>
</font></span></div></div>
<br></div></div><span class="">--<br>
______________________________<wbr>______________________________<wbr>_________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/mailm<wbr>an/listinfo/asterisk-dev</a><br></span></blockquote></div><br></div></div>
</blockquote></div><br></div>