<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">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><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><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_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>
</div></div>