[SR-Users] newbie INVITE routing logic help

Skyler skchopperguy at gmail.com
Tue May 24 03:06:16 CEST 2011


Hi all,

 

 Need some newbie advice on how to write INVITE routing for my scenario. I
currently have kamailio+asterisk-realtime integration working in the
following way:

 

 Outbound calls:

 USER-A -> Kamailio(3.1.3) -> Asterisk(1.6.2.18) ;if dest local then

 Asterisk(1.6.2.18) -> Kamailio(3.1.3) -> USER-B ;if dest not local then

 Asterisk(1.6.2.18) -> SIP/PSTN

 

 This works, though I'd prefer to use Kamailio + LCR and gateway failover as
Asterisk doesn't do this well. 

 

 Here's what I want to do: (for now, small steps)

 

 Outbound Calls:

 USER-A -> Kamailio(3.1.3) -> Asterisk(1.6.2.18) ;if dest local then

 Asterisk(1.6.2.18) -> Kamailio(3.1.3) -> USER-B ;if dest not local then

 Asterisk(1.6.2.18) -> Kamailio(3.1.3)+(lcr) -> SIP/PSTN

 

 I know I have to set kamailio as a GW in asterisk instead of the PSTN GW's
and add the PSTN GW's to kamailio instead, though I'm at a loss as to how to
write the routing logic so that kamailio sends calls from asterisk to PSTN.

 

route[LOCATION] {

...non-INVITE check ends here...

if(route(FROMASTERISK))

{

                # coming from Asterisk --- Does this mean check kamailio
local users first before continuing?

                if (!lookup("location")) {

                                switch ($rc) {

                                                case -1:

                                                case -3:

                                                                t_newtran();

 
t_reply("404", "Not Found");

                                                                exit;

                                                case -2:

 
sl_send_reply("405", "Method Not Allowed");

                                                                exit;

                                }

                }

                ## -- If match 11 digits and starts with '1' or if match 10
digits and starts with [2-9]

                if($rU=~"^(1\d{10})$") || if($rU=~"^([2-9]\d{9})$") {  

                                xlog("L_INFO", " FROMASTERISK: This will
become route(NORTHAMERICA); \n");

                                exit; ## to be removed

                } else {

                                xlog("L_INFO", " FROMASTERISK: This will
become route(INTERNATIONAL); \n");

                                exit; ## to be removed

                }

 

                # new call - send to Asterisk

                route(TOASTERISK);

}

 

 

 Will this logic work? I haven't determined how to write route(NORTHAMERICA)
or route(INTERNATIONAL) yet so I'm just logging to debug the logic and
syntax.

 

 

 Thanks in advance.

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20110523/29bb3f57/attachment.htm>


More information about the sr-users mailing list