<div dir="ltr">Hello all. I use rtpengine and rtpproxy-ng module at kamailio for proxying RTP and modifying SDP between endpoints. I use two types of clients - such as WSS based and UDP based clients.<div><br></div><div>I have a trouble with append_branch and rtpengine handling for this packets. <br><br>I try to implement this logic of my script<br><br><span style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">Logic of my script: </span><br style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><span style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">--checking location table for rows with needed account</span><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">--get info from contact at loop</div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">for every step</div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">--check technology (sip or ws)<br>--append_branch with existing destination for this account<br>--rewrite packet with rtpengine to needed technology<br><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">after loop forward packets via t_relay</div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">At listing bellow rtpproxy_manage have no flag "b" that implement needed functionality. It not included at the script because I tried include it but rtpengine says that ca nnot handle this request. As i understand this flag worked with rtpproxy and rtpproxy-ng apps only. Not with rtpengine.<br><br><br><span style="line-height:18.2000007629395px">At my test I have 2 endpoints with WS and UDP phones (at fist step ir WS and 2 step it UDP). </span><span style="line-height:18.2000007629395px">All calls going form asterisk via UDP. W</span><span style="line-height:18.2000007629395px">hen I do these steps (at my script) I see packet at TCP dump and saw that sended only one packet to UDP but body of packet is WS. Then I saw log of kamailio. I see that at second step packet changed body to WS body (so strange because other steps before and after goes for UDP (as at logic of script))</span></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br>If I set "b" flag I can call only UDP endpoint, but at log I see as I say that rtpengine can not do thomething with SIP packets and send  with t_relay uncghanged UDP packet only.</div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br><div>sql_query("ca", "select contact from location where username='$tU'", "ra");</div><div><span style="white-space:pre">                    </span>xlog("rows: $dbr(ra=>rows) cols: $dbr(ra=>cols)\n");</div><div><span style="white-space:pre">                  </span></div><div><span style="white-space:pre">                      </span>if($dbr(ra=>rows)>0){</div><div><span style="white-space:pre">                           </span>$var(i)=0;</div><div><span style="white-space:pre">                            </span> while($var(i)<$dbr(ra=>rows)){</div><div><span style="white-space:pre">                        </span></div><div><span style="white-space:pre">                                      </span>xlog("L_INFO","SQL query return contact {$dbr(ra=>[$var(i),0])} for {$tU} at step {$var(i)}\n");</div><div><span style="white-space:pre">                                       </span></div><div><span style="white-space:pre">                                      </span>if ($dbr(ra=>[$var(i),0])=~"transport=ws"){<span style="white-space:pre">     </span></div><div><span style="white-space:pre">                                              </span>xlog("L_INFO", "This is a Websocket call to endpoint");</div><div><span style="white-space:pre">                                           </span>sql_pvquery("ca", "select received from location where contact='$dbr(ra=>[$var(i),0])'","$var(recieved)");</div><div><span style="white-space:pre">                                           </span>xlog("L_INFO","SQL query return recieved {$var(recieved)} for {$tU}\n");</div><div><span style="white-space:pre">                                          </span>$du=$var(recieved);</div><div><span style="white-space:pre">                                           </span>xlog("L_INFO", "Request going FROM ASTERISK to WS. Destination is {$du}\n");</div><div><span style="white-space:pre">                                              </span>xlog("L_INFO","Websocket Destination URI is {$var(recieved)} for {$tU}\n");</div><div><span style="white-space:pre">                                               </span>rtpproxy_manage("froc+SP");</div><div><span style="white-space:pre">                                         </span>t_on_reply("REPLY_FROM_WS");</div><div><span style="white-space:pre">                                                </span>append_branch("sip:$tU@$du");</div><div><span style="white-space:pre">                                               </span>$var(i) = $var(i) + 1;</div><div><span style="white-space:pre">                                        </span>}</div><div><span style="white-space:pre">     </span></div><div><span style="white-space:pre">                                      </span>else</div><div><span style="white-space:pre">                                  </span>{<span style="white-space:pre">    </span></div><div><span style="white-space:pre">                                              </span>xlog("L_INFO", "This is a classic UDP call to endpoint");</div><div><span style="white-space:pre">                                         </span></div><div><span style="white-space:pre">                                              </span>$du="sip:"+$(dbr(ra=>[$var(i),0]){s.select,1,@});</div><div><span style="white-space:pre">                                                </span>xlog("L_INFO","Classic Destination URI is {$dbr(ra=>[$var(i),0])} for {$tU}\n");</div><div><span style="white-space:pre">                                               </span>rtpproxy_manage("co");</div><div><span style="white-space:pre">                                              </span>t_on_reply("MANAGE_CLASSIC_REPLY");</div><div><span style="white-space:pre">                                         </span>append_branch("sip:$tU@$du");</div><div><span style="white-space:pre">                                               </span>$var(i) = $var(i) + 1;</div><div><span style="white-space:pre">                                        </span>}</div><div><span style="white-space:pre">                                     </span>#append_branch("sip:$tU@$du");</div><div><span style="white-space:pre">                                      </span></div><div><span style="white-space:pre">                              </span>}<span style="white-space:pre">    </span></div><div><span style="white-space:pre">                      </span>}</div><div><span style="white-space:pre">                     </span>return 1;</div></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px"><br></div><div style="color:rgb(0,0,0);font-family:Arial,Tahoma,Verdana,sans-serif;font-size:13px;line-height:18.2000007629395px">So it customised schema of standart example <br><br><br><div>  seturi("<a href="https://e.mail.ru/compose/?mailto=mailto%3asip%253Aa@example.com" target="_blank" style="color:rgb(0,119,204)">sip:a@example.com</a>");</div><div>  append_branch("<a href="https://e.mail.ru/compose/?mailto=mailto%3asip%253Ab@example.com" target="_blank" style="color:rgb(0,119,204)">sip:b@example.com</a>");</div><div>  append_branch("<a href="https://e.mail.ru/compose/?mailto=mailto%3asip%253Ac@example.com" target="_blank" style="color:rgb(0,119,204)">sip:c@example.com</a>");</div><div>  append_branch("<a href="https://e.mail.ru/compose/?mailto=mailto%3asip%253Ad@example.com" target="_blank" style="color:rgb(0,119,204)">sip:d@example.com</a>");</div><div><br></div><div>  t_relay();<br><br>I need fro advice how to fix this may be with another applications or with another steps. Thanks.</div></div></div></div>