Hi there,

trying to maintain a dialog stateful UAS from script level may be something difficult and painful to do. Maybe you should take a look at the UAC/UAS support provided by the b2b_entities module in OpenSIPS 3.4:
https://blog.opensips.org/2023/03/22/api-driven-sip-user-agent-end-point-with-opensips-3-4/

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
  https://www.opensips-solutions.com
  https://www.siphub.com

On 11/11/23 3:26 AM, Kevin Kennedy wrote:
I was able to send the BYE to the call by adding a parameter in the dialog module to timeout the dialog with a short time letting the announcement play, and added the create_dialog with the flag of B to send BYE on dialog timeout at the beginning of the route.  Now that the transactions are working correctly, I can use the same route for the calls with SDP as well and tighten up the script.  Thanks for helping out with some code examples, and letting me update on my progress on this thread.  Hopefully this can help someone else out having a similar problem when trying to use Opensips with RTPENGINE as an announcement server.

modparam("dialog", "default_timeout", 12)

route["RTPENGINE"]{
    if (has_body("application/sdp")) {
        create_dialog("B");
        rtpengine_offer();
        $json(reply) := $rtpquery;
$var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);
$var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);
        remove_body_part();
append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port)>\r\n");
        append_to_reply("Content-Type: application/sdp\r\n");
        $var(body) = $(rb{re.subst,/(IP4.).*/\1$var(addr)/g});
        $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});
        t_reply_with_body(200, "OK", $var(body));
        rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");
        exit;
    } else {
        create_dialog("B");
        $var(newbody) = ("v=0\r\no=Opensips " + $Ts + " 0 IN IP4 " + $socket_in(ip) + "\r\ns=-\r\nc=IN IP4 " + $socket_in(ip) + "\r\nt=0 0\r\nm=audio " + $sp + " RTP/AVP 0 101\r\na=sendrecv\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-15\r\n");         rtpengine_offer("from-tag=$ft replace-session-connection trust-address replace-origin codec-strip-g729",,$var(body),$var(newbody));
        $json(reply) := $rtpquery;
$var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);
$var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);
append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port)\r\n");
        append_to_reply("Content-Type: application/sdp\r\n");
        $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});
        t_reply_with_body(200, "OK", $var(body));
        rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");
        exit;
    }

}

Thank you.

Kevin

On Fri, Nov 10, 2023 at 4:54 PM Kevin Kennedy <kennedy4...@gmail.com <mailto:kennedy4...@gmail.com>> wrote:

    Looks like if I put t_newtran(); in the main route this created
    the transaction and allowed the ACK to be recognized.  Now How do
    I force Opensips to send a BYE.

    Thank you.

    On Fri, Nov 10, 2023 at 11:44 AM Kevin Kennedy
    <kennedy4...@gmail.com <mailto:kennedy4...@gmail.com>> wrote:




                                    I was able to get audio, The
                                    problem I was having is the
                                    Originator string in the SDP. 
                                    However, I am still having the
                                    same issue with accepting the ACK
                                    from the Originator and not
                                    resending the 200OK.  Can someone
                                    please help with this issue?

                                    Thank you

                                    *Code snippet for the Late Media
                                    route*
                                    route["LateMedia3"]{
                                        if (has_body("application/sdp")) {
                                            xlog("######## Entered
                                    route LateMedia3 with Fake SDP
                                    from Originator ########\r\n");
                                    rtpengine_offer();
                                            $json(reply) := $rtpquery;
                                    
$var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local
                                    port);
                                    
$var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local
                                    address);
                                    remove_body_part();
                                    
append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port);user=phone>\r\n");
                                    append_to_reply("Content-Type:
                                    application/sdp\r\n");
                                    $var(body) =
                                    $(rb{re.subst,/(IP4.).*/\1$var(addr)/g});
                                            $var(body) =
                                    
$(var(body){re.subst,/(audio.)...../\1$var(port)/g});
                                    t_reply_with_body(200, "OK",
                                    $var(body));
                                    rtpengine_play_media("call-id=$ci
                                    from-tag=$ft
                                    file=/etc/rtpengine/unk_num.wav");
                                            async(sleep(10), after_media);
                                         } else {
                                            xlog("######## Entered
                                    route LateMedia3 No SDP received,
                                    Create one from variable
                                    ########\r\n");
                                            $var(newbody) =
                                    ("v=0\r\no=Opensips " + $Ts + " 0
                                    IN IP4
                                    10.255.100.147\r\ns=-\r\nc=IN IP4
                                    10.255.100.147\r\nt=0 0\r\nm=audio
                                    3140 RTP/AVP 0 101\r\na
                                    =sendrecv\r\na=rtpmap:0
                                    PCMU/8000\r\na=rtpmap:101
                                    telephone-event/8000\r\na=fmtp:101
                                    0-15\r\n");
                                    xlog("#########################
                                    Body to RTPENGINE is
                                    
###########################\r\n$var(newbody)\r\n");
                                    rtpengine_offer("from-tag=$ft
                                    replace-session-connection
                                    trust-address replace-origin
                                    
codec-strip-g729",,$var(body),$var(newbody));
                                    xlog("#########################
                                    Body from RTPENGINE is
                                    
###########################\r\n$var(body)\r\n");
                                            $json(reply) := $rtpquery;
                                    
$var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local
                                    port);
                                    
$var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local
                                    address);
                                    
append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port);transport=udp>\r\n");
                                    append_to_reply("Content-Type:
                                    application/sdp\r\n");
                                    $var(body) =
                                    
$(var(body){re.subst,/(IP4.).*/\1$var(addr)/g});
                                            $var(body) =
                                    
$(var(body){re.subst,/(audio.)...../\1$var(port)/g});
                                    xlog("#########################
                                    Body being sent in Reply is
                                    ######################\r\n$var(body)\r\n");
                                    t_reply_with_body(200, "OK",
                                    $var(body));
                                    rtpengine_play_media("call-id=$ci
                                    from-tag=$ft
                                    file=/etc/rtpengine/unk_num.wav");
                                    async(sleep(10), after_media);
                                            }
                                    }

                                    route[after_media]
                                        { if (t_was_cancelled()) {
                                    rtpengine_delete();
                                            exit;
                                        } else {
                                    rtpengine_delete();
                                    sl_send_reply(486,"Busy here");
                                            exit;
                                        }
                                    }


_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

_______________________________________________
Users mailing list
Users@lists.opensips.org
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to