[OpenSIPS-Users] replace_body()

Mark Farmer farmorg at gmail.com
Wed Mar 25 11:06:11 EST 2020


Hi Bogdan, thanks for the reply.

That was what I ended up trying to do, hence the other question about
deleting a line from a pvar but that's another thread.

However, I do have a related question.
Does the body modification also apply to a reply? The issue I have now is
that when I try to apply modifications to the reply, they are not applied.

I set $avp(CallFlow) before sending the INVITE and check it in the reply
route in order to apply the rtpengine() flags but the outgoing reply has
the wrong media IP & codec,

onreply_route[DROUTING_RTPENGINE] {

        ...

        if ($rs=~"(2[0-9][0-9])|(183)" && has_body("application/sdp")) {
            xlog("CUSTOM_LOG: Processing reply $fU Gateway Attribues:
$var(gw_attrs)");
            fix_nated_contact();
            if (is_from_gw("2") && $avp(CallFlow)=="TPTY_PSTN") {
                    xlog("CUSTOM_LOG: Reply from PSTN to TPTY");
                    setflag(R_PSTN_TPTY);
                } else if (is_from_gw("2") && $avp(CallFlow)=="PBX_PSTN") {
                    xlog("CUSTOM_LOG: Reply from PSTN to PBX");
                    setflag(R_PSTN_PBX);
                } else if (is_from_gw("3") && $avp(CallFlow)=="PBX_TPTY") {
                    xlog("CUSTOM_LOG: Reply from TPTY to PBX");
                    setflag(R_TPTY_PBX);
                } else if (is_from_gw("3") && $avp(CallFlow)=="PSTN_TPTY") {
                    xlog("CUSTOM_LOG: Reply from MSDR to PSTN");
                    setflag(R_TPTY_PSTN);
                } else if (is_from_gw("1") && $avp(CallFlow)=="PSTN_PBX") {
                    xlog("CUSTOM_LOG: Reply from PBX to PSTN");
                    setflag(R_PBX_PSTN);
                } else if (is_from_gw("1") && $avp(CallFlow)=="TPTY_PBX") {
                    xlog("CUSTOM_LOG: Reply from PBX to MSDR");
                    setflag(R_PBX_TPTY);
                } else xlog("CUSTOM_LOG: No match in on_reply route!");
        }

        $var(R_PSTN_TPTY) = "RTP AVP ICE=remove in-face=external
out-face=internal codec-mask-PCMA transcode-G722 replace-session-connection
replace-origin";
        $var(R_PSTN_PBX) = "RTP AVP ICE=remove in-face=external
out-face=internal replace-session-connection replace-origin";
        $var(R_TPTY_PBX) = "RTP AVP ICE=remove in-face=internal
out-face=internal replace-session-connection replace-origin";
        $var(R_TPTY_PSTN) = "RTP AVP ICE=remove in-face=internal
out-face=external codec-mask-G722 transcode-PCMA replace-session-connection
replace-origin";
        $var(R_PBX_PSTN) = "RTP AVP ICE=remove in-face=internal
out-face=external replace-session-connection replace-origin";
        $var(R_PBX_TPTY) = "RTP AVP ICE=remove in-face=internal
out-face=internal codec-mask-PCMA transcode-G722 replace-session-connection
replace-origin";

        if (isflagset(R_PSTN_TPTY)) {
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R_PSTN_TPTY $R_PSTN_TPTY");
                rtpengine_answer("$var(R_PSTN_TPTY)");
            } else if (isflagset(R_PSTN_PBX)) {
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R__PSTN_PBX $R_PSTN_PBX");
                rtpengine_answer("$var(R_PSTN_PBX)");
            } else if (isflagset(R_TPTY_PBX)) {
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R_TPTY_PBX $R_TPTY_PBX");
                rtpengine_answer("$var(R_TPTY_PBX)");
            } else if (isflagset(R_TPTY_PSTN)) {
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R_TPTY_PSTN $R_TPTY_PSTN");
                rtpengine_answer("$var(R_TPTY_PSTN)");
            } else if (isflagset(R_PBX_PSTN)){
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R_PBX_PSTN $R_PBX_PSTN");
                rtpengine_answer("$var(R_PBX_PSTN)");
            } else if (isflagset(R_PBX_TPTY)) {
                xlog("CUSTOM_LOG: Setting up media on reply using variable
$$R_PBX_TPTY $R_PBX_TPTY");
                rtpengine_answer("$var(R_PBX_TPTY)");
            }
}


On Fri, 20 Mar 2020 at 11:04, Bogdan-Andrei Iancu <bogdan at opensips.org>
wrote:

> Hi Mark,
>
> You mentioned calling rtpengine before? if so, note that you cannot have
> more than one change over the same part of the body. And rtpengine is
> replacing the whole body, so you cannot change a prev change.
> What you have to do is to tell  rtpengine_offer() to provide the new body
> into a variable (rather then changing the msg), so you can change the value
> of the variable and push it into the msg afterwards.
>
> PS: why do you do record_route_set() + record_route() in the same time ???
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
>   https://www.opensips-solutions.com
> OpenSIPS Summit, Amsterdam, May 2020
>   https://www.opensips.org/events/Summit-2020Amsterdam/
>
> On 3/19/20 1:21 PM, Mark Farmer wrote:
>
> Hi everyone
>
> I am trying to remove a line from the SDP resulting from rtpengine_offer()
> but it's not working for me. Can anyone tell me what I am doing wrong
> please?
>
> if (is_from_gw("2")) {
>                 remove_hf("Contact","g");
>                 insert_hf("Contact: <sip:$fU@$var(fqdn):5061;did=$DLG_did>
> \r\n");
>                 xlog("CUSTOM_LOG: Call to Microsoft - Adjusting SIP
> Headers & SDP");
>                 set_advertised_address("$var(fqdn)");
>                 record_route_preset("my.fqdn:5061;transport=tls",
> "XXX.XXX.XXX.XXX:5060");
>                 add_rr_param(";r2=on");
>                 record_route();
>                 if (replace_body("a=setup:actpass","")) {
>                         xlog("CUSTOM_LOG: Removed a=setup:actpass line
> from SDP");
>                 }
> }
>
> I have also tried:
>
> if (replace_body("a=setup:actpass\r",""))
> and
> if (replace_body("a=setup:actpass\r\n",""))
>
> Many thanks
> Mark.
>
>
> _______________________________________________
> Users mailing listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
>
>
>

-- 
Mark Farmer
farmorg at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20200325/69732c6a/attachment.html>


More information about the Users mailing list