<div dir="ltr">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.<div><br></div><div>modparam("dialog", "default_timeout", 12)<br></div><div><br></div><div>route["RTPENGINE"]{<br> if (has_body("application/sdp")) {<br> create_dialog("B");<br> rtpengine_offer();<br> $json(reply) := $rtpquery;<br> $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);<br> $var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);<br> remove_body_part();<br> append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port)>\r\n");<br> append_to_reply("Content-Type: application/sdp\r\n"); <br> $var(body) = $(rb{re.subst,/(IP4.).*/\1$var(addr)/g}); <br> $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});<br> t_reply_with_body(200, "OK", $var(body));<br> rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");<br> exit;<br> } else {<br> create_dialog("B");<br> $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");<br> rtpengine_offer("from-tag=$ft replace-session-connection trust-address replace-origin codec-strip-g729",,$var(body),$var(newbody));<br> $json(reply) := $rtpquery;<br> $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);<br> $var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);<br> append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port)\r\n");<br> append_to_reply("Content-Type: application/sdp\r\n");<br> $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});<br> t_reply_with_body(200, "OK", $var(body));<br> rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");<br> exit;<br> }<br><br>}<br></div><div><br></div><div>Thank you.</div><div><br>Kevin</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 10, 2023 at 4:54 PM Kevin Kennedy <<a href="mailto:kennedy4260@gmail.com">kennedy4260@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">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.<div><br></div><div>Thank you.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Nov 10, 2023 at 11:44 AM Kevin Kennedy <<a href="mailto:kennedy4260@gmail.com" target="_blank">kennedy4260@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>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?<div><br></div><div>Thank you</div><div><br><div><b>Code snippet for the Late Media route</b></div><div>route["LateMedia3"]{<br> if (has_body("application/sdp")) {<br> xlog("######## Entered route LateMedia3 with Fake SDP from Originator ########\r\n");<span style="color:rgb(80,0,80)"><br> rtpengine_offer();<br> $json(reply) := $rtpquery;<br> $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);<br></span> $var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);<br> remove_body_part();<br> append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port);user=phone>\r\n");<span style="color:rgb(80,0,80)"><br> append_to_reply("Content-Type: application/sdp\r\n");<br></span> $var(body) = $(rb{re.subst,/(IP4.).*/\1$var(addr)/g});<span style="color:rgb(80,0,80)"><br> $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});<br> t_reply_with_body(200, "OK", $var(body));<br></span> rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");<br> async(sleep(10), after_media);<br> } else {<br> xlog("######## Entered route LateMedia3 No SDP received, Create one from variable ########\r\n");<br> $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<br>=sendrecv\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:101 telephone-event/8000\r\na=fmtp:101 0-15\r\n");<br> xlog("######################### Body to RTPENGINE is ###########################\r\n$var(newbody)\r\n");<span style="color:rgb(80,0,80)"><br> rtpengine_offer("from-tag=$ft replace-session-connection trust-address replace-origin codec-strip-g729",,$var(body),$var(newbody));<br></span> xlog("######################### Body from RTPENGINE is ###########################\r\n$var(body)\r\n");<span style="color:rgb(80,0,80)"><br> $json(reply) := $rtpquery;<br> $var(port)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local port);<br></span> $var(addr)=$json_pretty(reply/tags/$ft/medias[0]/streams[0]/local address);<br> append_to_reply("Contact:<sip:$rU@$socket_in(ip):$socket_in(port);transport=udp>\r\n");<span style="color:rgb(80,0,80)"><br> append_to_reply("Content-Type: application/sdp\r\n");<br></span> $var(body) = $(var(body){re.subst,/(IP4.).*/\1$var(addr)/g});<span style="color:rgb(80,0,80)"><br> $var(body) = $(var(body){re.subst,/(audio.)...../\1$var(port)/g});<br></span> xlog("######################### Body being sent in Reply is ######################\r\n$var(body)\r\n");<br> t_reply_with_body(200, "OK", $var(body));<span style="color:rgb(80,0,80)"><br> rtpengine_play_media("call-id=$ci from-tag=$ft file=/etc/rtpengine/unk_num.wav");<br> async(sleep(10), after_media);<br> }<br>}<br><br>route[after_media]<br> { if (t_was_cancelled()) {<br> rtpengine_delete();<br> exit;<br> } else {<br> rtpengine_delete();<br> sl_send_reply(486,"Busy here");<br> exit;<br> }<br>}</span></div></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div>
</blockquote></div></div>
</blockquote></div>
</blockquote></div>