<div dir="ltr">Hi Tickles,<div><br></div><div>a) Have you tried doing this on Asterisk realtime ? for any regular direct registering extension w/o kamailio(even before kamailio) ? If an extension registers to one asterisk the rest of the boxes would know where to contact this extension via realtime-db ? I'd say give that a try and it may solve your problem, else using this REGFWD block you can parallel fork this register request to ALL of your boxes and everybox would think it is registered locally ! (not a recommended option I must say)</div><div><br>b) If you ignore my previous comment of parallel forking registers, using this  REGFWD block you can use dispatcher module to replace the $var(rip) and <span style="font-size:12.8px">$sel(cfg_get.asterisk.</span><span style="font-size:12.8px">bindport) by changing your REGFWD block like this:<br><br></span><div style="font-size:12.8px"><font face="monospace, monospace">route[REGFWD] {</font></div><div style="font-size:12.8px"><font face="monospace, monospace">        if(!is_method("REGISTER"))</font></div><div style="font-size:12.8px"><font face="monospace, monospace">        {</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                return;</font></div><div style="font-size:12.8px"><font face="monospace, monospace">        }</font></div><div style="font-size:12.8px"><font face="monospace, monospace">       <span style="background-color:rgb(255,229,153)"> if(!ds_select_dst("1", "4"))    { </span></font></div><div style="font-size:12.8px"><font face="monospace, monospace">               <span style="background-color:rgb(255,229,153)">$var(rip) = $(du{s.select,1,:});</span><br>               <span style="background-color:rgb(255,229,153)">$var(rport) = </span><span style="font-size:12.8px"><span style="background-color:rgb(255,229,153)">$(du{s.select,2,:});</span><br></span></font></div><div style="font-size:12.8px"><font face="monospace, monospace">               $uac_req(method)="REGISTER";</font></div><div style="font-size:12.8px"><font face="monospace, monospace">               $uac_req(ruri)="sip:" + $var(rip) + ":" + $var(rport) + ";transport=tcp";</font></div><div style="font-size:12.8px"><font face="monospace, monospace">               $uac_req(furi)="sip:" + $au + "@" + $var(rip);</font></div><div style="font-size:12.8px"><font face="monospace, monospace">               $uac_req(turi)="sip:" + $au + "@" + $var(rip);</font></div><div style="font-size:12.8px"><font face="monospace, monospace">               $uac_req(hdrs)="Contact: <sip:" + $au + "@"</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                                + $sel(cfg_get.kamailio.bindip)</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                                + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n";</font></div><div style="font-size:12.8px"><font face="monospace, monospace">               if($sel(contact.expires) != $null)</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                            $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + $sel(contact.expires) + "\r\n";</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                else</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                            $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + $hdr(Expires) + "\r\n";</font></div><div style="font-size:12.8px"><font face="monospace, monospace">                uac_req_send();</font></div><div style="font-size:12.8px"><font face="monospace, monospace">        <span style="background-color:rgb(255,229,153)">}</span></font></div></div><div style="font-size:12.8px"><font face="monospace, monospace"><br></font></div><div style="font-size:12.8px"><font face="monospace, monospace">}</font></div><div><br></div><div><br>In summary, depending upon your business logic/use case there could be other ways to make this work as well.<br><br></div><div>Regards,</div><div>Sammy</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 22, 2016 at 8:53 AM, Tickling Contest <span dir="ltr"><<a href="mailto:tickling.contest@gmail.com" target="_blank">tickling.contest@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>When using Kamailio with the dispatcher module for Asterisk load balancing, I am offloading REGISTERs to Kamailio (works fine), but would like to forward the REGISTERs to Asterisk so that outgoing calls from Asterisk will be possible. I know this is not strictly necessary (e.g., just use Kamailio to forward everything), but I have a lot of application logic behind my Asterisk boxes (using ARI) and so I don't want that to break. Thereby, I do need this information in Asterisk as soon as possible from Kamailio.</div><div><br></div><div>Let's say I have three boxes Asterisk_1, Asterisk_2 and Asterisk_3 in the dispatcher module like so:</div><div><div><br></div><div>1 sip:192.168.1.201:5060;transport=tcp</div></div><div><div>1 sip:192.168.1.202:5060;transport=tcp</div></div><div><div>1 sip:192.168.1.203:5060;transport=tcp</div></div><div><br></div><div>My system has endpoints as numerical extensions, from 101 to 110. When a new endpoint registers with kamailio (and authenticates), I would like to send the REGISTER to Asterisk. But I have the following questions:</div><div><br></div><div>(a) Which Asterisk? I could send it to a round-robinned Asterisk (say, Asterisk_2), but that Asterisk may not be the one responsible for handling calls outbound for the endpoint that just registered. Even if I use "hash over auth username" instead of round-robin (In <a href="http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html#idp16940048" target="_blank">http://www.kamailio.org/docs/modules/4.0.x/modules/dispatcher.html#idp16940048</a>, choose 5 for "alg", for example) that wont solve this problem as an outbound request may come from another Asterisk box which won't have the requisite registration information. Should I forward REGISTERs to all Asterisk boxes? Maybe I won't have to deal with this issue as I use realtime and so the REGISTER information, sent to one Asterisk box, is available to all Asterisk boxes after the write to the realtime DB. Is my understanding correct?</div><div><br></div><div>(b) How do I do this in kamailio.cfg? With some examples on the Internet for WITH_ASTERISK directive, I see that you do </div><div><br></div><div><div>route[REGFWD] {</div><div>        if(!is_method("REGISTER"))</div><div>        {</div><div>                return;</div><div>        }</div><div>        $var(rip) = $sel(cfg_get.asterisk.bindip);</div><div>        $uac_req(method)="REGISTER";</div><div>        $uac_req(ruri)="sip:" + $var(rip) + ":" + $sel(cfg_get.asterisk.bindport) + ";transport=tcp";</div><div>        $uac_req(furi)="sip:" + $au + "@" + $var(rip);</div><div>        $uac_req(turi)="sip:" + $au + "@" + $var(rip);</div><div>        $uac_req(hdrs)="Contact: <sip:" + $au + "@"</div><div>                                + $sel(cfg_get.kamailio.bindip)</div><div>                                + ":" + $sel(cfg_get.kamailio.bindport) + ">\r\n";</div><div>        if($sel(contact.expires) != $null)</div><div>                $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + $sel(contact.expires) + "\r\n";</div><div>        else</div><div>                $uac_req(hdrs)= $uac_req(hdrs) + "Expires: " + $hdr(Expires) + "\r\n";</div><div>        uac_req_send();</div><div>}</div></div><div><br></div><div>What is the equivalent for when you are using the dispatcher module and the kamailio.bindip and asterisk.bindip etc. are not set in the configuration, but instead should be procured from elsewhere?</div><div><br></div><div>Any help is appreciated.</div><div><br></div><div><br></div></div>
<br>_______________________________________________<br>
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list<br>
<a href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users" rel="noreferrer" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a><br>
<br></blockquote></div><br></div>